Changelog files from the `src` directory are however excluded. They're
6.7MB, span 1985 to 2015, and are not very relevant for inclusion within
the Emacs.app bundle.
Resolves https://github.com/jimeh/emacs-builds/issues/40
This serves as an alternative to Homebrew. It should be much more stable
and cause less headaches over time for automated builds.
There should be no change to the end user experience of using the build
script, as it should still work with and use Homebrew by default.
Additionally, Nix provides older Apple SDKs, allowing us to run against
macOS 11.x SDKs. This allows the resulting Emacs.app builds to be
compatible with macOS 11.x and later versions.
In testing, this seems to be the case on macOS 11.x (x86_64) and macOS
12.x (arm64).
Increases max open file limit to 10000 the same way as emacs-plus does.
This is necessary for some packages like lsp-mode to work properly in
some cases.
The limit is configurable via the `--fd-setsize` option. The default is
`10000`. To disable this feature, use the `--no-fd-setsize` option, or
provide `--fd-setsize` with a value that is less than `1024`.
Fixes#106
Some much needed tidying of the patches method, along with
double-checking that all patches only apply to relevant emacs versions
correctly.
Along those lines, the optional poll patch is now deprecated, as the
upstream patch file has been removed from emacs-plus due to reports of
it never working correctly.
It can easily lead to issues where certain packages are not compatible
due to an older version already being installed. Hence we instead prefer
to just update all deps to the latest version
This should resolve issues on Apple Silicon machines where macOS refuses
to run applications without any signatures. On Intel machines it seems
to make not difference.
If you want to skip the self-signing step, use the `--no-self-sign`
flag.
This is a near complete rewrite of the shared library embedder/bundler
code. It now correctly resolves shared libraries that link to other
shared library files in the same package via use of `@path`, which the
libwebp package does extensively between `libwebpdemux.2.dylib`,
`libwebp.7.dylib` and `libsharpyuv.0.dylib`.
These relative shared library links were not understood at all by the
old library bundler code.
The new replacement here fully understands and resolves all
`@<something>` placeholders in links to shared libraries. It operates in
a two-step process where it first walks down the three of all shared
libraries that Emacs links to, and all that they link to, etc. building
a copy and relink plan.
In a second step it then executes the copy plan, followed by the
relinking plan.
The result is a fully self-contained Emacs.app binary, which has no
dependencies on Homebrew or anything installed via Homebrew. Builds have
been tested on a fresh install of macOS Sonoma VM, with nothing but
Xcode Command Line Tools installed. Everything from native compilation
to webp, svg, png rendering, and more worked as expected.
Changes:
- Adds optional --log-level flag and lots of debug output when level is
set to "debug"
- Adds optional --github-src-repo flag to specify a custom GitHub
repository to download source tarball from.
- Resolve all current Rubocop complaints.