Pick the IssueReporting package identity by toolchain; declare the ConcurrencyExtras dependency - #77
Merged
Conversation
…ncurrencyExtras dependency Two manifest-only fixes for consumers building with Xcode 27 / Swift 6.4: - pointfreeco split `xctest-dynamic-overlay` into `swift-issue-reporting` and their libraries select the URL by tools version (< 6.4 → the shim, 6.4+ → swift-issue-reporting). swift-model's unconditional `xctest-dynamic-overlay` declaration kept a second identity in every 6.4 consumer's graph, and Xcode names dynamic package-product frameworks after the product, so an app embedding package products dynamically got "Multiple commands produce IssueReporting_…_PackageProduct.framework". Mirror pointfree's manifests with a `#if compiler(>=6.4)` switch; < 6.4 toolchains resolve exactly as before. - `SwiftModel` imports `ConcurrencyExtras` but reached it only transitively via swift-dependencies. Xcode 27 links each package product only against what its target declares, so the SwiftModel framework link failed with undefined ConcurrencyExtras symbols. Declare it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Summary
Two manifest-only fixes for consumers building with Xcode 27 / Swift 6.4, surfaced by parallel-phoenix-apple's Xcode 27 CI:
xctest-dynamic-overlayintoswift-issue-reporting(2.x) and kept the old repo as a shim whose 6.4 manifest re-exports a product also namedIssueReporting. Their libraries pick the URL by tools version (Package@swift-6.3.swift→xctest-dynamic-overlay;Package.swift(6.4) →swift-issue-reporting). swift-model's unconditionalxctest-dynamic-overlaydeclaration kept a second identity in every 6.4 consumer's graph; Xcode names dynamic package-product frameworks after the product, so apps embedding package products dynamically got 18×Multiple commands produce '…/IssueReporting_…_PackageProduct.framework'. The manifest now mirrors pointfree's own with a#if compiler(>=6.4)switch (swift-issue-reportingfrom 2.1.0 — first tag of the split repo;xctest-dynamic-overlayfrom 1.11.0 unchanged — theOMIT_DYNAMIC_TEST_SUPPORTfloor the WASM job relies on, which 2.1.0 also carries).ConcurrencyExtrasimport.SwiftModelimportsConcurrencyExtras(Internal/TestExpect.swift) but only reached it transitively via swift-dependencies. Xcode 27 links each package product only against what its target declares →Undefined symbols … ConcurrencyExtras.AnyHashableSendable … referenced from SwiftModel.o. Now declared on theSwiftModeltarget; already in the graph, nothing new fetched.Verification
swift package dump-package: Xcode 26 (6.3.3) →xctest-dynamic-overlay[1.11.0, 2.0.0); Xcode 27 (6.4) →swift-issue-reporting[2.1.0, 3.0.0).swift-issue-reportingonly (noxctest-dynamic-overlaypin); on 6.3 resolves exactly as today (xctest-dynamic-overlay1.13.1).StudioPreviewandStreamsAppschemes build on Xcode 27 against the patched package (reported by that session).swift:6.3.0and macOSxcode-version: latest(currently 26.x), so CI exercises the< 6.4arm, i.e. today's resolution — unchanged.🤖 Generated with Claude Code