Compare commits

...

48 Commits

Author SHA1 Message Date
e65fc8f4f0 Update nightly-master.yml 2023-11-17 00:47:27 +00:00
f1bd559949 chore(deps): update build-emacs-for-macos to 0.6.43 2023-11-16 14:16:49 +00:00
d169338d88 ci(prepare): fix issue with setup-go cache 2023-11-16 13:30:41 +00:00
d9d8975d98 fix(workflow/build): use brew --prefix instead of hard-coded path 2023-11-15 00:06:21 +00:00
f9ee76857f chore(workflow): upgrade actions and language runtimes 2023-11-14 23:52:05 +00:00
c18f19b60b fix(workflow): use same OS in all jobs 2023-11-14 23:41:24 +00:00
dc1fdc91fc ci(meta): fix workflow 2023-07-31 22:32:38 +01:00
54e3c95ade ci(meta): update workflow to use Go 1.20 and provide GITHUB_TOKEN 2023-07-31 19:50:11 +01:00
f73a9c6c03 chore(deps): update build-emacs-for-macos to 0.6.42 2023-07-31 19:21:22 +01:00
f1e9216ef5 docs(readme): minor fix and update 2023-06-20 01:20:38 +01:00
1dd8a0a863 docs(readme): update description of patches included from emacs-plus 2023-01-25 00:19:09 +00:00
f555605f93 ci(emacs-28): disable nightly builds from emacs-28 branch
Emacs 28.x does no longer receive daily work, as next is 29.x being
worked on in emacs-29.
2023-01-24 23:59:55 +00:00
29e5fad03d docs(readme): update nightly emacs-28 references to emacs-29 2023-01-24 23:58:42 +00:00
11b57f3ed1 ci(build): remove brew env vars potentially causing issues 2023-01-16 23:56:31 +00:00
01805db074 fix(deps): hack to remove system python symlinks interfering with brew 2023-01-16 23:54:03 +00:00
2f408c834e chore(deps): update build-emacs-for-macos to 0.6.40
This should fix nightly build issues caused by homebrew package upgrade
failures.
2023-01-08 22:40:02 +00:00
9e2d7cb592 feat(nightly): add nightly build for emacs-29 branch 2022-12-04 21:28:48 +00:00
d351fb20ce chore(nightly): schedule nightly builds for 23:00 UTC
With nightly runs at midnight, it sometimes takes GitHub Actions over an
hour to start the build. On rare occasion this allows new commits from
the new day sneaking in.

Hence we adjust the scheduled build time for now, until the build tool
can be updated to support picking a target commit based on date limits.
2022-12-04 21:22:28 +00:00
1fa1a3be36 chore(deps): update build-emacs-for-macos to 0.6.39 2022-12-04 20:34:50 +00:00
f1a232b18a chore(deps): update build-emacs-for-macos to 0.6.38 2022-12-01 22:35:52 +00:00
86be2a1c30 chore(deps): update build-emacs-for-macos to 0.6.37 2022-12-01 22:15:15 +00:00
c2bba0dc34 chore(ci): use relative references to reusable workflows 2022-12-01 22:15:15 +00:00
5991d0aaf2 fix: resolve dmgbuild installation issue and outdated actions 2022-11-06 23:22:25 +00:00
54ff01d673 chore(deps): update build-emacs-for-macos to 0.6.36 2022-10-08 14:51:04 +01:00
c1c4a03471 fix(nightly): prevent nightly builds without native-comp
By default the build script will enable native-comp if it detects it in
the source tree. This caused recently nightly builds of master to be
built without native-comp due to recent changes in Emacs' configure
script which broke native-comp detection. More details here:

https://github.com/jimeh/build-emacs-for-macos/issues/76

Hence we explicitly enable native-comp now for the nightly master and
emacs-28 builds, which will cause the build script to fail if it cannot
detect native-comp support in the source tree.

Any failure to detect native-comp in master and emacs-28 branches would
at this point be due to a bug/issue with the build script, rather than
Emacs' source tree.
2022-10-08 14:46:14 +01:00
adc48a6492 chore(deps): update build-emacs-for-macos to 0.6.35
Fixes build issues caused by a incompatibility with the libgccjit v12.x
homebrew formula.
2022-08-10 16:49:48 +01:00
14575aa77c chore(deps): update build-emacs-for-macos to 0.6.34 2022-07-27 23:26:51 +01:00
3e3347dbec Merge pull request #23 from jimeh/macos-11
fix(ci): switch to macos-11 (Big Sur) runner
2022-07-27 21:51:19 +01:00
4f2d35c1ac fix(ci): switch to macos-11 (Big Sur) runner
The macos-10.15 runner is now deprecated and no longer usable. Hence all
GitHub Actions workflows using a macOS runner need to upgraded to
macos-11.

As far as I know, this will have a knock-on effect of causing Emacs
builds to require macOS 11.x (Big Sur) or later from now on.
2022-07-27 19:54:01 +01:00
2e80b79110 chore(deps): update build-emacs-for-macos to 0.6.33 2022-04-30 19:45:08 +01:00
88bfa2e603 chore(build): run "brew update" before installing brew deps 2022-04-30 19:45:08 +01:00
9934f47937 docs(readme): minor tweak to stable homebrew cask description 2022-04-07 00:28:26 +01:00
Alec
13e8c9cc9e docs(readme): emacs-app now includes native-comp 2022-04-06 07:44:06 -04:00
4204855346 chore(deps): update build-emacs-for-macos to 0.6.31 2022-02-25 10:35:14 +00:00
11b4492488 chore(deps): update build-emacs-for-macos to 0.6.30 2022-02-08 03:08:35 +00:00
a39895e8f6 docs(readme): add details about pretest builds 2022-02-07 23:17:46 +00:00
27b104d7b7 chore(deps): update build-emacs-for-macos to 0.6.29 2022-02-07 23:17:25 +00:00
0af73aaee1 chore(deps): update build-emacs-for-macos to 0.6.28 2022-01-15 23:21:36 +00:00
16087a80d0 chore(deps): update build-emacs-for-macos to 0.6.27 2021-12-05 13:09:44 +00:00
5835cd9712 docs(readme): update requirements list after gcc fix, minor tweaks 2021-11-30 23:15:36 +00:00
fe10ed4c34 chore(build): remove --no-relink-eln-files option from manual build workflow 2021-11-27 05:07:00 +00:00
9615ab20a6 chore(deps): update build-emacs-for-macos to 0.6.25
Relinking *.eln files has also been fixed, so there's no need to disable
that anymore.
2021-11-27 05:04:46 +00:00
cad73f3555 fix(release): dmg artifact output result check 2021-11-27 03:16:15 +00:00
30f92f734d fix(release): improve handling of no new commit since last build 2021-11-27 01:37:02 +00:00
83b08dc596 feat(build): allow customizing --relink-eln-files arg on custom builds 2021-11-26 02:10:30 +00:00
f3213d9f5a chore(deps): update build-emacs-for-macos to 0.6.25 2021-11-25 23:40:30 +00:00
b40f9e29c8 update build-emacs-for-macos to 0.6.24 2021-11-24 21:54:44 +00:00
e552de3cac fix(builds): use correct path for emacs source tarball artifact upload 2021-11-24 21:54:13 +00:00
8 changed files with 130 additions and 102 deletions

View File

@@ -68,25 +68,24 @@ jobs:
test_plan_args: ${{ steps.test_plan_args.outputs.args }}
steps:
- name: Download emacs-builder git SHA artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: emacs-builder-git-sha
path: ./
- name: Store builder Git SHA
id: builder_sha
run: >-
echo "::set-output name=sha::$(cat emacs-builder-git-sha.txt)"
echo "sha=$(cat emacs-builder-git-sha.txt)" >> $GITHUB_OUTPUT
- name: Prepare plan test args
id: test_plan_args
if: ${{ inputs.test_build_name != '' }}
run: >-
echo "::set-output name=args::--test-build '${{ inputs.test_build_name }}' --test-release-type '${{ inputs.test_release_type }}'"
echo "args=--test-build '${{ inputs.test_build_name }}' --test-release-type '${{ inputs.test_release_type }}'" >> $GITHUB_OUTPUT
- name: Set git SHA override
id: emacs_sha
if: ${{ inputs.git_sha != '' }}
run: >-
echo "::set-output name=sha::--sha '${{ inputs.git_sha }}'"
echo "sha=--sha '${{ inputs.git_sha }}'" >> $GITHUB_OUTPUT
plan:
needs: [prepare]
runs-on: ${{ inputs.os }}
@@ -94,7 +93,7 @@ jobs:
check: ${{ steps.check.outputs.result }}
steps:
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: emacs-builder
path: bin
@@ -112,7 +111,7 @@ jobs:
- name: Show plan
run: cat build-plan.yml
- name: Upload build-plan artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: build-plan.yml
@@ -121,10 +120,11 @@ jobs:
id: check
continue-on-error: true
run: |
RESULT="$((bin/emacs-builder -l debug release --plan build-plan.yml check && echo 'ok') || echo 'fail')"
echo "::set-output name=result::$RESULT"
echo "result=$((bin/emacs-builder -l debug release --plan build-plan.yml check && echo 'ok') || echo 'fail')" >> $GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: echo 'Planned release already seems to exist.'
if: ${{ steps.check.outputs.result == 'fail' }}
build:
runs-on: ${{ inputs.os }}
@@ -133,64 +133,75 @@ jobs:
if: ${{ needs.plan.outputs.check == 'fail' }}
steps:
- name: Checkout build-emacs-for-macos repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: jimeh/build-emacs-for-macos
ref: ${{ needs.prepare.outputs.builder_sha }}
path: builder
- uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
ruby-version: "3.2"
- name: Update homebrew
run: brew update
- name: Fix system python breaking homebrew
run: >-
find "$(brew --prefix)/bin" -type l
-ilname '*/Library/Frameworks/Python.framework/*'
-delete
- name: Install dependencies
run: make bootstrap-ci
working-directory: builder
- name: Download build-plan artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: ./
- name: Build Emacs
run: >-
./builder/build-emacs-for-macos --plan build-plan.yml
--no-relink-eln-files --native-full-aot
./builder/build-emacs-for-macos
--log-level debug
--plan build-plan.yml
--native-full-aot
${{ inputs.build_args }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload unsigned app artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}unsigned-app
path: builds/*.tbz
if-no-files-found: error
- name: Upload Emacs source artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}emacs-source
path: tarballs/*.tgz
path: builder/tarballs/*.tgz
package:
runs-on: ${{ inputs.os }}
needs: [prepare, plan, build]
# Only run if check for existing release and asset failed.
steps:
- name: Install dependencies
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dmgbuild
run: |
brew install python
$(command -v pip3 || command -v pip) install --upgrade dmgbuild
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: emacs-builder
path: bin
- name: Ensure emacs-builder is executable
run: chmod +x bin/emacs-builder
- name: Download build-plan artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: ./
- name: Download unsigned app artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: ${{ inputs.artifact_prefix }}unsigned-app
path: builds
@@ -230,7 +241,7 @@ jobs:
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
- name: Upload disk image artifacts
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: dmg
path: |

View File

@@ -3,11 +3,15 @@ name: _prepare
on:
workflow_call:
inputs:
os:
description: GitHub Actions runner OS
type: string
required: true
builder_ref:
description: Git ref to checkout of build-emacs-for-macos
required: false
type: string
default: "v0.6.23"
default: "v0.6.43"
secrets:
TAP_REPO_TOKEN:
description: Personal Access Token for Homebrew Tap repo
@@ -15,40 +19,30 @@ on:
jobs:
emacs-builder:
# Use oldest version of macOS to ensure emacs-bulder binary is compatible
# with later versions of macOS.
runs-on: macos-10.15
runs-on: ${{ inputs.os }}
steps:
- name: Checkout build-emacs-for-macos repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: jimeh/build-emacs-for-macos
ref: ${{ inputs.builder_ref }}
path: builder
- name: Store builder Git SHA
run: |
git rev-parse HEAD > emacs-builder-git-sha.txt
working-directory: builder
- name: Upload builder git SHA artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: emacs-builder-git-sha
path: builder/emacs-builder-git-sha.txt
path: emacs-builder-git-sha.txt
if-no-files-found: error
- uses: actions/setup-go@v2
- uses: actions/setup-go@v4
with:
go-version: 1.16
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('builder/**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
go-version: "1.21"
- name: Build emacs-builder tool
run: make build
working-directory: builder
- name: Upload emacs-builder artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: emacs-builder
path: builder/bin/emacs-builder
path: bin/emacs-builder
if-no-files-found: error

View File

@@ -4,6 +4,10 @@ name: _release
on:
workflow_call:
inputs:
os:
description: GitHub Actions runner OS
type: string
required: true
plan_artifact:
description: Name of artifact containing a emacs-builder plan yaml file
type: string
@@ -12,6 +16,10 @@ on:
description: Name of artifact containing a *.dmg files to release
type: string
required: true
test_build_name:
description: "Test build name"
type: string
required: false
secrets:
TAP_REPO_TOKEN:
description: Personal Access Token for Homebrew Tap repo
@@ -19,34 +27,39 @@ on:
jobs:
github:
runs-on: macos-11
runs-on: ${{ inputs.os }}
steps:
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: emacs-builder
path: bin
- name: Ensure emacs-builder is executable
run: chmod +x bin/emacs-builder
- name: Download build-plan.yml artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: ${{ inputs.plan_artifact }}
path: ./
- name: Download disk image artifacts
uses: actions/download-artifact@v2
id: dmg
continue-on-error: true
uses: actions/download-artifact@v3
with:
name: ${{ inputs.dmg_artifact }}
path: builds
- name: Publish disk images to a GitHub Release
if: ${{ steps.dmg.outputs.result != 'fail' }}
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 }}
- name: Trigger update casks workflow in homebrew tap
if: ${{ inputs.testBuildName == '' }}
if: ${{ steps.dmg.outputs.result != 'fail' && inputs.test_build_name == '' }}
run: >-
gh workflow run --repo jimeh/homebrew-emacs-builds update-casks.yml
env:
GITHUB_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
- run: echo 'No DMG artifact available, was there a new commit to build?'
if: ${{ steps.dmg.outputs.result == 'fail' }}

View File

@@ -19,9 +19,9 @@ on:
required: false
default: ""
os:
description: 'Runner OS ("macos-10.15" or "macos-11")'
description: 'Runner OS ("macos-11", "macos-12", or "macos-latest")'
required: true
default: "macos-10.15"
default: "macos-11"
test_build_name:
description: "Test build name"
required: false
@@ -34,8 +34,9 @@ on:
jobs:
prepare:
name: Prepare
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
uses: ./.github/workflows/_prepare.yml
with:
os: ${{ github.event.inputs.os }}
builder_ref: ${{ github.event.inputs.builder_ref }}
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
@@ -43,9 +44,9 @@ jobs:
build:
name: Build
needs: [prepare]
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
uses: ./.github/workflows/_build.yml
with:
os: macos-10.15
os: ${{ github.event.inputs.os }}
git_ref: ${{ github.event.inputs.git_ref }}
git_sha: ${{ github.event.inputs.git_sha }}
build_args: ${{ github.event.inputs.builder_args }}
@@ -64,9 +65,11 @@ jobs:
release:
name: Release
needs: [build]
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
uses: ./.github/workflows/_release.yml
with:
os: ${{ github.event.inputs.os }}
plan_artifact: build-plan
dmg_artifact: dmg
test_build_name: ${{ github.event.inputs.test_build_name }}
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}

View File

@@ -1,8 +1,8 @@
---
name: Nightly (emacs-28)
name: Nightly (emacs-29)
on:
schedule:
- cron: "0 0 * * *"
- cron: "0 23 * * *"
workflow_dispatch:
inputs:
git_sha:
@@ -12,18 +12,19 @@ on:
jobs:
prepare:
name: Prepare
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
uses: ./.github/workflows/_prepare.yml
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
build:
name: Build
needs: [prepare]
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
uses: ./.github/workflows/_build.yml
with:
os: macos-10.15
git_ref: emacs-28
os: macos-11
git_ref: emacs-29
git_sha: ${{ github.event.inputs.git_sha }}
build_args: --native-comp
secrets:
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
@@ -37,7 +38,7 @@ jobs:
release:
name: Release
needs: [build]
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
uses: ./.github/workflows/_release.yml
with:
plan_artifact: build-plan
dmg_artifact: dmg

View File

@@ -2,7 +2,7 @@
name: Nightly (master)
on:
schedule:
- cron: "0 0 * * *"
- cron: "0 23 * * *"
workflow_dispatch:
inputs:
git_sha:
@@ -12,18 +12,21 @@ on:
jobs:
prepare:
name: Prepare
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
uses: ./.github/workflows/_prepare.yml
with:
os: macos-11
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
build:
name: Build
needs: [prepare]
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
uses: ./.github/workflows/_build.yml
with:
os: macos-10.15
os: macos-11
git_ref: master
git_sha: ${{ github.event.inputs.git_sha }}
build_args: --native-comp
secrets:
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
@@ -37,8 +40,9 @@ jobs:
release:
name: Release
needs: [build]
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
uses: ./.github/workflows/_release.yml
with:
os: macos-11
plan_artifact: build-plan
dmg_artifact: dmg
secrets:

View File

@@ -10,20 +10,18 @@ jobs:
update-metadata:
runs-on: ubuntu-latest
steps:
- name: Checkout tap repository main branch
uses: actions/checkout@v2
- name: Checkout meta branch
uses: actions/checkout@v3
with:
ref: meta
- uses: actions/setup-go@v2
- uses: actions/setup-go@v4
with:
go-version: 1.17
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('builder/**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
go-version: "1.21"
- name: update total downloads shield JSON
run: go run . badges downloads -o total-downloads/shield.json
run: >-
go run . badges downloads -o total-downloads/shield.json
env:
GITHUB_TOKEN: ${{ github.token }}
- name: commit and push changes to meta branch
uses: stefanzweifel/git-auto-commit-action@v4
with:

View File

@@ -8,11 +8,10 @@
<p align="center">
<a href="https://github.com/jimeh/emacs-builds/releases/latest"><img alt="GitHub release (stable)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app%2Fshield.json"></a>
<a href="https://github.com/jimeh/emacs-builds/releases?q=emacs-28&expanded=true"><img alt="GitHub release (nightly@emacs-28)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-nightly-28%2Fshield.json"></a>
<br />
<a href="https://github.com/jimeh/emacs-builds/releases?q=pretest&expanded=true"><img alt="GitHub release (pretest)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-pretest%2Fshield.json"></a>
<a href="https://github.com/jimeh/emacs-builds/releases?q=master&expanded=true"><img alt="GitHub release (nightly)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-nightly%2Fshield.json"></a>
<a href="https://github.com/jimeh/emacs-builds/releases?q=emacs-29&expanded=true"><img alt="GitHub release (nightly@emacs-29)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-nightly-29%2Fshield.json"></a>
<a href="https://github.com/jimeh/emacs-builds/issues/7"><img alt="GitHub release (known good nightly)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-good%2Fshield.json"></a>
<br />
<a href="https://github.com/jimeh/emacs-builds/issues"><img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/jimeh/emacs-builds?style=flat&logo=github&logoColor=white"></a>
<a href="https://github.com/jimeh/emacs-builds/pulls"><img alt="GitHub pull requests" src="https://img.shields.io/github/issues-pr-raw/jimeh/emacs-builds?style=flat&logo=github&logoColor=white"></a>
<a href="https://github.com/jimeh/emacs-builds/releases"><img alt="GitHub all releases" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Femacs-builds%2Fmeta%2Ftotal-downloads%2Fshield.json"></a>
@@ -20,15 +19,14 @@
<p align="center">
<strong>
Self-contained Emacs.app builds for macOS, with native-compilation support
in nightly builds.
Self-contained Emacs.app builds for macOS, with native-compilation support.
</strong>
</p>
## Features
- Self-contained Emacs.app application bundle, with no external dependencies.
- Native-compilation ([gccemacs][]), nightly builds only.
- Native compilation ([gccemacs][]), only in Emacs 28.x and later builds.
- Native JSON parsing via libjansson.
- SVG rendering via librsvg.
- Various image formats are supported via macOS native image APIs.
@@ -36,8 +34,8 @@
browser with `M-x xwidget-webkit-browse-url`.
- Native XML parsing via libxml2.
- Dynamic module loading.
- Includes the [fix-window-role][] and [system-appearance][] patches from the
excellent [emacs-plus][] project.
- Includes the [fix-window-role][], [system-appearance][], and
[round-undecorated-frame][] 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
@@ -51,26 +49,27 @@
https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-28/fix-window-role.patch
[system-appearance]:
https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-28/system-appearance.patch
[round-undecorated-frame]:
https://github.com/d12frosted/homebrew-emacs-plus/blob/master/patches/emacs-29/round-undecorated-frame.patch
[emacs-plus]: https://github.com/d12frosted/homebrew-emacs-plus
[emacs-mirror/emacs]: https://github.com/emacs-mirror/emacs
## System Requirements
- macOS 10.15.x or later (uses Rosetta2 on M1-based macs).
- Homebrew `gcc` formula (nightly builds only).
- Xcode Command Line Tools (nightly builds only).
- macOS 11.x (Big Sur) or later (uses Rosetta2 on Apple Silicon machines).
- Xcode Command Line Tools for native compilation (Emacs 28.x and later).
## Installation
### Manual Download
See the [Releases][] page to download latest builds, or [here](latest) for the
See the [Releases][] page to download latest builds, or [here][latest] for the
latest stable release.
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][7] for a list of
recent nightly builds which have been actively used by a living being without
any issues.
Nightly builds of Emacs are for the most part just fine, but if you don't like
living too close to the edge, see issue [#7 Known Good Nightly Builds][7] for a
list of recent nightly builds which have been actively used by a living being
for at least a day or two without any obvious issues.
[releases]: https://github.com/jimeh/emacs-builds/releases
[latest]: https://github.com/jimeh/emacs-builds/releases/latest
@@ -85,6 +84,15 @@ any issues.
brew tap jimeh/emacs-builds
```
2. Install one of the available casks:
- `emacs-app` for the latest stable release of Emacs (includes native-comp
since v28.1):
```
brew install --cask emacs-app
```
- `emacs-app-pretest` for the latest pretest build from Emacs:
```
brew install --cask emacs-app-pretest
```
- `emacs-app-nightly` for the latest nightly build from Emacs' `master`
branch:
```
@@ -94,15 +102,10 @@ any issues.
```
brew install --cask emacs-app-good
```
- `emacs-app-nightly-28` for the latest Emacs 28.x nightly build from the
`emacs-28` branch:
- `emacs-app-nightly-29` for the latest Emacs 29.x nightly build from the
`emacs-29` branch:
```
brew install --cask emacs-app-nightly-28
```
- `emacs-app` for the latest stable release of Emacs (does not include
native-comp at time of writing):
```
brew install --cask emacs-app
brew install --cask emacs-app-nightly-29
```
[7]: https://github.com/jimeh/emacs-builds/issues/7
@@ -146,8 +149,8 @@ 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 10.15.x or
later is required, as it's the oldest version of macOS available in GitHub
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.
[jimeh/build-emacs-for-macos]: https://github.com/jimeh/build-emacs-for-macos
@@ -155,10 +158,11 @@ Actions.
https://github.com/jimeh/emacs-builds/blob/main/.github/workflows/build.yml
Full history for all builds is available on GitHub Actions [here][actions].
Build logs are only retained by GitHub for 90 days though.
[actions]: https://github.com/jimeh/emacs-builds/actions
Nightly builds are scheduled for 0:00 UTC every night, based on the latest
Nightly builds are scheduled for 23: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.