|
| 1 | +#+html: <p align="center"> |
| 2 | +#+html: <img width="160px" src="https://raw.githubusercontent.com/emacs-ng/emacs-ng/master/images/logo.png" alt="Logo"> |
| 3 | +#+html: </p> |
| 4 | +#+html: <h1 align="center">Emacs NG Builds</h1> |
| 5 | +#+html: <p align="center"> |
| 6 | +#+html: <a href="https://github.com/emacs-ng/emacs-ng/actions/workflows/test.yml"><img alt="General" src="https://github.com/emacs-ng/emacs-ng/actions/workflows/test.yml/badge.svg"></a> |
| 7 | +#+html: <a href="https://github.com/emacs-ng/emacsng-darwin-builds/actions/workflows/emacsng.yml"><img alt="Emacs NG" src="https://github.com/emacs-ng/emacsng-darwin-builds/actions/workflows/emacsng.yml/badge.svg"></a> |
| 8 | +#+html: <a href="https://github.com/emacs-ng/emacsng-darwin-builds/actions/workflows/emacsng-webrender.yml"><img alt="Emacs NG" src="https://github.com/emacs-ng/emacsng-darwin-builds/actions/workflows/emacsng-webrender.yml/badge.svg"></a> |
| 9 | +#+html: </p"> |
| 10 | + |
| 11 | +** Features |
| 12 | + |
| 13 | +*** Webrender build |
| 14 | +- Webrender support (experimental). |
| 15 | +- SVG rendering not supported yet. |
| 16 | +- xwidget not surpport yet. |
| 17 | + |
| 18 | +*** Default build |
| 19 | +- Self-contained Emacs.app application bundle, with no external dependencies. |
| 20 | +- Javascript support (coming soon). |
| 21 | +- Native compilation ([[https://www.emacswiki.org/emacs/GccEmacs][gccemacs]]), only in Emacs 28.x and later builds. |
| 22 | +- Native JSON parsing via libjansson. |
| 23 | +- SVG rendering via librsvg. |
| 24 | +- Various image formats are supported via macOS native image APIs. |
| 25 | +- Xwidget-webkit support is enabled without Webrender, allowing access to a embedded WebKit-based browser with =M-x xwidget-webkit-browse-url=. |
| 26 | +- Native XML parsing via libxml2. |
| 27 | +- Dynamic module loading. |
| 28 | +- Includes the [[https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-28/fix-window-role.patch][fix-window-role]], [[https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-28/system-appearance.patch][system-appearance]], and [[https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-29/round-undecorated-frame.patch][round-undecorated-frame]] patches from the excellent [[https://github.com/d12frosted/homebrew-emacs-plus][emacs-plus]] project. |
| 29 | +- Emacs source is fetched from the [[https://github.com/emacs-mirror/emacs][emacs-mirror/emacs]] GitHub repository. |
| 30 | +- 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. |
| 31 | +- Emacs.app is signed with a developer certificate and notarized by Apple. |
| 32 | +- Uses [[https://github.com/emacs-ng/build-emacsng-for-macos][build-emacsng-for-macos]] to build the self-contained application bundle. |
| 33 | + |
| 34 | +** System Requirements |
| 35 | + |
| 36 | +- macOS 11.x (Big Sur) or later (uses Rosetta2 on Apple Silicon machines). |
| 37 | +- Xcode Command Line Tools for native compilation (Emacs 28.x and later). |
| 38 | + |
| 39 | +** Installation |
| 40 | +*** Manual Download |
| 41 | +See the [[https://github.com/emacs-ng/emacsng-darwin-builds/releases][Releases]] page to download latest builds, or [[https://github.com/emacs-ng/emacsng-darwin-builds/releases][here]] for the latest stable release. |
| 42 | + |
| 43 | +*** TODO Homebrew Cask |
| 44 | + |
| 45 | +** Use Emacs.app as =emacs= CLI Tool |
| 46 | +*** Installed via Homebrew Cask |
| 47 | +The cask installation method sets up CLI usage automatically by exposing a =emacs= command. However it will launch Emacs into GUI mode. To instead have =emacs= in your terminal open a terminal instance of Emacs, add the following alias to your shell setup: |
| 48 | + |
| 49 | +#+begin_src shell |
| 50 | + alias emacs="emacs -nw" |
| 51 | +#+end_src |
| 52 | + |
| 53 | +*** Installed Manually |
| 54 | +Builds come with a custom =emacs= shell script launcher for use from the command line, located next to =emacsclient= in =Emacs.app/Contents/MacOS/bin=. |
| 55 | + |
| 56 | +The custom =emacs= script makes sure to use the main =Emacs.app/Contents/MacOS/Emacs= executable from the correct path, ensuring it finds all the relevant dependencies within the Emacs.app bundle, regardless of if it's exposed via =PATH= or symlinked from elsewhere. |
| 57 | + |
| 58 | +To use it, simply add =Emacs.app/Contents/MacOS/bin= to your =PATH=. For example, if you place Emacs.app in =/Applications=: |
| 59 | + |
| 60 | +#+begin_src shell |
| 61 | + if [ -d "/Applications/Emacs.app/Contents/MacOS/bin" ]; then |
| 62 | + export PATH="/Applications/Emacs.app/Contents/MacOS/bin:$PATH" |
| 63 | + alias emacs="emacs -nw" # Always launch "emacs" in terminal mode. |
| 64 | + fi |
| 65 | +#+end_src |
| 66 | + |
| 67 | +If you want =emacs= in your terminal to launch a GUI instance of Emacs, don't use the alias from the above example. |
| 68 | + |
| 69 | +** Build Process |
| 70 | +Building Emacs is done using the [[https://github.com/emacs-ng/build-emacsng-for-macos][emacs-ng/build-emacsng-for-macos]] build script, executed within a GitHub Actions [[https://github.com/emacs-ng/emacs-darwin-builds/blob/main/.github/workflows/build.yml][workflow]]. This is why macOS 11.x (Big Sur) or later is required, as it's the oldest version of macOS available in GitHub Actions. |
| 71 | + |
| 72 | +Full history for all builds is available on GitHub Actions [[https://github.com/emacs-ng/emacsng-darwin-builds/actions][here]]. Build logs are only retained by GitHub for 90 days though. |
| 73 | + |
| 74 | +Builds are scheduled for 0:00 UTC every night, based on the latest commit from the =master= branch of the [[https://github.com/emacs-ng/emacs-ng][emacs-ng/emacs-ng]] repository. This means a nightly build will only be produced if there have been new commits since the last nightly build. |
| 75 | + |
| 76 | +** TODO Application Signing / Trust |
| 77 | + |
| 78 | +** Issues / To-Do |
| 79 | +Please see [[https://github.com/emacs-ng/emacsng-darwin-builds/issues][Issues]] for details of things to come, or to report issues. |
0 commit comments