mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-08-03 06:09:04 +00:00
build: Xcode 26, macOS Tahoe support (build tooling only)
This updates our build script and CI to support Xcode 26 and macOS Tahoe. **This doesn't update the Ghostty app to resolve any Tahoe issues.** For CI, we've added a new build job that runs on macOS Tahoe with Xcode 26. I've stopped short of updating our tip release job, since I think I want to wait until I verify a bit more about Tahoe before we flip that bit. Also, ideally, we'd run Xcode 26 on Sequoia (macOS 15) for stability reasons and Namespace doesn't have Xcode 26 on 15 yet. For builds, this updates our build script to find Metal binaries using `xcodebuild -find-executable` instead of `xcrun`. The latter doesn't work with Xcode 26, but the former does and also still works with older Xcodes. I'm not sure if this is a bug but I did report it: FB17874042.
This commit is contained in:
60
.github/workflows/test.yml
vendored
60
.github/workflows/test.yml
vendored
@@ -18,6 +18,7 @@ jobs:
|
||||
- build-nix
|
||||
- build-snap
|
||||
- build-macos
|
||||
- build-macos-tahoe
|
||||
- build-macos-matrix
|
||||
- build-windows
|
||||
- build-windows-cross
|
||||
@@ -284,7 +285,7 @@ jobs:
|
||||
name: ghostty
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: XCode Select
|
||||
- name: Xcode Select
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.0.app
|
||||
|
||||
- name: get the Zig deps
|
||||
@@ -296,7 +297,58 @@ jobs:
|
||||
- name: Build GhosttyKit
|
||||
run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }}
|
||||
|
||||
# The native app is built with native XCode tooling. This also does
|
||||
# The native app is built with native Xcode tooling. This also does
|
||||
# codesigning. IMPORTANT: this must NOT run in a Nix environment.
|
||||
# Nix breaks xcodebuild so this has to be run outside.
|
||||
- name: Build Ghostty.app
|
||||
run: cd macos && xcodebuild -target Ghostty
|
||||
|
||||
# Build the iOS target without code signing just to verify it works.
|
||||
- name: Build Ghostty iOS
|
||||
run: |
|
||||
cd macos
|
||||
xcodebuild -target Ghostty-iOS "CODE_SIGNING_ALLOWED=NO"
|
||||
|
||||
build-macos-tahoe:
|
||||
runs-on: namespace-profile-ghostty-macos-tahoe
|
||||
needs: test
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# TODO(tahoe): https://github.com/NixOS/nix/issues/13342
|
||||
- uses: DeterminateSystems/nix-installer-action@main
|
||||
with:
|
||||
determinate: true
|
||||
- uses: cachix/cachix-action@v16
|
||||
with:
|
||||
name: ghostty
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Xcode Select
|
||||
run: sudo xcode-select -s /Applications/Xcode_26.0.app
|
||||
|
||||
# TODO(tahoe):
|
||||
# https://developer.apple.com/documentation/xcode-release-notes/xcode-26-release-notes#Interface-Builder
|
||||
# We allow this step to fail because if our image already has
|
||||
# the workaround in place this will fail.
|
||||
- name: Xcode 26 Beta 17A5241e Metal Workaround
|
||||
continue-on-error: true
|
||||
run: |
|
||||
xcodebuild -downloadComponent metalToolchain -exportPath /tmp/MyMetalExport/
|
||||
sed -i '' -e 's/17A5241c/17A5241e/g' /tmp/MyMetalExport/MetalToolchain-17A5241c.exportedBundle/ExportMetadata.plist
|
||||
xcodebuild -importComponent metalToolchain -importPath /tmp/MyMetalExport/MetalToolchain-17A5241c.exportedBundle
|
||||
|
||||
- name: get the Zig deps
|
||||
id: deps
|
||||
run: nix build -L .#deps && echo "deps=$(readlink ./result)" >> $GITHUB_OUTPUT
|
||||
|
||||
# GhosttyKit is the framework that is built from Zig for our native
|
||||
# Mac app to access.
|
||||
- name: Build GhosttyKit
|
||||
run: nix develop -c zig build --system ${{ steps.deps.outputs.deps }}
|
||||
|
||||
# The native app is built with native Xcode tooling. This also does
|
||||
# codesigning. IMPORTANT: this must NOT run in a Nix environment.
|
||||
# Nix breaks xcodebuild so this has to be run outside.
|
||||
- name: Build Ghostty.app
|
||||
@@ -324,7 +376,7 @@ jobs:
|
||||
name: ghostty
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: XCode Select
|
||||
- name: Xcode Select
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.0.app
|
||||
|
||||
- name: get the Zig deps
|
||||
@@ -642,7 +694,7 @@ jobs:
|
||||
name: ghostty
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: XCode Select
|
||||
- name: Xcode Select
|
||||
run: sudo xcode-select -s /Applications/Xcode_16.0.app
|
||||
|
||||
- name: get the Zig deps
|
||||
|
||||
Reference in New Issue
Block a user