mirror of
https://github.com/jimeh/build-emacs-for-macos.git
synced 2026-02-19 13:06:38 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
4a7c507858
|
|||
|
884f1607f6
|
|||
|
c7daa1350b
|
|||
|
9223ff8e28
|
|||
|
70bf6b05d5
|
|||
|
8936f4762a
|
15
CHANGELOG.md
15
CHANGELOG.md
@@ -2,6 +2,21 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||
|
||||
### [0.4.2](https://github.com/jimeh/build-emacs-for-macos/compare/0.4.1...0.4.2) (2020-12-09)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **cli:** avoid error if --git-sha is used without a branch/tag/sha argument ([884f160](https://github.com/jimeh/build-emacs-for-macos/commit/884f1607f6707ca187b1abfb0ce562757d872230)), closes [#21](https://github.com/jimeh/build-emacs-for-macos/issues/21)
|
||||
* **native_comp:** update env setup patch for recent changes to comp.el ([c7daa13](https://github.com/jimeh/build-emacs-for-macos/commit/c7daa1350bd69df172ce6484c54189d2cee8d97e))
|
||||
|
||||
### [0.4.1](https://github.com/jimeh/build-emacs-for-macos/compare/0.4.0...0.4.1) (2020-10-29)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **native_comp:** remove patch based on feature/native-comp-macos-fixes branch ([70bf6b0](https://github.com/jimeh/build-emacs-for-macos/commit/70bf6b05d584976632b2fd2947c0bf692f5b6421))
|
||||
|
||||
## [0.4.0](https://github.com/jimeh/build-emacs-for-macos/compare/0.3.0...0.4.0) (2020-10-04)
|
||||
|
||||
|
||||
|
||||
24
README.md
24
README.md
@@ -112,6 +112,30 @@ All sources as downloaded as tarballs from the
|
||||
to get a list of tags/branches available to install, simply check said
|
||||
repository.
|
||||
|
||||
## Use Self-Contained Emacs.app as `emacs` CLI Tool
|
||||
|
||||
As the application bundle is self-contained, the main executable needs to be run
|
||||
from within the application bundle. This means a simple symlink to
|
||||
`Emacs.app/Contents/MacOS/Emacs` will not work. Instead the best approach is to
|
||||
create a shell alias called `emacs` pointing to the right place.
|
||||
|
||||
Personally I use something similar to this:
|
||||
|
||||
```bash
|
||||
if [ -f "/Applications/Emacs.app/Contents/MacOS/Emacs" ]; then
|
||||
export EMACS="/Applications/Emacs.app/Contents/MacOS/Emacs"
|
||||
alias emacs="$EMACS -nw"
|
||||
fi
|
||||
|
||||
if [ -f "/Applications/Emacs.app/Contents/MacOS/bin/emacsclient" ]; then
|
||||
alias emacsclient="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient"
|
||||
fi
|
||||
```
|
||||
|
||||
Setting the `EMACS` variable to the binary path seems to be a good idea, as some
|
||||
tools seems to use it to figure out the path to Emacs' executable, including
|
||||
[doom-emacs](https://github.com/hlissner/doom-emacs)' `doom` CLI tool.
|
||||
|
||||
## Native-Comp
|
||||
|
||||
Building a Emacs.app with native-comp support
|
||||
|
||||
@@ -78,7 +78,7 @@ class Build
|
||||
attr_reader :ref
|
||||
attr_reader :options
|
||||
|
||||
def initialize(root_dir, ref = 'master', options = {})
|
||||
def initialize(root_dir, ref = nil, options = {})
|
||||
@root_dir = root_dir
|
||||
@ref = ref
|
||||
@options = options
|
||||
@@ -258,10 +258,6 @@ class Build
|
||||
verify_native_comp
|
||||
verify_libgccjit
|
||||
|
||||
if options[:macos_fixes] && ref != 'feature/native-comp-macos-fixes'
|
||||
apply_native_comp_macos_fixes
|
||||
end
|
||||
|
||||
apply_native_comp_env_setup_patch(source)
|
||||
|
||||
ENV['CFLAGS'] = [
|
||||
@@ -370,12 +366,12 @@ class Build
|
||||
FileUtils.mkdir_p(builds_dir)
|
||||
|
||||
metadata = [
|
||||
ref.gsub(/\W/, '-'),
|
||||
meta[:ref]&.gsub(/\W/, '-'),
|
||||
meta[:date],
|
||||
meta[:sha][0..6],
|
||||
"macOS-#{OS.version}",
|
||||
OS.arch
|
||||
]
|
||||
].compact
|
||||
|
||||
filename = "Emacs.app-[#{metadata.join('][')}].tbz"
|
||||
target = "#{builds_dir}/#{filename}"
|
||||
@@ -416,11 +412,13 @@ class Build
|
||||
err "Failed to get commit info about: #{ref_sha}" if commit_json.nil?
|
||||
|
||||
commit = JSON.parse(commit_json)
|
||||
|
||||
@meta = {
|
||||
meta = {
|
||||
sha: commit['sha'],
|
||||
date: Date.parse(commit['commit']['committer']['date'])
|
||||
}
|
||||
meta[:ref] = ref if ref && ref[0..6] != meta[:sha][0..6]
|
||||
|
||||
@meta = meta
|
||||
end
|
||||
|
||||
def http_get(url)
|
||||
@@ -446,37 +444,6 @@ class Build
|
||||
)
|
||||
end
|
||||
|
||||
def apply_native_comp_macos_fixes
|
||||
filename = 'Makefile.in'
|
||||
pattern = /^src: Makefile\n(.*BIN_DESTDIR.*)\nblessmail: Makefile src\n/m
|
||||
content = File.read(filename).gsub(pattern) do
|
||||
old_src_body = Regexp.last_match(1).strip
|
||||
|
||||
# check if already patched
|
||||
if old_src_body.include?('BIN_DESTDIR=\'${ns_appbindir}/\'')
|
||||
return old_src_body
|
||||
end
|
||||
|
||||
self_contained = old_src_body.gsub(
|
||||
'BIN_DESTDIR=\'$(DESTDIR)${bindir}/\'',
|
||||
'BIN_DESTDIR=\'${ns_appbindir}/\''
|
||||
)
|
||||
|
||||
<<~REPLACEMENT
|
||||
src: Makefile
|
||||
ifeq (${ns_self_contained},no)
|
||||
\t#{old_src_body}
|
||||
else
|
||||
\t#{self_contained}
|
||||
endif
|
||||
|
||||
blessmail: Makefile src
|
||||
REPLACEMENT
|
||||
end
|
||||
|
||||
File.open(filename, 'w') { |f| f.write(content) }
|
||||
end
|
||||
|
||||
def effective_version
|
||||
@effective_version ||= begin
|
||||
case ref
|
||||
|
||||
@@ -2,7 +2,7 @@ diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
|
||||
index 25e2de9..bcedd31 100644
|
||||
--- a/lisp/emacs-lisp/comp.el
|
||||
+++ b/lisp/emacs-lisp/comp.el
|
||||
@@ -2801,6 +2801,45 @@ queued with LOAD %"
|
||||
@@ -2801,6 +2801,53 @@ queued with LOAD %"
|
||||
(comp-run-async-workers)
|
||||
(message "Compilation started."))))
|
||||
|
||||
@@ -36,14 +36,22 @@ index 25e2de9..bcedd31 100644
|
||||
+ ;; Remove advice, as it only needs to run once.
|
||||
+ (advice-remove 'native-compile
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+ (advice-remove 'comp--native-compile
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+ (advice-remove 'native-compile-async
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+ (advice-remove 'native--compile-async
|
||||
+ 'native-compile-setup-environment-variables))
|
||||
+
|
||||
+;; Ensure environment setup runs before any native compilation.
|
||||
+(advice-add 'native-compile :before
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+(advice-add 'comp--native-compile :before
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+(advice-add 'native-compile-async :before
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+(advice-add 'native--compile-async :before
|
||||
+ 'native-compile-setup-environment-variables)
|
||||
+
|
||||
(provide 'comp)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user