Conversation
…argets When an app depends on a cached framework target (at a different project path), and that target depends on a dynamic xcframework which depends on a static xcframework, the static xcframework's paths were incorrectly calculated relative to the cached target's project path instead of the app's project path. This fix: 1. Modifies GraphTraverser to also traverse target dependencies when looking for precompiled dynamic frameworks, ensuring xcframeworks are found through the entire dependency chain. 2. Prevents combining settings from target dependencies at different project paths, since path-based settings would be incorrect. Co-Authored-By: Claude Opus 4.5 <[email protected]>
🛠️ Tuist Run Report 🛠️Tests 🧪
Builds 🔨
|
…argets Instead of skipping settings from cached targets at different project paths, transform $(SRCROOT)-relative paths to be relative to the current target's project. This ensures proper path resolution for HEADER_SEARCH_PATHS, FRAMEWORK_SEARCH_PATHS, OTHER_C_FLAGS, and OTHER_SWIFT_FLAGS when depending on cached framework targets that have static xcframework dependencies. Co-Authored-By: Claude Opus 4.5 <[email protected]>
The fix is contained entirely in StaticXCFrameworkModuleMapGraphMapper. Co-Authored-By: Claude Opus 4.5 <[email protected]>
pepicrft
reviewed
Jan 22, 2026
| self == "-enable-experimental-feature" | ||
| } | ||
|
|
||
| fileprivate func resolvingSrcRootPath( |
Contributor
There was a problem hiding this comment.
Isn't there an API in AbsolutePath to calculate the relative path?
Member
Author
There was a problem hiding this comment.
Right, but the setting is a string, but I'm rewriting this a little bit.
pepicrft
approved these changes
Jan 22, 2026
Contributor
pepicrft
left a comment
There was a problem hiding this comment.
The code and test cases look accurate.
Co-Authored-By: Claude Opus 4.5 <[email protected]>
Address PR review feedback by using a more path-based approach instead of regex. The implementation now splits the string at $(SRCROOT)/, uses RelativePath and AbsolutePath APIs for the transformation, and reconstructs the string. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Fix bug where $(SRCROOT) wasn't found because it was prefixed with a quote character after splitting by /. Now properly handles the prefix and suffix around the SRCROOT marker. Co-Authored-By: Claude Opus 4.5 <[email protected]>
Switch lint job to namespace-profile-default-macos for faster execution. Co-Authored-By: Claude Opus 4.5 <[email protected]>
fortmarek
added a commit
that referenced
this pull request
Feb 19, 2026
PR #9446 (revert static framework resource embedding) accidentally removed the resolvingSrcRootPaths logic from PR #9203 that corrects $(SRCROOT)-relative paths when propagating settings from cached targets at different project paths. Without this fix, FRAMEWORK_SEARCH_PATHS and HEADER_SEARCH_PATHS for external static xcframeworks are computed relative to the cached target's location (.cache/tuist/Binaries/HASH/) instead of the consuming app's project directory, producing broken paths. Co-Authored-By: Claude Opus 4.6 <[email protected]>
2 tasks
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
HEADER_SEARCH_PATHSandFRAMEWORK_SEARCH_PATHSbeing generated when an app depends on a cached framework target at a different project pathChanges
GraphTraverser: Modified
precompiledDynamicLibrariesAndFrameworksto also traverse target dependencies when looking for precompiled dynamic frameworks. This ensures xcframeworks are found through the entire dependency chain, not just direct dependencies.StaticXCFrameworkModuleMapGraphMapper: Added a check to skip combining settings from target dependencies at different project paths, since path-based settings would be incorrect for the current target.
Test plan
test_map_when_static_xcframework_linked_via_target_with_dynamic_xcframework_dependencyto verify the fix🤖 Generated with Claude Code