Compare commits

...

9 Commits

7 changed files with 84 additions and 38 deletions

View File

@@ -78,7 +78,7 @@ jobs:
test_plan_args: ${{ steps.test_plan_args.outputs.args }}
steps:
- name: Download emacs-builder git SHA artifact
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: emacs-builder-git-sha
path: ./
@@ -108,7 +108,7 @@ jobs:
with:
repository: jimeh/build-emacs-for-macos
ref: ${{ needs.prepare.outputs.builder_sha }}
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
if: ${{ inputs.os != inputs.build_os }}
with:
go-version: "1.21"
@@ -117,7 +117,7 @@ jobs:
run: make build
- name: Download pre-built emacs-builder artifact
if: ${{ inputs.os == inputs.build_os }}
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: emacs-builder
path: bin
@@ -136,7 +136,7 @@ jobs:
- name: Show plan
run: cat build-plan.yml
- name: Upload build-plan artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: build-plan.yml
@@ -177,7 +177,7 @@ jobs:
run: make bootstrap
working-directory: builder
- name: Download build-plan artifact
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: ./
@@ -192,13 +192,13 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload unsigned app artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}unsigned-app
path: builds/*.tbz
if-no-files-found: error
- name: Upload Emacs source artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}emacs-source
path: builder/tarballs/*.tgz
@@ -207,26 +207,26 @@ jobs:
runs-on: ${{ inputs.os }}
needs: [prepare, plan, build]
steps:
- uses: actions/setup-python@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dmgbuild
run: |
$(command -v pip3 || command -v pip) install --upgrade dmgbuild
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
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@v3
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}build-plan
path: ./
- name: Download unsigned app artifact
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}unsigned-app
path: builds
@@ -258,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 }}
@@ -266,7 +266,7 @@ jobs:
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
- name: Upload disk image artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_prefix }}dmg
path: |

View File

@@ -12,7 +12,7 @@ on:
description: Git ref to checkout of build-emacs-for-macos
required: false
type: string
default: "v0.6.45"
default: "v0.6.47"
secrets:
TAP_REPO_TOKEN:
description: Personal Access Token for Homebrew Tap repo
@@ -31,18 +31,18 @@ jobs:
run: |
git rev-parse HEAD > emacs-builder-git-sha.txt
- name: Upload builder git SHA artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: emacs-builder-git-sha
path: emacs-builder-git-sha.txt
if-no-files-found: error
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"
- name: Build emacs-builder tool
run: make build
- name: Upload emacs-builder artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: emacs-builder
path: bin/emacs-builder

View File

@@ -36,21 +36,21 @@ jobs:
runs-on: ${{ inputs.os }}
steps:
- name: Download pre-built emacs-builder artifact
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
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@v3
uses: actions/download-artifact@v4
with:
name: ${{ inputs.plan_artifact }}
path: ./
- name: Download disk image artifacts
id: dmg
continue-on-error: true
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: ${{ inputs.dmg_artifact }}
path: builds

View File

@@ -13,7 +13,7 @@ on:
builder_ref:
description: "Git ref to checkout of build-emacs-for-macos"
required: true
default: "master"
default: "v0.6.47"
builder_args:
description: Custom arguments passed to build script
required: false

View File

@@ -63,7 +63,9 @@ jobs:
build_arm64:
name: Build (arm64)
if: github.event.inputs.arm64 || github.event.schedule == '0 23 1 * *'
if: >-
github.event.inputs.arm64 == 'true' ||
github.event.schedule == '0 23 1 * *'
uses: ./.github/workflows/_build.yml
needs: [prepare]
with:

View File

@@ -3,7 +3,7 @@ name: Update Metadata
concurrency: jimeh/emacs-builds/update-metadata
on:
schedule:
- cron: "0 0,12 * * *"
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
@@ -14,12 +14,14 @@ jobs:
uses: actions/checkout@v3
with:
ref: meta
- uses: actions/setup-go@v4
- uses: actions/setup-go@v5
with:
go-version: "1.21"
- name: update total downloads shield JSON
run: >-
go run . badges downloads -o total-downloads/shield.json
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

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-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/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>
@@ -56,8 +56,11 @@
## 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
@@ -84,32 +87,53 @@ for at least 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-29` for the latest Emacs 29.x nightly build from the
`emacs-29` branch:
```
brew install --cask emacs-app-nightly-29
```
[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
@@ -192,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.