From 74c9b7ea88d57b2fb373d2fa87b7dfdeb72904ed Mon Sep 17 00:00:00 2001 From: "torlando-agent[bot]" <281092095+torlando-agent[bot]@users.noreply.github.com> Date: Sun, 31 May 2026 21:16:30 -0400 Subject: [PATCH 1/2] ci: build on macos-26 (Xcode 26) so the Python scheme's module map resolves MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .github/workflows/tests.yml | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 63203c6..8957f97 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,7 +12,11 @@ concurrency: jobs: test: - runs-on: macos-15 + # macos-26 carries Xcode 26.x, which the embedded-Python (Columba) scheme + # needs — the Python.framework clang module map fails to resolve under + # Xcode 16.x ("module 'Python' … not defined in any loaded module map"), + # which is what devs build with locally (26.x). See the Select Xcode step. + runs-on: macos-26 steps: - uses: actions/checkout@v4 @@ -32,11 +36,26 @@ jobs: - name: Select Xcode run: | - XCODE=$(ls -d /Applications/Xcode_16*.app 2>/dev/null | sort -V | tail -1) + echo "Available Xcodes:"; ls -d /Applications/Xcode_*.app 2>/dev/null || true + # Pick the newest Xcode on the runner (was pinned to 16.x, which can't + # build the Python scheme — see runs-on comment). Version-sort so 26.x + # wins over 16.x regardless of exact point release. + XCODE=$(ls -d /Applications/Xcode_*.app 2>/dev/null | sort -V | tail -1) echo "Using $XCODE" sudo xcode-select -s "$XCODE" xcodebuild -version + # Resolve the local Swift packages (reticulum-swift / LXMF-swift / LXST-swift) + # once, up front. Without this the `xcodebuild test` action can intermittently + # fail to resolve LXMFSwift/ReticulumSwift for the ColumbaAppTests target even + # though the app build steps resolved them fine — a fresh-runner resolution + # race. One explicit resolve makes every later build/test step reuse it. + - name: Resolve Swift packages + run: | + xcodebuild -resolvePackageDependencies \ + -project Columba.xcodeproj \ + -scheme Columba + - name: Find simulator id: sim run: | From a54c60248752c0e1d36150bb3c764787b9c2400d Mon Sep 17 00:00:00 2001 From: "torlando-agent[bot]" <281092095+torlando-agent[bot]@users.noreply.github.com> Date: Sun, 31 May 2026 21:28:05 -0400 Subject: [PATCH 2/2] address greptile review feedback (greploop iteration 1) Resolve Swift packages for both Columba and Columba-Swift schemes so the Swift-native build step also benefits from the pre-warm (same sibling packages, but explicit removes any doubt). Co-Authored-By: Claude Opus 4.8 --- .github/workflows/tests.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8957f97..8110a73 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -52,9 +52,14 @@ jobs: # race. One explicit resolve makes every later build/test step reuse it. - name: Resolve Swift packages run: | + # Pre-warm both schemes' package deps (same sibling packages, same + # .xcodeproj, but be explicit so the Swift-native build benefits too). xcodebuild -resolvePackageDependencies \ -project Columba.xcodeproj \ -scheme Columba + xcodebuild -resolvePackageDependencies \ + -project Columba.xcodeproj \ + -scheme Columba-Swift - name: Find simulator id: sim