mirror of
https://github.com/jimeh/emacs-builds.git
synced 2026-02-19 08:26:40 +00:00
Compare commits
16 Commits
Emacs.2024
...
Emacs-30.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
4142f78ed1
|
|||
|
0bdcc26ff7
|
|||
|
f77bef8017
|
|||
|
2304c38620
|
|||
| d8ad016739 | |||
|
b8192fb788
|
|||
|
51fba0905b
|
|||
|
f73c57be55
|
|||
|
d66071efc4
|
|||
|
5f2c9eef19
|
|||
|
b381cba4fa
|
|||
|
d40d900d61
|
|||
|
d81f9a1229
|
|||
|
93ad41d01a
|
|||
|
c5db478e64
|
|||
|
c554cdeb31
|
8
.github/workflows/_build.yml
vendored
8
.github/workflows/_build.yml
vendored
@@ -13,13 +13,17 @@ on:
|
||||
type: string
|
||||
builder_ref:
|
||||
description: "Git ref to checkout of build-emacs-for-macos"
|
||||
required: true
|
||||
required: false
|
||||
type: string
|
||||
builder_args:
|
||||
description: Custom arguments passed to build script
|
||||
required: false
|
||||
default: ""
|
||||
type: string
|
||||
build_variant:
|
||||
description: "Optional build number used as version suffix"
|
||||
required: false
|
||||
type: string
|
||||
test_build_name:
|
||||
description: "Test build name"
|
||||
required: false
|
||||
@@ -65,6 +69,7 @@ jobs:
|
||||
git_ref: ${{ inputs.git_ref }}
|
||||
git_sha: ${{ inputs.git_sha }}
|
||||
build_args: ${{ inputs.builder_args }}
|
||||
build_variant: ${{ inputs.build_variant }}
|
||||
test_build_name: ${{ inputs.test_build_name }}
|
||||
test_release_type: ${{ inputs.test_release_type }}
|
||||
secrets: inherit
|
||||
@@ -104,6 +109,7 @@ jobs:
|
||||
git_ref: ${{ inputs.git_ref }}
|
||||
git_sha: ${{ inputs.git_sha }}
|
||||
build_args: ${{ inputs.builder_args }}
|
||||
build_variant: ${{ inputs.build_variant }}
|
||||
test_build_name: ${{ inputs.test_build_name }}
|
||||
test_release_type: ${{ inputs.test_release_type }}
|
||||
secrets: inherit
|
||||
|
||||
18
.github/workflows/_build_emacs.yml
vendored
18
.github/workflows/_build_emacs.yml
vendored
@@ -34,6 +34,10 @@ on:
|
||||
description: Custom arguments passed to build script
|
||||
type: string
|
||||
required: false
|
||||
build_variant:
|
||||
description: "Optional build number used as version suffix"
|
||||
type: string
|
||||
required: false
|
||||
test_build_name:
|
||||
description: "Test build name"
|
||||
type: string
|
||||
@@ -66,8 +70,8 @@ jobs:
|
||||
path: bin
|
||||
- name: Ensure emacs-builder is executable
|
||||
run: chmod +x bin/emacs-builder
|
||||
- uses: nixbuild/nix-quick-install-action@v29
|
||||
- uses: nix-community/cache-nix-action@v5
|
||||
- uses: nixbuild/nix-quick-install-action@v32
|
||||
- uses: nix-community/cache-nix-action@v6
|
||||
with:
|
||||
primary-key: nix-${{ runner.arch }}-${{ hashFiles('**/flake.*') }}
|
||||
- name: Install dependencies
|
||||
@@ -77,6 +81,11 @@ jobs:
|
||||
if: inputs.test_build_name != ''
|
||||
run: >-
|
||||
echo "args=--test-build '${{ inputs.test_build_name }}' --test-release-type '${{ inputs.test_release_type }}'" >> "$GITHUB_OUTPUT"
|
||||
- name: Prepare build variant args
|
||||
id: build_variant_args
|
||||
if: inputs.build_variant != ''
|
||||
run: >-
|
||||
echo "args=--build-variant ${{ inputs.build_variant }}" >> "$GITHUB_OUTPUT"
|
||||
- name: Set git SHA override
|
||||
id: emacs_sha
|
||||
if: inputs.git_sha != ''
|
||||
@@ -87,6 +96,7 @@ jobs:
|
||||
nix develop --command
|
||||
bin/emacs-builder -l debug plan --output build-plan.yml
|
||||
--output-dir '${{ github.workspace }}/builds'
|
||||
${{ steps.build_variant_args.outputs.args }}
|
||||
${{ steps.test_plan_args.outputs.args }}
|
||||
${{ steps.emacs_sha.outputs.sha }}
|
||||
'${{ inputs.git_ref }}'
|
||||
@@ -122,8 +132,8 @@ jobs:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: ${{ inputs.builder_ref }}
|
||||
path: builder
|
||||
- uses: nixbuild/nix-quick-install-action@v29
|
||||
- uses: nix-community/cache-nix-action@v5
|
||||
- uses: nixbuild/nix-quick-install-action@v32
|
||||
- uses: nix-community/cache-nix-action@v6
|
||||
with:
|
||||
primary-key: nix-${{ runner.arch }}-${{ hashFiles('**/flake.*') }}
|
||||
- name: Download build-plan artifact
|
||||
|
||||
25
.github/workflows/_prepare.yml
vendored
25
.github/workflows/_prepare.yml
vendored
@@ -5,30 +5,41 @@ on:
|
||||
inputs:
|
||||
builder_ref:
|
||||
description: Git ref to checkout of build-emacs-for-macos
|
||||
required: true
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
outputs:
|
||||
builder_ref:
|
||||
description: Git ref of build-emacs-for-macos at builder_ref
|
||||
value: ${{ jobs.builder-sha.outputs.ref }}
|
||||
builder_sha:
|
||||
description: Git SHA of build-emacs-for-macos at builder_ref
|
||||
description: Git commit SHA of build-emacs-for-macos at builder_ref
|
||||
value: ${{ jobs.builder-sha.outputs.sha }}
|
||||
|
||||
jobs:
|
||||
builder-sha:
|
||||
runs-on: "macos-13"
|
||||
outputs:
|
||||
sha: ${{ steps.builder_sha.outputs.sha }}
|
||||
ref: ${{ steps.ref.outputs.ref }}
|
||||
sha: ${{ steps.sha.outputs.sha }}
|
||||
steps:
|
||||
- name: Default git ref check
|
||||
id: ref
|
||||
run: |
|
||||
DEFAULT_BUILDER_REF="v0.6.61"
|
||||
BUILDER_REF="${{ inputs.builder_ref }}"
|
||||
echo "ref=${BUILDER_REF:-$DEFAULT_BUILDER_REF}" >> "$GITHUB_OUTPUT"
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: ${{ inputs.builder_ref }}
|
||||
ref: ${{ steps.ref.outputs.ref }}
|
||||
- name: Store builder Git SHA
|
||||
id: builder_sha
|
||||
id: sha
|
||||
run: |
|
||||
BUILDER_SHA="$(git rev-parse HEAD)"
|
||||
echo "$BUILDER_SHA" > build-emacs-for-macos-git-sha.txt
|
||||
echo "sha=$BUILDER_SHA" >> $GITHUB_OUTPUT
|
||||
echo "sha=$BUILDER_SHA" >> "$GITHUB_OUTPUT"
|
||||
echo "Builder ref ${{ inputs.builder_ref }} resolved to" \
|
||||
"commit SHA: $BUILDER_SHA"
|
||||
- name: Upload builder git SHA artifact
|
||||
@@ -58,7 +69,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: ${{ inputs.builder_ref }}
|
||||
ref: ${{ needs.builder-sha.outputs.ref }}
|
||||
fetch-depth: 0
|
||||
- name: Setup Go
|
||||
if: steps.cache.outputs.cache-hit != 'true'
|
||||
|
||||
4
.github/workflows/_release.yml
vendored
4
.github/workflows/_release.yml
vendored
@@ -49,11 +49,11 @@ jobs:
|
||||
name: ${{ inputs.dmg_artifact }}
|
||||
path: builds
|
||||
- name: Publish disk images to a GitHub Release
|
||||
if: steps.dmg.outputs.result != 'fail'
|
||||
if: steps.dmg.outcome != 'failure'
|
||||
run: >-
|
||||
bin/emacs-builder -l debug release --plan build-plan.yml publish
|
||||
$(find builds -name '*.dmg' -or -name '*.sha256')
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- run: echo 'No DMG artifact available, was there a new commit to build?'
|
||||
if: steps.dmg.outputs.result == 'fail'
|
||||
if: steps.dmg.outcome == 'failure'
|
||||
|
||||
11
.github/workflows/build.yml
vendored
11
.github/workflows/build.yml
vendored
@@ -11,9 +11,9 @@ on:
|
||||
description: Override Emacs git commit SHA to build
|
||||
required: false
|
||||
builder_ref:
|
||||
description: "Git ref to checkout of build-emacs-for-macos"
|
||||
required: true
|
||||
default: "v0.6.52"
|
||||
description: "Override git ref to checkout of build-emacs-for-macos"
|
||||
required: false
|
||||
default: ""
|
||||
builder_args:
|
||||
description: Custom arguments passed to build script
|
||||
required: false
|
||||
@@ -26,6 +26,10 @@ on:
|
||||
description: "prerelease or draft"
|
||||
required: false
|
||||
default: ""
|
||||
build_variant:
|
||||
description: "Optional build number used as version suffix"
|
||||
required: false
|
||||
type: string
|
||||
x86_64:
|
||||
description: "Build x86_64 version of Emacs"
|
||||
required: false
|
||||
@@ -46,6 +50,7 @@ jobs:
|
||||
git_sha: ${{ inputs.git_sha }}
|
||||
builder_ref: ${{ inputs.builder_ref }}
|
||||
builder_args: ${{ inputs.builder_args }}
|
||||
build_variant: ${{ inputs.build_variant }}
|
||||
test_build_name: ${{ inputs.test_build_name }}
|
||||
test_release_type: ${{ inputs.test_release_type }}
|
||||
x86_64: ${{ inputs.x86_64 }}
|
||||
|
||||
17
.github/workflows/nightly-master.yml
vendored
17
.github/workflows/nightly-master.yml
vendored
@@ -8,20 +8,6 @@ on:
|
||||
git_sha:
|
||||
description: Override Emacs git commit SHA to build
|
||||
required: false
|
||||
builder_ref:
|
||||
description: "Git ref to checkout of build-emacs-for-macos"
|
||||
required: true
|
||||
default: "v0.6.52"
|
||||
x86_64:
|
||||
description: "Build x86_64 version of Emacs"
|
||||
required: false
|
||||
default: true
|
||||
type: boolean
|
||||
arm64:
|
||||
description: "Build arm64 version of Emacs"
|
||||
required: false
|
||||
default: true
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -30,7 +16,4 @@ jobs:
|
||||
with:
|
||||
git_ref: "master"
|
||||
git_sha: ${{ inputs.git_sha }}
|
||||
builder_ref: ${{ inputs.builder_ref }}
|
||||
x86_64: ${{ inputs.x86_64 }}
|
||||
arm64: ${{ inputs.arm64 }}
|
||||
secrets: inherit
|
||||
|
||||
115
README.md
115
README.md
@@ -26,12 +26,12 @@
|
||||
## Features
|
||||
|
||||
- Self-contained Emacs.app application bundle, with no external dependencies.
|
||||
- Native compilation ([gccemacs][]), only in Emacs 28.x and later builds.
|
||||
- Native JSON parsing via libjansson.
|
||||
- Native compilation ([gccemacs][]).
|
||||
- Native JSON parsing.
|
||||
- SVG rendering via librsvg.
|
||||
- Various image formats are supported via macOS native image APIs.
|
||||
- Xwidget-webkit support is enabled, allowing access to a embedded WebKit-based
|
||||
browser with `M-x xwidget-webkit-browse-url`.
|
||||
- Xwidget-webkit support, allowing access to a embedded WebKit-based browser
|
||||
with `M-x xwidget-webkit-browse-url`.
|
||||
- Native XML parsing via libxml2.
|
||||
- Dynamic module loading.
|
||||
- Includes the [fix-window-role][], [system-appearance][], and
|
||||
@@ -56,11 +56,13 @@
|
||||
|
||||
## System Requirements
|
||||
|
||||
- macOS 13 Ventura or later for Apple Silicon builds.
|
||||
- macOS 12 Monterey or later for Intel builds, which can run on Apple Silicon
|
||||
via Rosetta2.
|
||||
- Builds produced after 2024-11-30:
|
||||
- macOS 11 or later.
|
||||
- Builds produced before 2024-11-30:
|
||||
- macOS 13 Ventura or later for Apple Silicon builds.
|
||||
- macOS 12 Monterey or later for Intel builds.
|
||||
- Xcode Command Line Tools to use native compilation in Emacs, available since
|
||||
28.x.
|
||||
Emacs 28.x builds.
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -80,59 +82,37 @@ for at least a day or two without any obvious issues.
|
||||
|
||||
### Homebrew Cask
|
||||
|
||||
1. Install the
|
||||
[`jimeh/emacs-builds`](https://github.com/jimeh/homebrew-emacs-builds)
|
||||
Homebrew tap:
|
||||
```
|
||||
brew tap jimeh/emacs-builds
|
||||
```
|
||||
2. Install one of the available casks:
|
||||
- `emacs-app` — Latest stable release of Emacs.
|
||||
```
|
||||
brew install --cask emacs-app
|
||||
```
|
||||
- `emacs-app-pretest` — Latest pretest build of Emacs.
|
||||
```
|
||||
brew install --cask emacs-app-pretest
|
||||
```
|
||||
- `emacs-app-nightly` — Build of Emacs from the `master` branch, updated
|
||||
every night.
|
||||
```
|
||||
brew install --cask emacs-app-nightly
|
||||
```
|
||||
- `emacs-app-monthly` — Build of Emacs from the `master` branch, updated on
|
||||
the 1st of each month. These includes native Apple Silicon support.
|
||||
```
|
||||
brew install --cask emacs-app-monthly
|
||||
```
|
||||
- `emacs-app-good` for the latest known good nightly build listed on [#7][7]:
|
||||
```
|
||||
brew install --cask emacs-app-good
|
||||
```
|
||||
The [`jimeh/emacs-builds`](https://github.com/jimeh/homebrew-emacs-builds)
|
||||
Homebrew Tap provides the following casks:
|
||||
|
||||
[7]: https://github.com/jimeh/emacs-builds/issues/7
|
||||
- `jimeh/emacs-builds/emacs-app` — Latest stable release of Emacs.
|
||||
```bash
|
||||
brew install --cask jimeh/emacs-builds/emacs-app
|
||||
```
|
||||
- `jimeh/emacs-builds/emacs-app-pretest` — Latest pretest build of Emacs.
|
||||
```bash
|
||||
brew install --cask jimeh/emacs-builds/emacs-app-pretest
|
||||
```
|
||||
- `jimeh/emacs-builds/emacs-app-nightly` — Build of Emacs from the `master`
|
||||
branch, updated every night.
|
||||
```bash
|
||||
brew install --cask jimeh/emacs-builds/emacs-app-nightly
|
||||
```
|
||||
- `jimeh/emacs-builds/emacs-app-monthly` — Build of Emacs from the `master`
|
||||
branch, updated on the 1st of each month.
|
||||
```bash
|
||||
brew install --cask jimeh/emacs-builds/emacs-app-monthly
|
||||
```
|
||||
- `jimeh/emacs-builds/emacs-app-good` for the latest known good nightly build
|
||||
listed on [#7][7]:
|
||||
```bash
|
||||
brew install --cask jimeh/emacs-builds/emacs-app-good
|
||||
```
|
||||
|
||||
## Apple Silicon
|
||||
|
||||
Native builds for Apple Silicon is supported, but currently GitHub's M1-based
|
||||
Actions Runners are prohibitively expensive for nightly builds. Intel builds
|
||||
though do work on Apple Silicon machines via Rosetta2, with a minor performance
|
||||
impact.
|
||||
|
||||
Due to the costs, Apple Silicon builds are for now only scheduled for the 1st of
|
||||
each month. The `emacs-app-monthly` Homebrew Cask will always be pointing at a
|
||||
release that includes Intel and Apple Silicon builds.
|
||||
|
||||
Builds for stable releases of Emacs will also include both Intel and Apple
|
||||
Silicon builds.
|
||||
|
||||
### Costs
|
||||
|
||||
At time of writing (2023-11-21), an average Apple Silicon build uses around 17
|
||||
minutes of billable time, at a cost of $0.16 USD per minute, that comes out to
|
||||
around $2.72 per build. I am considering enabling sponsorship on this repository
|
||||
in an effort to cover the costs for more frequent Apple Silicon builds, and will
|
||||
update here if/when I have any news.
|
||||
As of 2024-11-30, all builds include both Apple Silicon (arm64) and Intel
|
||||
(x86_64) artifacts.
|
||||
|
||||
## Use Emacs.app as `emacs` CLI Tool
|
||||
|
||||
@@ -173,13 +153,11 @@ use the alias from the above example.
|
||||
## 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 11.x (Big Sur)
|
||||
or later is required, as it's the oldest version of macOS available in GitHub
|
||||
Actions.
|
||||
executed within a GitHub Actions [workflow][].
|
||||
|
||||
[jimeh/build-emacs-for-macos]: https://github.com/jimeh/build-emacs-for-macos
|
||||
[workflow]:
|
||||
https://github.com/jimeh/emacs-builds/blob/main/.github/workflows/build.yml
|
||||
https://github.com/jimeh/emacs-builds/blob/main/.github/workflows/nightly-master.yml
|
||||
|
||||
Full history for all builds is available on GitHub Actions [here][actions].
|
||||
Build logs are only retained by GitHub for 90 days though.
|
||||
@@ -209,8 +187,6 @@ All builds also come with a SHA256 checksum file, which itself can be double
|
||||
checked against the SHA256 checksum log output from the packaging step of the
|
||||
GitHub Actions workflow run which produced the build.
|
||||
|
||||
[emacs-mirror/emacs]: https://github.com/emacs-mirror/emacs
|
||||
|
||||
## Issues / To-Do
|
||||
|
||||
Please see [Issues][] for details of things to come, or to report issues.
|
||||
@@ -219,6 +195,19 @@ Please see [Issues][] for details of things to come, or to report issues.
|
||||
|
||||
## News / Recent Changes
|
||||
|
||||
### 2024-12-01 — Apple Silicon builds all the time, more stability via Nix
|
||||
|
||||
GitHub's standard runner for macOS 14 and later runs on Apple Silicon, and are
|
||||
free to use for public repositories. As such we now use `runs-on: macos-13` for
|
||||
Intel builds, and `runs-on: macos-14` for Apple Silicon builds. And we do so on
|
||||
all builds, nightlies, pretests, and stable.
|
||||
|
||||
Additionally, macOS 11 Big Sur is now the minimum required version again, for
|
||||
both Intel and Apple Silicon builds. This is due to switching from Homebrew to
|
||||
Nix for managing build-time dependencies. And it supports easily switching
|
||||
between different macOS SDK versions, meaning we can target an SDK that is older
|
||||
than the OS we are creating the builds on.
|
||||
|
||||
### 2023-11-22 — Apple Silicon builds, drop macOS 11 support
|
||||
|
||||
Apple Silicon builds are now available, but limited to stable releases, and
|
||||
|
||||
Reference in New Issue
Block a user