Compare commits

..

37 Commits

Author SHA1 Message Date
17e0cb55ac chore(deps): update build-emacs-for-macos to 0.6.46 2024-04-03 09:47:17 +01:00
6acaf3f2cb chore(build/package): disable debug logging 2024-04-03 09:46:22 +01:00
c262274a3d docs(readme): add badge for monthly cask 2023-11-24 21:03:59 +00:00
ca7f04ce6a chore(meta): tweak update-meta workflow
Run once a day only, and pass in cache flag to keep download totals
accurate over time.
2023-11-24 20:39:41 +00:00
202f62454e docs(readme): add News / Recent Changes section 2023-11-22 09:02:25 +00:00
99341c4f19 docs(readme): add details about Apple Silicon monthly and stable builds 2023-11-21 22:10:20 +00:00
b841bc77b9 feat(nightly): do not build arm64 variant by default
For now arm64 builds are only done once per month due to the high cost
of using the M1-based runners.
2023-11-20 09:30:51 +00:00
196270a3f4 fix(build): typo preventing correct info message from displaying 2023-11-20 09:30:31 +00:00
2062378299 chore(deps): update build-emacs-for-macos to 0.6.45 2023-11-20 02:29:12 +00:00
cc7bb92357 chore(builds): upgrade minimum macOS version from 11 to 12
Builds using macOS 11 just takes a stupidly long time as, as Homebrew
seems to have dropped support, meaning all homebrew dependencies are
installed from source, rather than get installed from bottles.

Hence let's try upgrading minimum macOS version from 11 (Big Sur), to
12 (Monteray).
2023-11-20 02:19:26 +00:00
1a36bde31e fix(workflow/nightly): remove errant input references 2023-11-20 01:07:47 +00:00
04d1bbeb71 fix(build): use correct bootstrap make target 2023-11-19 23:34:40 +00:00
3e4d8b1833 chore(deps): update build-emacs-for-macos to 0.6.44 2023-11-19 23:33:12 +00:00
a292b242c4 chore(nightly): temporarily enable arm64 builds
We want one scheduled arm64 build for now, then we'll revert to only
building them on the 1st of the month.
2023-11-19 23:30:02 +00:00
287df6914e fix(workflows): refactor nightly workflows 2023-11-19 23:24:49 +00:00
d2cb4d5905 chore(workflows): rename workflows back 2023-11-19 23:00:34 +00:00
6b4bd441a3 fix(build): pass inputs correctly 2023-11-19 22:54:40 +00:00
6e1af1b83f feat(build): disable emacs-29 branch builds
They are no longer that relevant, as Emacs 29.1 is out, and master is
version 30.
2023-11-19 22:41:32 +00:00
81b0e4a784 fix(build): do not require inputs which have defaults 2023-11-19 22:41:13 +00:00
503023cd53 chore(build): refactor build workflow 2023-11-19 22:27:49 +00:00
a79110c550 feat(build): support multi-arch builds 2023-11-19 22:26:46 +00:00
ff1b573f43 feat(build): allow running build job on separate OS
This should help reduce costs for Apple Silicon builds, as they are not
available on any form of free tier of GitHub Actions at the moment.

The build step that actually runs Emacs' configure script, and compiles
Emacs, is the only step that actually needs to run on the target
hardware architecture. The rest should be architecture agnostic.
2023-11-19 22:26:46 +00:00
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
9 changed files with 282 additions and 174 deletions

View File

@@ -11,7 +11,13 @@ on:
os:
description: GitHub Actions runner OS
type: string
required: true
required: false
default: "macos-12"
build_os:
description: Target OS to build for
type: string
required: false
default: "macos-12"
git_ref:
description: Git ref to build
type: string
@@ -58,6 +64,10 @@ on:
TAP_REPO_TOKEN:
description: Homebrew Tap Token
required: true
outputs:
package_created:
description: "Whether or not a package was created"
value: ${{ jobs.package.result == 'success' }}
jobs:
prepare:
@@ -88,16 +98,31 @@ jobs:
echo "sha=--sha '${{ inputs.git_sha }}'" >> $GITHUB_OUTPUT
plan:
needs: [prepare]
runs-on: ${{ inputs.os }}
runs-on: ${{ inputs.build_os }}
outputs:
check: ${{ steps.check.outputs.result }}
steps:
- name: Checkout build-emacs-for-macos repo
if: ${{ inputs.os != inputs.build_os }}
uses: actions/checkout@v4
with:
repository: jimeh/build-emacs-for-macos
ref: ${{ needs.prepare.outputs.builder_sha }}
- uses: actions/setup-go@v4
if: ${{ inputs.os != inputs.build_os }}
with:
go-version: "1.21"
- name: Build emacs-builder tool
if: ${{ inputs.os != inputs.build_os }}
run: make build
- name: Download pre-built emacs-builder artifact
if: ${{ inputs.os == inputs.build_os }}
uses: actions/download-artifact@v3
with:
name: emacs-builder
path: bin
- name: Ensure emacs-builder is executable
if: ${{ inputs.os == inputs.build_os }}
run: chmod +x bin/emacs-builder
- name: Plan build
run: >-
@@ -124,27 +149,32 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: echo 'Planned release already seems to exist.'
if: ${{ steps.check.outputs.result == 'fail' }}
if: ${{ steps.check.outputs.result == 'ok' }}
build:
runs-on: ${{ inputs.os }}
runs-on: ${{ inputs.build_os }}
needs: [prepare, plan]
# Only run if check for existing release and asset failed.
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
run: make bootstrap
working-directory: builder
- name: Download build-plan artifact
uses: actions/download-artifact@v3
@@ -153,8 +183,11 @@ jobs:
path: ./
- name: Build Emacs
run: >-
./builder/build-emacs-for-macos --plan build-plan.yml
./builder/build-emacs-for-macos
--log-level debug
--plan build-plan.yml
--native-full-aot
--no-self-sign
${{ inputs.build_args }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -173,7 +206,6 @@ jobs:
package:
runs-on: ${{ inputs.os }}
needs: [prepare, plan, build]
# Only run if check for existing release and asset failed.
steps:
- uses: actions/setup-python@v4
with:
@@ -226,7 +258,7 @@ jobs:
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
- name: Sign, package and notarize build
run: >-
bin/emacs-builder -l debug package -v --plan build-plan.yml
bin/emacs-builder package -v --plan build-plan.yml
--sign --remove-source-dir
env:
AC_USERNAME: ${{ secrets.AC_USERNAME }}
@@ -236,7 +268,7 @@ jobs:
- name: Upload disk image artifacts
uses: actions/upload-artifact@v3
with:
name: dmg
name: ${{ inputs.artifact_prefix }}dmg
path: |
builds/*.dmg
builds/*.sha*

View File

@@ -3,11 +3,16 @@ name: _prepare
on:
workflow_call:
inputs:
os:
description: GitHub Actions runner OS
type: string
required: false
default: "macos-12"
builder_ref:
description: Git ref to checkout of build-emacs-for-macos
required: false
type: string
default: "v0.6.40"
default: "v0.6.46"
secrets:
TAP_REPO_TOKEN:
description: Personal Access Token for Homebrew Tap repo
@@ -15,40 +20,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-11
runs-on: ${{ inputs.os }}
steps:
- name: Checkout build-emacs-for-macos repo
uses: actions/checkout@v3
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@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@v3
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@v3
with:
name: emacs-builder
path: builder/bin/emacs-builder
path: bin/emacs-builder
if-no-files-found: error

View File

@@ -4,6 +4,11 @@ name: _release
on:
workflow_call:
inputs:
os:
description: GitHub Actions runner OS
type: string
required: false
default: "macos-12"
plan_artifact:
description: Name of artifact containing a emacs-builder plan yaml file
type: string
@@ -12,6 +17,15 @@ 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
update_casks:
description: "Update casks in homebrew tap?"
type: boolean
required: true
default: true
secrets:
TAP_REPO_TOKEN:
description: Personal Access Token for Homebrew Tap repo
@@ -19,7 +33,7 @@ on:
jobs:
github:
runs-on: macos-11
runs-on: ${{ inputs.os }}
steps:
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v3
@@ -48,7 +62,10 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Trigger update casks workflow in homebrew tap
if: ${{ steps.dmg.outputs.result != 'fail' && inputs.testBuildName == '' }}
if: >-
steps.dmg.outputs.result != 'fail' &&
inputs.test_build_name == '' &&
inputs.update_casks
run: >-
gh workflow run --repo jimeh/homebrew-emacs-builds update-casks.yml
env:

View File

@@ -13,15 +13,15 @@ on:
builder_ref:
description: "Git ref to checkout of build-emacs-for-macos"
required: true
default: "master"
default: "v0.6.46"
builder_args:
description: Custom arguments passed to build script
required: false
default: ""
os:
description: 'Runner OS ("macos-11", "macos-12", or "macos-latest")'
description: 'Runner OS ("macos-12", "macos-13", or "macos-latest")'
required: true
default: "macos-11"
default: "macos-12"
test_build_name:
description: "Test build name"
required: false
@@ -30,22 +30,40 @@ on:
description: "prerelease or draft"
required: false
default: ""
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: false
type: boolean
jobs:
prepare:
name: Prepare
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 }}
build:
name: Build
needs: [prepare]
# ----------------------------------------------------------------------------
# Build x86_64 version of Emacs
# ----------------------------------------------------------------------------
build_x86_64:
name: Build (x86_64)
if: ${{ github.event.inputs.x86_64 == 'true' }}
uses: ./.github/workflows/_build.yml
needs: [prepare]
with:
os: ${{ github.event.inputs.os }}
build_os: "macos-12"
artifact_prefix: "x86_64-"
git_ref: ${{ github.event.inputs.git_ref }}
git_sha: ${{ github.event.inputs.git_sha }}
build_args: ${{ github.event.inputs.builder_args }}
@@ -61,12 +79,58 @@ jobs:
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release:
name: Release
needs: [build]
release_x86_64:
name: Release (x86_64)
uses: ./.github/workflows/_release.yml
needs: [build_x86_64]
if: ${{ needs.build_x86_64.outputs.package_created }}
with:
plan_artifact: build-plan
dmg_artifact: dmg
os: ${{ github.event.inputs.os }}
plan_artifact: x86_64-build-plan
dmg_artifact: x86_64-dmg
test_build_name: ${{ github.event.inputs.test_build_name }}
update_casks: true
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
# ----------------------------------------------------------------------------
# Build arm64 version of Emacs
# ----------------------------------------------------------------------------
build_arm64:
name: Build (arm64)
if: ${{ github.event.inputs.arm64 == 'true' }}
uses: ./.github/workflows/_build.yml
needs: [prepare]
with:
os: ${{ github.event.inputs.os }}
build_os: "macos-13-xlarge" # Only macos-13-xlarge has arm64 support.
artifact_prefix: "arm64-"
git_ref: ${{ github.event.inputs.git_ref }}
git_sha: ${{ github.event.inputs.git_sha }}
build_args: ${{ github.event.inputs.builder_args }}
test_build_name: ${{ github.event.inputs.test_build_name }}
test_release_type: ${{ github.event.inputs.test_release_type }}
secrets:
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release_arm64:
name: Release (arm64)
uses: ./.github/workflows/_release.yml
needs: [build_arm64]
if: ${{ needs.build_arm64.outputs.package_created }}
with:
os: ${{ github.event.inputs.os }}
plan_artifact: arm64-build-plan
dmg_artifact: arm64-dmg
test_build_name: ${{ github.event.inputs.test_build_name }}
update_casks: false
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}

View File

@@ -1,46 +0,0 @@
---
name: Nightly (emacs-28)
on:
schedule:
- cron: "0 23 * * *"
workflow_dispatch:
inputs:
git_sha:
description: Override Emacs git commit SHA to build
required: false
jobs:
prepare:
name: Prepare
uses: ./.github/workflows/_prepare.yml
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
build:
name: Build
needs: [prepare]
uses: ./.github/workflows/_build.yml
with:
os: macos-11
git_ref: emacs-28
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 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release:
name: Release
needs: [build]
uses: ./.github/workflows/_release.yml
with:
plan_artifact: build-plan
dmg_artifact: dmg
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}

View File

@@ -1,46 +0,0 @@
---
name: Nightly (emacs-29)
on:
schedule:
- cron: "0 23 * * *"
workflow_dispatch:
inputs:
git_sha:
description: Override Emacs git commit SHA to build
required: false
jobs:
prepare:
name: Prepare
uses: ./.github/workflows/_prepare.yml
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
build:
name: Build
needs: [prepare]
uses: ./.github/workflows/_build.yml
with:
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 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release:
name: Release
needs: [build]
uses: ./.github/workflows/_release.yml
with:
plan_artifact: build-plan
dmg_artifact: dmg
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}

View File

@@ -2,12 +2,18 @@
name: Nightly (master)
on:
schedule:
- cron: "0 23 * * *"
- cron: "0 23 1 * *"
- cron: "0 23 2-31 * *"
workflow_dispatch:
inputs:
git_sha:
description: Override Emacs git commit SHA to build
required: false
arm64:
description: "Build arm64 version of Emacs?"
required: false
default: false
type: boolean
jobs:
prepare:
@@ -16,15 +22,19 @@ jobs:
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
build:
name: Build
needs: [prepare]
# ----------------------------------------------------------------------------
# Build x86_64 version of Emacs
# ----------------------------------------------------------------------------
build_x86_64:
name: Build (x86_64)
uses: ./.github/workflows/_build.yml
needs: [prepare]
with:
os: macos-11
git_ref: master
build_os: "macos-12"
artifact_prefix: "x86_64-"
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 }}
@@ -35,12 +45,50 @@ jobs:
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release:
name: Release
needs: [build]
release_x86_64:
name: Release (x86_64)
uses: ./.github/workflows/_release.yml
needs: [build_x86_64]
if: ${{ needs.build_x86_64.outputs.package_created }}
with:
plan_artifact: build-plan
dmg_artifact: dmg
plan_artifact: x86_64-build-plan
dmg_artifact: x86_64-dmg
update_casks: true
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
# ----------------------------------------------------------------------------
# Build arm64 version of Emacs
# ----------------------------------------------------------------------------
build_arm64:
name: Build (arm64)
if: github.event.inputs.arm64 || github.event.schedule == '0 23 1 * *'
uses: ./.github/workflows/_build.yml
needs: [prepare]
with:
build_os: "macos-13-xlarge" # Only macos-13-xlarge has arm64 support.
artifact_prefix: "arm64-"
git_ref: "master"
git_sha: ${{ github.event.inputs.git_sha }}
secrets:
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
APPLE_DEVELOPER_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
AC_USERNAME: ${{ secrets.AC_USERNAME }}
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
release_arm64:
name: Release (arm64)
uses: ./.github/workflows/_release.yml
needs: [build_arm64]
if: ${{ needs.build_arm64.outputs.package_created }}
with:
plan_artifact: arm64-build-plan
dmg_artifact: arm64-dmg
update_casks: false
secrets:
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}

View File

@@ -3,27 +3,27 @@ name: Update Metadata
concurrency: jimeh/emacs-builds/update-metadata
on:
schedule:
- cron: "0 0,12 * * *"
- cron: "0 0 * * *"
workflow_dispatch:
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
--output total-downloads/shield.json
--cache total-downloads/.cache.json
env:
GITHUB_TOKEN: ${{ github.token }}
- name: commit and push changes to meta branch
uses: stefanzweifel/git-auto-commit-action@v4
with:

View File

@@ -10,7 +10,7 @@
<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=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-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>
<a href="https://github.com/jimeh/emacs-builds/releases?q=master&expanded=true"><img alt="GitHub release (monthly)" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fjimeh%2Fhomebrew-emacs-builds%2Fmeta%2FCasks%2Femacs-app-monthly%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>
<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>
@@ -34,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
@@ -49,25 +49,30 @@
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 11.x (Big Sur) or later (uses Rosetta2 on Apple Silicon machines).
- Xcode Command Line Tools for native compilation (Emacs 28.x and later).
- 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.
- Xcode Command Line Tools to use native compilation in Emacs, available since
28.x.
## 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 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 a day or two without any obvious issues.
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
@@ -82,32 +87,53 @@ for a day or two without any obvious 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):
- `emacs-app` — Latest stable release of Emacs.
```
brew install --cask emacs-app
```
- `emacs-app-pretest` for the latest pretest build from Emacs:
- `emacs-app-pretest` — Latest pretest build of Emacs.
```
brew install --cask emacs-app-pretest
```
- `emacs-app-nightly` for the latest nightly build from Emacs' `master`
branch:
- `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
```
- `emacs-app-nightly-28` for the latest Emacs 28.x nightly build from the
`emacs-28` branch:
```
brew install --cask emacs-app-nightly-28
```
[7]: https://github.com/jimeh/emacs-builds/issues/7
## 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.
## Use Emacs.app as `emacs` CLI Tool
### Installed via Homebrew Cask
@@ -160,7 +186,7 @@ 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.
@@ -190,3 +216,21 @@ GitHub Actions workflow run which produced the build.
Please see [Issues][] for details of things to come, or to report issues.
[issues]: https://github.com/jimeh/emacs-builds/issues
## News / Recent Changes
### 2023-11-22 — Apple Silicon builds, drop macOS 11 support
Apple Silicon builds are now available, but limited to stable releases, and
nightly builds on the 1st of each month due to the cost of using M1-based
runners on GitHub Actions. Apple Silicon builds also require macOS 13 Ventura,
as that is the oldest macOS version available on M1-based runners.
Additionally, Intel builds minimum required macOS version has been increased
from macOS 11 Big Sur, to macOS 12 Monterey. This was needed as Homebrew no
longer supports Big Sur, leading to very lengthy and error prone builds as all
Homebrew dependencies had to be installed from source.
If dropping support for macOS 11 turns out to be a big issue, it may be possible
to offer macOS 11 compatible builds on a less frequent schedule similar to what
we're doing with Apple Silicon.