Skip to content

Commit 74c9b7e

Browse files
ci: build on macos-26 (Xcode 26) so the Python scheme's module map resolves
main's CI has been red since the dual-backend merge: the Build (Python backend) step fails precompiling ColumbaApp's bridging header with 'module Python … clang importer creation failed' (exit 65). The embedded- Python (Columba) scheme's Python.framework clang module map only resolves under Xcode 26.x; the runner was pinned to macos-15/Xcode 16. The fix lived on the combined #82 branch, which was closed (not merged) — so it was stranded, like the interop-harness fixes. - runs-on: macos-15 -> macos-26 (Xcode 26.x). - Select Xcode: pick newest (Xcode_*) instead of Xcode_16* so 26.x wins. - Add an explicit 'Resolve Swift packages' step to avoid the fresh-runner package-resolution race for the test target. Recovered verbatim from origin/feat/dual-backend-arch (#82). Fixes CI for main and unblocks the other open PRs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 196c9ab commit 74c9b7e

1 file changed

Lines changed: 21 additions & 2 deletions

File tree

.github/workflows/tests.yml

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ concurrency:
1212

1313
jobs:
1414
test:
15-
runs-on: macos-15
15+
# macos-26 carries Xcode 26.x, which the embedded-Python (Columba) scheme
16+
# needs — the Python.framework clang module map fails to resolve under
17+
# Xcode 16.x ("module 'Python' … not defined in any loaded module map"),
18+
# which is what devs build with locally (26.x). See the Select Xcode step.
19+
runs-on: macos-26
1620
steps:
1721
- uses: actions/checkout@v4
1822

@@ -32,11 +36,26 @@ jobs:
3236
3337
- name: Select Xcode
3438
run: |
35-
XCODE=$(ls -d /Applications/Xcode_16*.app 2>/dev/null | sort -V | tail -1)
39+
echo "Available Xcodes:"; ls -d /Applications/Xcode_*.app 2>/dev/null || true
40+
# Pick the newest Xcode on the runner (was pinned to 16.x, which can't
41+
# build the Python scheme — see runs-on comment). Version-sort so 26.x
42+
# wins over 16.x regardless of exact point release.
43+
XCODE=$(ls -d /Applications/Xcode_*.app 2>/dev/null | sort -V | tail -1)
3644
echo "Using $XCODE"
3745
sudo xcode-select -s "$XCODE"
3846
xcodebuild -version
3947
48+
# Resolve the local Swift packages (reticulum-swift / LXMF-swift / LXST-swift)
49+
# once, up front. Without this the `xcodebuild test` action can intermittently
50+
# fail to resolve LXMFSwift/ReticulumSwift for the ColumbaAppTests target even
51+
# though the app build steps resolved them fine — a fresh-runner resolution
52+
# race. One explicit resolve makes every later build/test step reuse it.
53+
- name: Resolve Swift packages
54+
run: |
55+
xcodebuild -resolvePackageDependencies \
56+
-project Columba.xcodeproj \
57+
-scheme Columba
58+
4059
- name: Find simulator
4160
id: sim
4261
run: |

0 commit comments

Comments
 (0)