mirror of
https://github.com/jimeh/emacs-builds.git
synced 2026-02-19 07:16:40 +00:00
Compare commits
47 Commits
Emacs.2021
...
Emacs-28.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
adc48a6492
|
|||
|
14575aa77c
|
|||
| 3e3347dbec | |||
|
4f2d35c1ac
|
|||
|
2e80b79110
|
|||
|
88bfa2e603
|
|||
|
9934f47937
|
|||
|
|
13e8c9cc9e | ||
|
4204855346
|
|||
|
11b4492488
|
|||
|
a39895e8f6
|
|||
|
27b104d7b7
|
|||
|
0af73aaee1
|
|||
|
16087a80d0
|
|||
|
5835cd9712
|
|||
|
fe10ed4c34
|
|||
|
9615ab20a6
|
|||
|
cad73f3555
|
|||
|
30f92f734d
|
|||
|
83b08dc596
|
|||
|
f3213d9f5a
|
|||
|
b40f9e29c8
|
|||
|
e552de3cac
|
|||
|
9c731dac34
|
|||
|
bf358f42d5
|
|||
|
646d8775fb
|
|||
|
7e4ba5a9b8
|
|||
|
f82d299015
|
|||
|
fe0972217f
|
|||
|
a61807dea3
|
|||
|
d1e14bb59b
|
|||
|
06c6c2dbf2
|
|||
|
4561c9d4ce
|
|||
|
ebc4626270
|
|||
|
1e45868817
|
|||
|
8e6aa813f9
|
|||
|
f8bf0870a7
|
|||
|
b84115f251
|
|||
|
ffd1f41e19
|
|||
|
195a5f9775
|
|||
|
31172c47c3
|
|||
|
482bde4c00
|
|||
|
aab02b7454
|
|||
|
a8d3b9d473
|
|||
|
82353b98c5
|
|||
|
5b48a4ac70
|
|||
|
2c06f2c0c8
|
@@ -1,155 +1,98 @@
|
||||
---
|
||||
name: Test Build
|
||||
# Requires _prepare.yml re-usable workflow to have run.
|
||||
name: _build
|
||||
on:
|
||||
workflow_dispatch:
|
||||
workflow_call:
|
||||
inputs:
|
||||
gitRef:
|
||||
description: "Emacs git ref to build"
|
||||
artifact_prefix:
|
||||
description: Artifact prefix
|
||||
type: string
|
||||
required: false
|
||||
os:
|
||||
description: GitHub Actions runner OS
|
||||
type: string
|
||||
required: true
|
||||
default: "master"
|
||||
emacsBuilderGitRef:
|
||||
description: "Git ref to checkout of build-emacs-for-macos"
|
||||
git_ref:
|
||||
description: Git ref to build
|
||||
type: string
|
||||
required: true
|
||||
default: "master"
|
||||
testBuildName:
|
||||
git_sha:
|
||||
description: Override git SHA to build
|
||||
type: string
|
||||
required: false
|
||||
build_args:
|
||||
description: Custom arguments passed to build script
|
||||
type: string
|
||||
required: false
|
||||
test_build_name:
|
||||
description: "Test build name"
|
||||
required: true
|
||||
testReleaseType:
|
||||
type: string
|
||||
required: false
|
||||
test_release_type:
|
||||
description: "prerelease or draft"
|
||||
required: true
|
||||
type: string
|
||||
required: false
|
||||
default: "prerelease"
|
||||
extraPlanArgs:
|
||||
description: "Extra plan args"
|
||||
required: false
|
||||
default: ""
|
||||
extraCheckArgs:
|
||||
description: "Extra check args"
|
||||
required: false
|
||||
default: ""
|
||||
extraBuildArgs:
|
||||
description: "Extra build args"
|
||||
required: false
|
||||
default: "--native-full-aot --no-relink-eln-files"
|
||||
extraPackageArgs:
|
||||
description: "Extra package args"
|
||||
required: false
|
||||
default: ""
|
||||
extraReleaseArgs:
|
||||
description: "Extra release args"
|
||||
required: false
|
||||
default: ""
|
||||
secrets:
|
||||
APPLE_DEVELOPER_CERTIFICATE_P12_BASE64:
|
||||
description: Base64 encoded Apple Developer Certificate
|
||||
required: true
|
||||
APPLE_DEVELOPER_CERTIFICATE_PASSWORD:
|
||||
description: Password for Apple Developer Certificate
|
||||
required: true
|
||||
KEYCHAIN_PASSWORD:
|
||||
description: Password to use for temporary local keychain on runner
|
||||
required: true
|
||||
AC_USERNAME:
|
||||
description: Apple Connect Username
|
||||
required: true
|
||||
AC_PASSWORD:
|
||||
description: Apple Connect Password
|
||||
required: true
|
||||
AC_PROVIDER:
|
||||
description: Apple Connect Provider
|
||||
required: true
|
||||
AC_SIGN_IDENTITY:
|
||||
description: Apple Connect Signing Identify
|
||||
required: true
|
||||
TAP_REPO_TOKEN:
|
||||
description: Homebrew Tap Token
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
plan:
|
||||
runs-on: macos-10.15
|
||||
prepare:
|
||||
runs-on: ${{ inputs.os }}
|
||||
outputs:
|
||||
check: ${{ steps.check.outcome }}
|
||||
builder_sha: ${{ steps.builder_sha.outputs.sha }}
|
||||
emacs_sha_override: ${{ steps.emacs_sha.outputs.sha }}
|
||||
test_plan_args: ${{ steps.test_plan_args.outputs.args }}
|
||||
steps:
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Download emacs-builder git SHA artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: ${{ github.event.inputs.emacsBuilderGitRef }}
|
||||
path: builder
|
||||
name: emacs-builder-git-sha
|
||||
path: ./
|
||||
- name: Store builder Git SHA
|
||||
id: builder_sha
|
||||
run: echo "::set-output name=sha::$(git rev-parse HEAD)"
|
||||
working-directory: builder
|
||||
- uses: actions/setup-go@v2
|
||||
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-
|
||||
- name: Pre-build emacs-builder tool
|
||||
run: make build
|
||||
working-directory: builder
|
||||
- name: Plan build
|
||||
run: >-
|
||||
builder/bin/emacs-builder -l debug plan
|
||||
--output build-plan.yml
|
||||
--output-dir '${{ github.workspace }}/builds'
|
||||
--test-build '${{ github.event.inputs.testBuildName }}'
|
||||
--test-release-type '${{ github.event.inputs.testReleaseType }}'
|
||||
${{ github.event.inputs.extraPlanArgs }}
|
||||
'${{ github.event.inputs.gitRef }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Show plan
|
||||
run: cat build-plan.yml
|
||||
- name: Check if planned release and asset already exist
|
||||
id: check
|
||||
continue-on-error: true
|
||||
echo "::set-output name=sha::$(cat emacs-builder-git-sha.txt)"
|
||||
- name: Prepare plan test args
|
||||
id: test_plan_args
|
||||
if: ${{ inputs.test_build_name != '' }}
|
||||
run: >-
|
||||
builder/bin/emacs-builder -l debug release --plan build-plan.yml check
|
||||
${{ github.event.inputs.extraCheckArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload pre-built emacs-builder artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: emacs-builder
|
||||
path: builder/bin/emacs-builder
|
||||
if-no-files-found: error
|
||||
- name: Upload build-plan.yml artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: build-plan.yml
|
||||
if-no-files-found: error
|
||||
echo "::set-output name=args::--test-build '${{ inputs.test_build_name }}' --test-release-type '${{ inputs.test_release_type }}'"
|
||||
- name: Set git SHA override
|
||||
id: emacs_sha
|
||||
if: ${{ inputs.git_sha != '' }}
|
||||
run: >-
|
||||
echo "::set-output name=sha::--sha '${{ inputs.git_sha }}'"
|
||||
|
||||
build:
|
||||
runs-on: macos-10.15
|
||||
needs: [plan]
|
||||
# Only run if check for existing release and asset failed.
|
||||
if: ${{ needs.plan.outputs.check == 'failure' }}
|
||||
plan:
|
||||
needs: [prepare]
|
||||
runs-on: ${{ inputs.os }}
|
||||
outputs:
|
||||
check: ${{ steps.check.outputs.result }}
|
||||
steps:
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: ${{ needs.plan.outputs.builder_sha }}
|
||||
path: builder
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
- name: Install dependencies
|
||||
run: make bootstrap-ci
|
||||
working-directory: builder
|
||||
- name: Download build-plan.yml artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: ./
|
||||
- name: Build Emacs
|
||||
run: >-
|
||||
./builder/build-emacs-for-macos --plan build-plan.yml
|
||||
${{ github.event.inputs.extraBuildArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload unsigned app artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: unsigned-app
|
||||
path: builds/*.tbz
|
||||
if-no-files-found: error
|
||||
|
||||
package:
|
||||
runs-on: macos-10.15
|
||||
needs: [build]
|
||||
steps:
|
||||
- name: Download unsigned app artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: unsigned-app
|
||||
path: builds
|
||||
- name: Extract unsigned app archive
|
||||
run: |
|
||||
find * -name '*.tbz' -exec tar xvjf "{}" \;
|
||||
working-directory: builds
|
||||
- name: Download pre-built emacs-builder artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
@@ -157,11 +100,108 @@ jobs:
|
||||
path: bin
|
||||
- name: Ensure emacs-builder is executable
|
||||
run: chmod +x bin/emacs-builder
|
||||
- name: Download build-plan.yml artifact
|
||||
- name: Plan build
|
||||
run: >-
|
||||
bin/emacs-builder -l debug plan --output build-plan.yml
|
||||
--output-dir '${{ github.workspace }}/builds'
|
||||
${{ needs.prepare.outputs.test_plan_args }}
|
||||
${{ needs.prepare.outputs.emacs_sha_override }}
|
||||
'${{ inputs.git_ref }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Show plan
|
||||
run: cat build-plan.yml
|
||||
- name: Upload build-plan artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: ${{ inputs.artifact_prefix }}build-plan
|
||||
path: build-plan.yml
|
||||
if-no-files-found: error
|
||||
- name: Check if planned release and asset already exist
|
||||
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"
|
||||
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 }}
|
||||
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
|
||||
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
|
||||
- name: Update homebrew
|
||||
run: brew update
|
||||
- name: Install dependencies
|
||||
run: make bootstrap-ci
|
||||
working-directory: builder
|
||||
- name: Download build-plan artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: build-plan.yml
|
||||
name: ${{ inputs.artifact_prefix }}build-plan
|
||||
path: ./
|
||||
- name: Build Emacs
|
||||
run: >-
|
||||
./builder/build-emacs-for-macos --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
|
||||
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
|
||||
with:
|
||||
name: ${{ inputs.artifact_prefix }}emacs-source
|
||||
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
|
||||
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
|
||||
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
|
||||
with:
|
||||
name: ${{ inputs.artifact_prefix }}build-plan
|
||||
path: ./
|
||||
- name: Download unsigned app artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: ${{ inputs.artifact_prefix }}unsigned-app
|
||||
path: builds
|
||||
- name: Extract unsigned app archive
|
||||
run: |
|
||||
find * -name '*.tbz' -exec tar xvjf "{}" \;
|
||||
working-directory: builds
|
||||
- name: Install the Apple signing certificate
|
||||
run: |
|
||||
# create variables
|
||||
@@ -187,7 +227,7 @@ jobs:
|
||||
- name: Sign, package and notarize build
|
||||
run: >-
|
||||
bin/emacs-builder -l debug package -v --plan build-plan.yml
|
||||
--sign ${{ github.event.inputs.extraPackageArgs }}
|
||||
--sign --remove-source-dir
|
||||
env:
|
||||
AC_USERNAME: ${{ secrets.AC_USERNAME }}
|
||||
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
|
||||
@@ -196,7 +236,7 @@ jobs:
|
||||
- name: Upload disk image artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: signed-dmg
|
||||
name: dmg
|
||||
path: |
|
||||
builds/*.dmg
|
||||
builds/*.sha*
|
||||
@@ -205,31 +245,3 @@ jobs:
|
||||
if: ${{ always() }}
|
||||
run: |
|
||||
security delete-keychain "$RUNNER_TEMP/app-signing.keychain-db"
|
||||
|
||||
release:
|
||||
runs-on: macos-10.15
|
||||
needs: [package]
|
||||
steps:
|
||||
- name: Download pre-built emacs-builder artifact
|
||||
uses: actions/download-artifact@v2
|
||||
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
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: ./
|
||||
- name: Download disk image artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: signed-dmg
|
||||
path: builds
|
||||
- name: Publish disk image to GitHub Release
|
||||
run: >-
|
||||
bin/emacs-builder -l debug release --plan build-plan.yml publish
|
||||
${{ github.event.inputs.extraReleaseArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
54
.github/workflows/_prepare.yml
vendored
Normal file
54
.github/workflows/_prepare.yml
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
name: _prepare
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
builder_ref:
|
||||
description: Git ref to checkout of build-emacs-for-macos
|
||||
required: false
|
||||
type: string
|
||||
default: "v0.6.35"
|
||||
secrets:
|
||||
TAP_REPO_TOKEN:
|
||||
description: Personal Access Token for Homebrew Tap repo
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
emacs-builder:
|
||||
# Use oldest version of macOS to ensure emacs-bulder binary is compatible
|
||||
# with later versions of macOS.
|
||||
runs-on: macos-11
|
||||
steps:
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v2
|
||||
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
|
||||
with:
|
||||
name: emacs-builder-git-sha
|
||||
path: builder/emacs-builder-git-sha.txt
|
||||
if-no-files-found: error
|
||||
- uses: actions/setup-go@v2
|
||||
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-
|
||||
- name: Build emacs-builder tool
|
||||
run: make build
|
||||
working-directory: builder
|
||||
- name: Upload emacs-builder artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: emacs-builder
|
||||
path: builder/bin/emacs-builder
|
||||
if-no-files-found: error
|
||||
57
.github/workflows/_release.yml
vendored
Normal file
57
.github/workflows/_release.yml
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
# Requires _prepare.yml and _build.yml re-usable workflows to have run.
|
||||
name: _release
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
plan_artifact:
|
||||
description: Name of artifact containing a emacs-builder plan yaml file
|
||||
type: string
|
||||
required: true
|
||||
dmg_artifact:
|
||||
description: Name of artifact containing a *.dmg files to release
|
||||
type: string
|
||||
required: true
|
||||
secrets:
|
||||
TAP_REPO_TOKEN:
|
||||
description: Personal Access Token for Homebrew Tap repo
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
github:
|
||||
runs-on: macos-11
|
||||
steps:
|
||||
- name: Download pre-built emacs-builder artifact
|
||||
uses: actions/download-artifact@v2
|
||||
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
|
||||
with:
|
||||
name: ${{ inputs.plan_artifact }}
|
||||
path: ./
|
||||
- name: Download disk image artifacts
|
||||
id: dmg
|
||||
continue-on-error: true
|
||||
uses: actions/download-artifact@v2
|
||||
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: ${{ steps.dmg.outputs.result != 'fail' && inputs.testBuildName == '' }}
|
||||
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' }}
|
||||
238
.github/workflows/build.yml
vendored
238
.github/workflows/build.yml
vendored
@@ -1,206 +1,72 @@
|
||||
---
|
||||
name: Build
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
gitRef:
|
||||
description: "Emacs git ref to build"
|
||||
git_ref:
|
||||
description: Emacs git ref to build
|
||||
required: true
|
||||
default: "master"
|
||||
extraPlanArgs:
|
||||
description: "Extra plan args"
|
||||
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: "master"
|
||||
builder_args:
|
||||
description: Custom arguments passed to build script
|
||||
required: false
|
||||
default: ""
|
||||
extraCheckArgs:
|
||||
description: "Extra check args"
|
||||
os:
|
||||
description: 'Runner OS ("macos-11", "macos-12", or "macos-latest")'
|
||||
required: true
|
||||
default: "macos-11"
|
||||
test_build_name:
|
||||
description: "Test build name"
|
||||
required: false
|
||||
default: ""
|
||||
extraBuildArgs:
|
||||
description: "Extra build args"
|
||||
required: false
|
||||
default: ""
|
||||
extraPackageArgs:
|
||||
description: "Extra package args"
|
||||
required: false
|
||||
default: ""
|
||||
extraReleaseArgs:
|
||||
description: "Extra release args"
|
||||
test_release_type:
|
||||
description: "prerelease or draft"
|
||||
required: false
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
plan:
|
||||
runs-on: macos-10.15
|
||||
outputs:
|
||||
check: "${{ steps.check.outcome }}"
|
||||
steps:
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: "v0.6.15"
|
||||
path: builder
|
||||
- uses: actions/setup-go@v2
|
||||
with:
|
||||
go-version: 1.16
|
||||
- uses: actions/cache@v2
|
||||
id: builder-cache
|
||||
with:
|
||||
path: ~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('builder/**/go.sum') }}
|
||||
restore-keys: ${{ runner.os }}-go-
|
||||
- name: Pre-build emacs-builder tool
|
||||
run: make build
|
||||
working-directory: builder
|
||||
- name: Plan build
|
||||
run: >-
|
||||
builder/bin/emacs-builder -l debug plan
|
||||
--output build-plan.yml
|
||||
--output-dir '${{ github.workspace }}/builds'
|
||||
${{ github.event.inputs.extraPlanArgs }}
|
||||
'${{ github.event.inputs.gitRef }}'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Show plan
|
||||
run: cat build-plan.yml
|
||||
- name: Check if planned release and asset already exist
|
||||
id: check
|
||||
continue-on-error: true
|
||||
run: >-
|
||||
builder/bin/emacs-builder -l debug release --plan build-plan.yml check
|
||||
${{ github.event.inputs.extraCheckArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Upload pre-built emacs-builder artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: emacs-builder
|
||||
path: builder/bin/emacs-builder
|
||||
if-no-files-found: error
|
||||
- name: Upload build-plan.yml artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: build-plan.yml
|
||||
if-no-files-found: error
|
||||
prepare:
|
||||
name: Prepare
|
||||
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
|
||||
with:
|
||||
builder_ref: ${{ github.event.inputs.builder_ref }}
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
|
||||
build:
|
||||
runs-on: macos-10.15
|
||||
needs: [plan]
|
||||
# Only run if check for existing release and asset failed.
|
||||
if: ${{ needs.plan.outputs.check == 'failure' }}
|
||||
steps:
|
||||
- name: Checkout build-emacs-for-macos repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: jimeh/build-emacs-for-macos
|
||||
ref: "v0.6.15"
|
||||
path: builder
|
||||
- uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: 2.7
|
||||
- name: Install dependencies
|
||||
run: make bootstrap-ci
|
||||
working-directory: builder
|
||||
- name: Download pre-built emacs-builder artifact
|
||||
uses: actions/download-artifact@v2
|
||||
id: builder
|
||||
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
|
||||
id: plan
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: ./
|
||||
- name: Build Emacs
|
||||
run: >-
|
||||
./builder/build-emacs-for-macos --plan build-plan.yml
|
||||
--no-relink-eln-files --native-full-aot --no-archive
|
||||
${{ github.event.inputs.extraBuildArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Install the Apple signing certificate
|
||||
run: |
|
||||
# create variables
|
||||
CERTIFICATE_PATH="$RUNNER_TEMP/build_certificate.p12"
|
||||
KEYCHAIN_PATH="$RUNNER_TEMP/app-signing.keychain-db"
|
||||
|
||||
# import certificate and provisioning profile from secrets
|
||||
echo -n "$CERT_BASE64" | base64 --decode --output "$CERTIFICATE_PATH"
|
||||
|
||||
# create temporary keychain
|
||||
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
|
||||
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
|
||||
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
|
||||
|
||||
# import certificate to keychain
|
||||
security import "$CERTIFICATE_PATH" -P "$CERT_PASSWORD" -A \
|
||||
-t cert -f pkcs12 -k "$KEYCHAIN_PATH"
|
||||
security list-keychain -d user -s "$KEYCHAIN_PATH"
|
||||
env:
|
||||
CERT_BASE64: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_P12_BASE64 }}
|
||||
CERT_PASSWORD: ${{ secrets.APPLE_DEVELOPER_CERTIFICATE_PASSWORD }}
|
||||
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
|
||||
- name: Sign, package and notarize build
|
||||
run: >-
|
||||
bin/emacs-builder -l debug package -v --plan build-plan.yml
|
||||
--sign --remove-source-dir
|
||||
${{ github.event.inputs.extraPackageArgs }}
|
||||
env:
|
||||
AC_USERNAME: ${{ secrets.AC_USERNAME }}
|
||||
AC_PASSWORD: ${{ secrets.AC_PASSWORD }}
|
||||
AC_PROVIDER: ${{ secrets.AC_PROVIDER }}
|
||||
AC_SIGN_IDENTITY: ${{ secrets.AC_SIGN_IDENTITY }}
|
||||
- name: Upload disk image artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: dmg
|
||||
path: |
|
||||
builds/*.dmg
|
||||
builds/*.sha*
|
||||
if-no-files-found: error
|
||||
- name: Clean up keychain used for signing certificate
|
||||
if: ${{ always() }}
|
||||
run: |
|
||||
security delete-keychain "$RUNNER_TEMP/app-signing.keychain-db"
|
||||
name: Build
|
||||
needs: [prepare]
|
||||
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
|
||||
with:
|
||||
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 }}
|
||||
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:
|
||||
runs-on: macos-10.15
|
||||
name: Release
|
||||
needs: [build]
|
||||
steps:
|
||||
- name: Download pre-built emacs-builder artifact
|
||||
uses: actions/download-artifact@v2
|
||||
id: builder
|
||||
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
|
||||
id: plan
|
||||
with:
|
||||
name: build-plan.yml
|
||||
path: ./
|
||||
- name: Download disk image artifact
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: dmg
|
||||
path: builds
|
||||
- name: Publish disk image to a GitHub Release
|
||||
run: >-
|
||||
bin/emacs-builder -l debug release --plan build-plan.yml publish
|
||||
${{ github.event.inputs.extraReleaseArgs }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Trigger update casks workflow in homebrew tap
|
||||
run: >-
|
||||
gh workflow run --repo jimeh/homebrew-emacs-builds update-casks.yml
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
|
||||
with:
|
||||
plan_artifact: build-plan
|
||||
dmg_artifact: dmg
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
|
||||
45
.github/workflows/nightly-emacs-28.yml
vendored
Normal file
45
.github/workflows/nightly-emacs-28.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: Nightly (emacs-28)
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
git_sha:
|
||||
description: Override Emacs git commit SHA to build
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
name: Prepare
|
||||
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
|
||||
build:
|
||||
name: Build
|
||||
needs: [prepare]
|
||||
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
|
||||
with:
|
||||
os: macos-11
|
||||
git_ref: emacs-28
|
||||
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:
|
||||
name: Release
|
||||
needs: [build]
|
||||
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
|
||||
with:
|
||||
plan_artifact: build-plan
|
||||
dmg_artifact: dmg
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
45
.github/workflows/nightly-master.yml
vendored
Normal file
45
.github/workflows/nightly-master.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
name: Nightly (master)
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
git_sha:
|
||||
description: Override Emacs git commit SHA to build
|
||||
required: false
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
name: Prepare
|
||||
uses: jimeh/emacs-builds/.github/workflows/_prepare.yml@main
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
|
||||
build:
|
||||
name: Build
|
||||
needs: [prepare]
|
||||
uses: jimeh/emacs-builds/.github/workflows/_build.yml@main
|
||||
with:
|
||||
os: macos-11
|
||||
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:
|
||||
name: Release
|
||||
needs: [build]
|
||||
uses: jimeh/emacs-builds/.github/workflows/_release.yml@main
|
||||
with:
|
||||
plan_artifact: build-plan
|
||||
dmg_artifact: dmg
|
||||
secrets:
|
||||
TAP_REPO_TOKEN: ${{ secrets.TAP_REPO_TOKEN }}
|
||||
35
.github/workflows/update-metadata.yml
vendored
Normal file
35
.github/workflows/update-metadata.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
name: Update Metadata
|
||||
concurrency: jimeh/emacs-builds/update-metadata
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0,12 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-metadata:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout tap repository main branch
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: meta
|
||||
- uses: actions/setup-go@v2
|
||||
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-
|
||||
- name: update total downloads shield JSON
|
||||
run: go run . badges downloads -o total-downloads/shield.json
|
||||
- name: commit and push changes to meta branch
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "chore(meta): update metadata files"
|
||||
commit_user_name: github-actions[bot]
|
||||
commit_user_email: github-actions[bot]@users.noreply.github.com
|
||||
commit_author: >-
|
||||
github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
||||
skip_dirty_check: false
|
||||
68
README.md
68
README.md
@@ -7,38 +7,26 @@
|
||||
</h1>
|
||||
|
||||
<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">
|
||||
<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/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/github/downloads/jimeh/emacs-builds/total?style=flat&logoColor=white&logo=data%3Aimage%2Fpng%3Bbase64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAEsmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjE0IgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMTQiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIxNCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTQiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjcyLjAiCiAgIHRpZmY6WVJlc29sdXRpb249IjcyLjAiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjEtMDUtMThUMDE6MjU6NTQrMDE6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjEtMDUtMThUMDE6MjU6NTQrMDE6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS45LjMiCiAgICAgIHN0RXZ0OndoZW49IjIwMjEtMDUtMThUMDE6MjU6NTQrMDE6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI%2FPnP7qIwAAAGBaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRzytEURTHP2aIGBEWFhaThtWM%2FKiJjTLSUJM0RhlsZp55M2rezOu9N2myVbaKEhu%2FFvwFbJW1UkRKdsqa2KDnPKNGMud27vnc773ndO%2B54IplFc2s7gUtZxnRcMg7G5%2Fz1j5SQwvQzEBCMfWRqakIFe3thionXgWcWpXP%2FWsNiylTgao64WFFNyzhceHIsqU7vCncpmQSi8LHwn5DLih87ejJEj85nC7xh8NGLDoKrmZhb%2FoXJ3%2BxkjE0YXk5Pi1bUH7u47zEk8rNTEvsFO%2FAJEqYEF4mGGOUIH0MyRwkQD89sqJCfu93%2FiR5yVVk1ilisESaDBZ%2BUQtSPSVRFT0lI0vR6f%2FfvprqQH%2BpuicENQ%2B2%2FdIFtRvwuW7b7%2Fu2%2FXkA7ns4y5Xz83sw%2BCr6elnz7ULTKpycl7XkFpyuQfudnjAS35Jb3KWq8HwEjXFovYT6%2BVLPfvY5vIXYinzVBWzvQLecb1r4AjtZZ9JRQIRfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhUlEQVQokb3QsQnDMBRF0Y9J6QGylCt7GI%2BRPdJ4BIMXyA4pM0KKk0YCYawogZAHH4Tuvw%2BhiEowY67xarBirfHu68afijjXFvesK8AQEXeMB9KU2HDU2GPDE2P%2BHEzpbkNfe04pP9K8lw7knLa0k69pPpP%2BFyzaWfL%2BqXAvEXFr9K%2F58AJFIbDLRt48DAAAAABJRU5ErkJggg%3D%3D&color=blue&label=total%20downloads">
|
||||
</a>
|
||||
<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/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>
|
||||
<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>
|
||||
</p>
|
||||
|
||||
<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.
|
||||
@@ -66,9 +54,8 @@
|
||||
|
||||
## 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
|
||||
|
||||
@@ -77,10 +64,10 @@
|
||||
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 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
|
||||
@@ -95,7 +82,17 @@ any issues.
|
||||
brew tap jimeh/emacs-builds
|
||||
```
|
||||
2. Install one of the available casks:
|
||||
- `emacs-app-nightly` for the latest nightly build:
|
||||
- `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:
|
||||
```
|
||||
brew install --cask emacs-app-nightly
|
||||
```
|
||||
@@ -103,10 +100,10 @@ any issues.
|
||||
```
|
||||
brew install --cask emacs-app-good
|
||||
```
|
||||
- `emacs-app` for the latest stable release of Emacs (does not include
|
||||
native-comp at time of writing):
|
||||
- `emacs-app-nightly-28` for the latest Emacs 28.x nightly build from the
|
||||
`emacs-28` branch:
|
||||
```
|
||||
brew install --cask emacs-app
|
||||
brew install --cask emacs-app-nightly-28
|
||||
```
|
||||
|
||||
[7]: https://github.com/jimeh/emacs-builds/issues/7
|
||||
@@ -150,8 +147,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
|
||||
@@ -159,6 +156,7 @@ 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user