Repository navigation
CI: compile every plugin's native sources on Xcode 26 and 27 - #33
Merged
Merged
Conversation
CI ran on Ubuntu and never compiled packages/*/watchos. In #12 a symbol declared only in the watchOS 27 SDK would have broken every Xcode 26 build with CI green (#17). tool/check_native_sources.sh compiles every tracked .m, .mm and .c the way the CLI does (clang -target arm64-apple-watchos26.0[-simulator] -fobjc-arc -fmodules -I<each header directory>), with -fsyntax-only, and type-checks SwiftUI view sources with swiftc and a copy of the CLI's registration shim (tool/native/plugin_views_shim.swift, CLI 0.1.1). An error or a warning fails; a deprecation is counted, as in_app_purchase_watchos uses StoreKit 1 on purpose. The four firebase packages, whose Package.swift names a SwiftPM package, are listed and skipped: only a SwiftPM build provides those modules. The new `native` job runs it on macos-26 with Xcode 26.0.1 and 26.6, and on xcode-27 with Xcode 27.0, then runs the check's own tests there. Its fixtures cover the plan (--list, also on Ubuntu), an undeclared symbol and a warning (fail), and a clean source with a deprecation and a view that uses the shim (pass). Locally, on plugins main, all 38 compiles are clean on Xcode 26.6 and 27.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #17.
Problem. CI ran on Ubuntu and never compiled
packages/*/watchos. In #12, a symbol declared only in the watchOS 27 SDK would have broken every Xcode 26 build while CI stayed green.The check.
tool/check_native_sources.shcompiles every tracked native source the way the CLI does, with-fsyntax-only, forarm64-apple-watchos26.0and its Simulator triple:.m,.mmand.cgo through clang with the CLI's flags:-fobjc-arc -fmodules -I<each header directory>.swiftc -typecheck, with a copy of the CLI's registration shim (tool/native/plugin_views_shim.swift, from CLI 0.1.1).Package.swiftnames a SwiftPM package, and only a SwiftPM build provides those modules (spec open question; not on every PR).The
nativejob runs the check onmacos-26with Xcode 26.0.1 (the oldest the CLI supports) and 26.6, and onxcode-27with Xcode 27.0. It then runs the check's own tests there. Their fixtures cover:--list, which also runs on Ubuntu;Local results. On
main, all 38 compiles (36 clang, 2 swiftc) are clean on Xcode 26.6 and 27.0. 159 tool tests pass, and the word, generated-files and test-name checks pass.