Hive Hive
Sign in

fix(cli): propagate package base settings to macro targets

GitHub issue · Closed

Metadata
Source
tuist/tuist #11574
Updated
Jul 5, 2026
Domains
Generated projects
Details

Resolves https://github.com/tuist/tuist/issues/11447

What changed

This pull request changes the Swift Package Manager package mapper so package-level base settings are merged into the settings generated for each package target before target-specific overrides are applied.

It also adds a regression test that maps a package with a macro target and verifies that MACOSX_DEPLOYMENT_TARGET from PackageSettings.baseSettings.base reaches the generated macro target.

Why

Xcode 27 beta surfaces macro target build issues when the deployment target setting defined through Tuist package settings is not propagated to package targets. Tuist was already applying these settings to regular targets in the broader package mapping path, but macro targets missed the package-level base dictionary.

Root cause

ProjectDescription.Settings.from(...) started from the generated platform and dependency settings and then merged target-specific base settings. It did not merge PackageSettings.baseSettings.base, so package-wide settings such as MACOSX_DEPLOYMENT_TARGET were dropped for Swift Package Manager targets produced through this path.

Approach

The mapper now merges package-level base settings into the generated base settings dictionary before applying target-specific settings. This keeps target-specific settings as the final override while making package-wide settings available to all mapped targets, including macro targets.

Impact

Projects that use package base settings to pin deployment targets or build settings now get those values on macro targets generated from Swift Package Manager packages. Existing target-specific settings keep precedence.

How to test locally

The change was validated with:

  • tuist install
  • tuist generate TuistLoaderTests --no-open
  • xcodebuild test -workspace Tuist.xcworkspace -scheme TuistUnitTests -only-testing TuistLoaderTests/PackageInfoMapperTests -parallel-testing-enabled NO CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY=""
  • git diff --check
Flights

Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.

New Flights are paused Configure model inference, GitHub, and a sandbox provider to start another Flight. Existing results remain available below.
No Flights yet

Start a Flight and preserve its objective, outcome, and session here.

Comments