Skip to content

Pick the IssueReporting package identity by toolchain; declare the ConcurrencyExtras dependency - #77

Merged
mansbernhardt merged 1 commit into
mainfrom
fix/issue-reporting-identity-swift-6.4
Sep 14, 2026
Merged

mansbernhardt merged 1 commit into
mainfrom
fix/issue-reporting-identity-swift-6.4

Conversation

@mansbernhardt

Copy link
Copy Markdown
Collaborator

Summary

Two manifest-only fixes for consumers building with Xcode 27 / Swift 6.4, surfaced by parallel-phoenix-apple's Xcode 27 CI:

  • IssueReporting identity. pointfreeco split xctest-dynamic-overlay into swift-issue-reporting (2.x) and kept the old repo as a shim whose 6.4 manifest re-exports a product also named IssueReporting. Their libraries pick the URL by tools version (Package@swift-6.3.swiftxctest-dynamic-overlay; Package.swift (6.4) → swift-issue-reporting). swift-model's unconditional xctest-dynamic-overlay declaration 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-reporting from 2.1.0 — first tag of the split repo; xctest-dynamic-overlay from 1.11.0 unchanged — the OMIT_DYNAMIC_TEST_SUPPORT floor the WASM job relies on, which 2.1.0 also carries).
  • Undeclared ConcurrencyExtras import. SwiftModel imports ConcurrencyExtras (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 the SwiftModel target; 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).
  • Resolved graph on 6.4 contains swift-issue-reporting only (no xctest-dynamic-overlay pin); on 6.3 resolves exactly as today (xctest-dynamic-overlay 1.13.1).
  • Full suite 869/869 on both Xcode 26 and Xcode 27.
  • parallel-phoenix-apple's StudioPreview and StreamsApp schemes build on Xcode 27 against the patched package (reported by that session).
  • CI's Linux/Android/WASM lanes run swift:6.3.0 and macOS xcode-version: latest (currently 26.x), so CI exercises the < 6.4 arm, i.e. today's resolution — unchanged.

🤖 Generated with Claude Code

…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>
@mansbernhardt
mansbernhardt merged commit 45ccc71 into main Sep 14, 2026
7 checks passed
@mansbernhardt
mansbernhardt deleted the fix/issue-reporting-identity-swift-6.4 branch September 14, 2026 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant