Repository navigation
deps: support Xcode 27 and iOS 27 - #1181
Merged
Merged
Conversation
Xcode 27 stopped defaulting the Swift language mode, so `swiftc` refuses to compile `coreml_util.swift` under `make WITH_APPLE=1` without one. The source does not depend on the mode; 6 is what Xcode 27 would choose. Reported by @freedomtan against Xcode 27.0 on macOS 27.0. (cherry picked from commit 056213c)
On iOS 27 UIKitCore raises a runtime issue when an app has not adopted the scene-based life cycle, which lands as a debugger trap (brk #0) and stops the app under LLDB. Declare a UIApplicationSceneManifest naming FlutterSceneDelegate in both Info plists, and move plugin registration off didFinishLaunchingWithOptions. Under the scene lifecycle the implicit engine is created after that call, so registering there would run against an engine that does not exist yet; FlutterImplicitEngineDelegate hands us the engine once it does. Both protocols are present in the Flutter pinned by CI (3.44.4). Reported by @freedomtan against iOS 27. (cherry picked from commit f4e8400)
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
Xcode Cloud does not always allocate the same machine. Build 272 ran on macOS 27.0 arm64 with brew at /opt/homebrew; build 273, an hour later on the same commit, ran on macOS 26.5.1 with brew resolved to the x86_64 install at /usr/local under Rosetta 2. Homebrew stopped building Intel bottles in September 2026. On that second machine bazelisk still had a bottle, but protobuf 36.2 had none and fell back to a source build that failed: clang: error: unsupported argument 'westmere' to option '-march=' Rosetta reports a westmere CPU that the native clang will not accept, so every formula without an Intel bottle will fail there from now on. Prefer /opt/homebrew when it exists, and log the resolved brew so the machine's architecture is visible in the log rather than inferred from a bottle name. This is a no-op on the arm64 image, which already uses it.
Xcode Cloud archives with Xcode 27 and only runs on master, so an Xcode 27 break is invisible until after merge. That is how swiftc refusing coreml_util without -swift-version reached master. - Move the two existing legs from macos-15 to macos-26. Newest Xcode there is 26.6 rather than 26.3, matching Xcode Cloud's other machine. - Add an apple-xcode27 leg on the xcode-27 image: macOS 27, Xcode 27.0 build 27A266a, the same build Xcode Cloud uses. - Select the newest Xcode 26.x or 27.x instead of requiring 26.x, which would fail on xcode-27; that image ships no Xcode 26. - Key the pods and bazel disk caches, the test package and the artifact on a new `label` rather than the backend, since two legs now build `apple`. - The new leg builds and unit-tests only. The test package and BrowserStack stay on the GA image. xcode-27 is still a GitHub preview with limited capacity, so the leg is continue-on-error: a queueing hiccup there must not block the BrowserStack jobs that need this one. Drop that once the image reaches GA.
|
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.



Xcode 27 and iOS 27 support, plus the CI changes that would have caught the breakage before master. The first two commits are cherry-picked from #1175; the rest come from reading the Xcode Cloud logs for builds 272 and 273.
eea9fe96) — swiftc refusescoreml_utilwithemitting module interface files requires '-language-mode'; Xcode 27 no longer defaults the language mode. The CoreMLswift_librarynow passes-swift-version 6. The source is mode-agnostic; 6 is what Xcode 27 would pick.fb2444c5) — UIKit traps when an app has not adopted the UIScene lifecycle. Both Info plists declareUIApplicationSceneManifestnamingFlutterSceneDelegate, and plugin registration moves toFlutterImplicitEngineDelegate, since the implicit engine does not exist duringdidFinishLaunchingWithOptions. Both protocols are in the pinned Flutter 3.44.4.9985b710) — build 273 landed on macOS 26.5.1 wherebrewresolves to the x86_64 install at/usr/localunder Rosetta 2. No Intel bottles since September 2026, soprotobufbuilt from source and died onclang: error: unsupported argument 'westmere' to option '-march='.ci_post_clone.shnow prefers/opt/homebrewand logs the resolved brew.f58e0326) — Xcode Cloud archives with Xcode 27 and runs only on master, so this class of break is invisible until after merge. The two existing legs move frommacos-15tomacos-26(newest Xcode 26.6 rather than 26.3), and a newapple-xcode27leg builds on thexcode-27image — Xcode 27.0 build 27A266a, the same build Xcode Cloud uses.Notes:
xcode-27is still a GitHub preview with limited capacity, so the leg iscontinue-on-error— a queueing hiccup must not block the BrowserStack jobs that depend on this one. Drop that when the image reaches GA.labelrather than the backend, since two legs buildapple. Existing check names are unchanged.