Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation.

Logo

Emacs Builds

GitHub tag (latest SemVer) GitHub issues GitHub pull requests

Nightly binary builds of Emacs for macOS as a self-contained Emacs.app, with native-compilation.

Features

  • Self-contained Emacs.app application bundle, with no external dependencies, built with the jimeh/build-emacs-for-macos build script.
  • Native-compilation is enabled in nightly builds from the master branch of Emacs, and should just work without the need to install GCC, libgccjit, or any other dependencies.
  • Includes the fix-window-role and system-appearance patches from the excellent emacs-plus project.
  • Emacs source is fetched from the emacs-mirror/emacs GitHub repository.
  • Build creation is transparent and public through the use of GitHub Actions, allowing anyone to inspect git commit SHAs, full source code, and exact commands used to produce a build. This is especially important right now as builds are not yet signed and notarized.

System Requirements

  • Intel-based Mac running macOS 10.15.x or later.

Downloads

See the Releases page to download latest builds.

Nightly builds of Emacs are for the part just fine, but if you don't like living too close to the edge, see issue #7 Known Good Nightly Builds for a list of recent nightly builds which have been actively used by a living being without any issues.

Build Process

Building Emacs is done using the jimeh/build-emacs-for-macos build script, executed within a GitHub Actions workflow. This is why macOS 10.15.x or later is required, as it's the oldest version of macOS available in GitHub Actions.

Full history for all builds is available on GitHub Actions here.

Nightly builds are scheduled for 0:00 UTC every night, based on the latest commit from the master branch of the emacs-mirror/emacs repository. This means a nightly build will only be produced if there have been new commits since the last nightly build.

Untrusted Application

Currently builds are not signed or notarized, meaning macOS cannot verify Emacs.app came from a trusted developer, and by default you are not given an option to trust the app and open it.

Simplest way around this is to right-click (or control-click) on the Emacs app in Finder and select "Open". You will then be given the same warning as before, but with a "Open" button now available to trust and open the app. After that you can open the application like normal without any warnings.

Issues / To-Do

Please see Issues for details of things to come, or to report issues.

Owner
Jim Myhrberg
I'm a software engineering mercenary, who plays with code, video games, and on occasion, design.
Jim Myhrberg
Comments
  • Emacs builds expecting GCC to be installed

    Emacs builds expecting GCC to be installed

    Since Emacs.2021-06-23.7be75f1.master I get the same message: "Library not loaded: /usr/local/lib/gcc/11/libgcc_s.1.dylib".

    This is required by subr--trampoline on this build and subsequent ones.

  • Cannot find /usr/local/lib/gcc/11/libgcc_s.1.dylib

    Cannot find /usr/local/lib/gcc/11/libgcc_s.1.dylib

    This issue occurred since the *.dmg version.

    Start Emacs.app, error messages are:

    Native elisp load failed: "/Users/allendang/.emacs.d/.local/cache/eln/28.0.50-b01b8d59/subr--trampoline-6d657373616765_message_0.eln", "dlopen(/Users/allendang/.emacs.d/.local/cache/eln/28.0.50-b01b8d59/subr--trampoline-6d657373616765_message_0.eln, 1): Library not loaded: /usr/local/lib/gcc/11/libgcc_s.1.dylib
      Referenced from: /Users/allendang/.emacs.d/.local/cache/eln/28.0.50-b01b8d59/subr--trampoline-6d657373616765_message_0.eln
      Reason: image not found"
    

    I found libgcc_s.1.dylib at /Applications/Emacs.app/Contents/MacOS/lib/libgcc_s.1.dylib, seems the reference is wrong.

  • Error message when starting:

    Error message when starting: "1"

    I am absolutely willing to finally give native compilation a run. For this very reason, I fetched the latest "known working build" (2021-07-12 by the time of me writing this) and installed it on my Big Sur (Intel) MacBook. I renamed my init.el first so nothing could interfere with it yet. (I used other builds until today, but they don't have native compilation yet.)

    Anyway, I can't start Emacs.app.

    Bildschirmfoto 2021-07-15 um 13 33 48

    Why?

  • Emacs nightly 28 produces unaligned menus

    Emacs nightly 28 produces unaligned menus

    Hi! I installed this build from your repo

    brew info emacs-app-nightly-28
    emacs-app-nightly-28: 2021-12-06.da23e60.emacs-28
    

    When I run

    emacsclient -c -n -a ''
    

    and pressing SPC in doom, I get unaligned menus

    image

    image

    Thanks.

  • DBus support

    DBus support

    Is there any reason for not adding DBus support (--with-dbus flag)? It could be a useful addition with no real downsides. I don't know if there are any other feature flags that are left out but I think it would be wise to include them all (unless they have some really apparent downsides) in a pre-built version so that everyone can enjoy.

    Also thanks a lot, this project saved me quite a lot of time! DBus support would be a cherry on top.

  • Enable relative path for Emacs.app

    Enable relative path for Emacs.app

    I use Doom and seem to be running into an issue when running doom sync which I believe generates the autoload files that emacs needs to start. Seems that there are some hardcoded items from the build machine:

    doom doctorWarning: arch-dependent data dir '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-5784b42/nextstep/Emacs.app/Contents/MacOS/libexec/': No such file or directoryWarning: arch-independent data dir '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-5784b42/nextstep/Emacs.app/Contents/Resources/etc/': No such file or directoryWarning: Lisp directory '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-5784b42/nextstep/Emacs.app/Contents/Resources/lisp': No such file or directoryError: /Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-5784b42/nextstep/Emacs.app/Contents/Resources/etc/charsets: No such file or directoryEmacs will not function correctly without the character map files.Please check your installation!\

    Could these be turned into relative paths to enable items requiring these locations to run as expected please?

  • org-capture placeholders broken in current (28.0.50) known good build

    org-capture placeholders broken in current (28.0.50) known good build

    This resolved issue seems to be included in the as-of-today know good build: Emacs.2021-10-24.608e694.master.

    The issue prevents certain capture templates from working. For example those that prompt for a tag.

  • mu4e is missing in the builded app

    mu4e is missing in the builded app

    I installed your latest nightly from the emacs-28 and I got this error at startup

    Warning (initialization): An error occurred while loading โ€˜/Users/maikol/.emacs.d/init.elโ€™:
    
    Error in private config: config.el, (file-missing Cannot open load file No such file or directory mu4e)
    
    

    The temporary solution is to add this to the config

    (add-to-list 'load-path "/usr/local/share/emacs/site-lisp/mu/mu4e")
    

    I think that loading mu4e should be loading directly by the app instead of the user.

    Best.

  • Add build for Emacs 28 branch

    Add build for Emacs 28 branch

    Thanks for this nice project! The emacs-28 branch was just created and the master branch has version 29.0.50. It would be nice to have separate build for Emacs 28 branch.

  • Can't find emacs in your PATH

    Can't find emacs in your PATH

    Build 6-26 and 6-27 failed to start.

    Run doom sync reports can't find emacs in your path.

    Run emacs from terminal reports

    Error using execdir /Applications/Emacs.app/Contents/MacOS/:
    emacs: dlopen(/Applications/Emacs.app/Contents/MacOS/../native-lisp/28.0.50-b01b8d59/preloaded/window-0d1b8b93-63c191c3.eln, 1): image not found
    
  • Incorrect path to own Emacs.app in the built output!?

    Incorrect path to own Emacs.app in the built output!?

    I've just installed the builds you've published here, tried the latest (2021-05-17) and last known good according to #7 - 2021-05-10 but both fail for me in a similar way when run from a terminal:

    kll@mbp13:~$ emacs
    Warning: arch-dependent data dir '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/Emacs.app/Contents/MacOS/libexec/': No such file or directory
    Warning: arch-independent data dir '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/Emacs.app/Contents/Resources/etc/': No such file or directory
    Warning: Lisp directory '/Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/Emacs.app/Contents/Resources/lisp': No such file or directory
    Error: /Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/Emacs.app/Contents/Resources/etc/charsets: No such file or directory
    Emacs will not function correctly without the character map files.
    Please check your installation!
    

    IIRC /Users/runner is used by GitHub Actions, so is it possible that some path used during the build seeps over into the final build. I naturally do not have this directory. If I create it, like so:

    mkdir -p /Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/
    sudo ln -s /Applications/Emacs.app /Users/runner/work/emacs-builds/emacs-builds/sources/emacs-mirror-emacs-28bed06/nextstep/
    

    then emacs works just fine!

    Is this something wrong on my machine? I only have a single Mac so difficult to test...

  • Automate stable and pretest builds

    Automate stable and pretest builds

    Right now I need to manually trigger the build GitHub Actions workflow with the relevant git tag ref to create a stable or pretest build.

    This should be automated by checking the list of git tags in the emacs-mirror/emacs repository nightly, and automatically triggering builds for any new stable or pretest builds.

    For each matching tag found, I think it would be reasonable to simply check if the expected GitHub release exists for it, and if not, trigger the workflow.

    A minimum version for stable and pretest builds should also set, as I don't believe there's any point in building anything before Emacs 27.1.

  • Known Good Nightly Builds

    Known Good Nightly Builds

    Nightly builds from the master branch of Emacs aren't always stable.

    Hence I maintain this list of nightly builds which I have personally used for at least 1-2 days with my personal config without noticing any issues.

    I offer no guarantee of how frequently this list will be updated, but I can say that I typically update to the latest nightly build somewhere between daily to once every 1-2 weeks.

    Homebrew Cask

    To install the latest known good nightly build via Homebrew, install the emacs-app-good cask from the jimeh/emacs-builds tap:

    brew tap jimeh/emacs-builds
    brew install --cask emacs-app-good
    

    The emacs-app-good cask is automatically updated once a day against the below list.

    Known Good Nightly Builds

  • Provide builds for various Linux distros

    Provide builds for various Linux distros

    This is a decent bit off, as it first requires a build script for Linux.

    The build-emacs-for-macos script used at the moment is macOS specific for obvious reasons. But I am planning a rewrite of it in Go, which allow me more flexibility, potentially opening the door for Linux support without too much effort. Time will tell.

  • Apple Silicon Native Builds

    Apple Silicon Native Builds

    Update (2021-11-30): Apple Silicon builds now purely depends on GitHub Actions having Apple Silicon based GitHub-hosted runners:

    https://github.com/actions/virtual-environments/issues/2187


    Main blocker for this right now is the lack of Apple Silicon support in GitHub Actions, as from what I understand it's not possible to build Emacs for Apple Silicon on an Intel machine. There is always the option of buying a Apple Silicon machine, but that'd go against my goal of keeping everything public and transparent, as I would be producing builds from custom self-hosted hardware, instead of GitHub hosted runners.

    ~~The secondary semi-blocker is that GCC and libgccjit are as of writing not yet available for Apple Silicon, meaning even if I had a Apple Silicon environment to produce builds from, native-comp would not be available.~~

  • Improve GitHub Releases (description, extra assets)

    Improve GitHub Releases (description, extra assets)

    Some of the things I'd like to add to each release:

    • [ ] Summary of what was built, potentially the plan.yml file contains everything needed.
    • [ ] Arguments passed to both ./configure and make. This will require changes in the build script.
    • [ ] Capture ./configure output and upload it as a release asset.
    • [ ] Add a code block to description with SHA256 sums for all attached assets. Potentially generated by simply combining the content of each *.sha256 asset.
    • [ ] Upload the Emacs source tarball downloaded by the build script as a asset on each release.

    For now these should all be relatively easy to deal with as each release will only have a single build for macOS 10.15 on x86_64. Once we get another OS or architecture the process will need to be able to deal with two concurrent builds attaching different assets and updating relevant parts of the description.

a cli client-server app with cobra
a cli client-server app with cobra

cli-client-server a cli client-server app with cobra overview this project is a cli client-server app in which client gives a bunch of numbers with an

Dec 7, 2021
go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs.

About go-macos-pkg was built out of a desire to generate and sign macOS pkgs on non-macOS OSs. Caveats Right now most of the heavy lifting is done by

Aug 18, 2022
Simple HTTP/HTTPS proxy - designed to be distributed as a self-contained binary that can be dropped in anywhere and run.

Simple Proxy This is a simple HTTP/HTTPS proxy - designed to be distributed as a self-contained binary that can be dropped in anywhere and run. Code b

Jan 7, 2023
A simple single-file executable to pull a git-ssh repository and serve the web app found to a self-contained browser window

go-git-serve A simple single-file executable to pull a git-ssh repository (using go-git library) and serve the web app found to a self-contained brows

Jan 19, 2022
:file_folder: Embeds static resources into go files for single binary compilation + works with http.FileSystem + symlinks

Package statics Package statics embeds static files into your go applications. It provides helper methods and objects to retrieve embeded files and se

Sep 27, 2022
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

Nov 22, 2021
Build Go Toolchains /w native libs for cross-compilation

gonative Cross compiled Go binaries are not suitable for production applications because code in the standard library relies on Cgo for DNS resolution

Dec 20, 2022
Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.
Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain.

pinentry-touchid Custom GPG pinentry program for macOS that allows using Touch ID for fetching the password from the macOS keychain. Macbook Pro devic

Jan 1, 2023
Self-contained Japanese Morphological Analyzer written in pure Go
Self-contained Japanese Morphological Analyzer written in pure Go

Kagome v2 Kagome is an open source Japanese morphological analyzer written in pure golang. The dictionary/statistical models such as MeCab-IPADIC, Uni

Dec 24, 2022
Self-contained Machine Learning and Natural Language Processing library in Go

If you like the project, please โ˜… star this repository to show your support! ?? A Machine Learning library written in pure Go designed to support rele

Dec 30, 2022
:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support
:tophat: Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support

Web server with built-in support for QUIC, HTTP/2, Lua, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, BoltDB (built-in, stores the databas

Jan 1, 2023
A tool for generating self-contained, type-safe test doubles in go

counterfeiter When writing unit-tests for an object, it is often useful to have fake implementations of the object's collaborators. In go, such fake i

Jan 5, 2023
A fully self-contained Nmap like parallel port scanning module in pure Golang that supports SYN-ACK (Silent Scans)

gomap What is gomap? Gomap is a fully self-contained nmap like module for Golang. Unlike other projects which provide nmap C bindings or rely on other

Dec 10, 2022
Product Analytics, Business Intelligence, and Product Management in a fully self-contained box
Product Analytics, Business Intelligence, and Product Management in a fully self-contained box

Engauge Concept It's not pretty but it's functional. Track user interactions in your apps and products in real-time and see the corresponding stats in

Nov 17, 2021
A tiny self-contained pasting service with a built-in database.

A tiny self-contained pasting service with a built-in database.

Dec 18, 2021
Self-contained Machine Learning and Natural Language Processing library in Go
Self-contained Machine Learning and Natural Language Processing library in Go

Self-contained Machine Learning and Natural Language Processing library in Go

Jan 8, 2023
High performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.
High performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a Postg

Dec 30, 2022
listmonk is a standalone high performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.
listmonk is a standalone high performance, self-hosted newsletter and mailing list manager with a modern dashboard. Single binary app.

listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL database as its data store.

Jan 1, 2023
Gos: Armed Golang ๐Ÿ’ช ( solutions for go module, goproxy, cross compilation, etc.)
Gos: Armed Golang ๐Ÿ’ช ( solutions for go module, goproxy, cross compilation, etc.)

The current gos is still an alpha version, welcome more heroes to comment and improve it ?? , you can add more commands to it, or modify something to make it perform better.

Sep 15, 2022
hotbuild - a cross platform hot compilation tool for golang
hotbuild - a cross platform hot compilation tool for golang

hotbuild A cross platform hot compilation tool By monitoring the modification of the project directory file, the recompilation and running are automat

Dec 12, 2022