Skip to content

Conversation

@adincebic
Copy link
Contributor

This is necessary to ensure that these binaries run correctly when using APIs like Span that are back-deployed on older OSes. Since the swift_* rules don't do bundling of their own, we simply point to the libraries in the toolchain itself (using the xcode-select-dependent symlinks, as we were already doing for tests). To actually distribute such a binary, it's the responsibility of the user to include the required dylibs with it (or, better, use a rule from rules_apple to perform the bundling).

I've explicitly ignored the swift-5.0 and swift-5.5 directory since we have no plans to deploy anything from these rules to such old OSes.

Cherry pick: 2f5aa6e6a3dae09293c9b35ff3cc5795fef279e7

@adincebic adincebic force-pushed the adin/add-rpaths-for-compatibility-libraries branch 2 times, most recently from 79ec157 to e5cb71d Compare October 12, 2025 08:02
@adincebic adincebic marked this pull request as draft October 12, 2025 08:02
@adincebic adincebic force-pushed the adin/add-rpaths-for-compatibility-libraries branch 2 times, most recently from 5268063 to 417a2c1 Compare October 14, 2025 14:43
@adincebic adincebic marked this pull request as ready for review October 14, 2025 14:52
@adincebic adincebic force-pushed the adin/add-rpaths-for-compatibility-libraries branch from 417a2c1 to 45cfece Compare October 17, 2025 20:43
Comment on lines 344 to 366
linkopts.extend([
"-F{}".format(platform_developer_framework_dir),
"-L{}".format(
swift_developer_lib_dir([
struct(
developer_path_label = "platform",
path = platform_developer_framework_dir,
),
]),
),
])

# We use these as the rpaths for linking tests so that the required
# libraries are found if Xcode is installed in a different location on the
# machine that runs the tests than the machine used to link them.
for developer_dir in _DEVELOPER_DIR_SYMLINKS:
platform_developer_framework_dir_symlink = paths.join(
developer_dir,
"Platforms",
"{}.platform".format(
target_triples.bazel_apple_platform(target_triple).name_in_plist,
),
"Developer/Library/Frameworks",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this change coming from im not seeing it in upstream commit you linked

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I must have picked it when resolving conflicts.

allevato and others added 2 commits October 24, 2025 16:14
…s to binaries built with `swift_{binary, compiler_plugin, test}`.

This is necessary to ensure that these binaries run correctly when using APIs like `Span` that are back-deployed on older OSes. Since the `swift_*` rules don't do bundling of their own, we simply point to the libraries in the toolchain itself (using the `xcode-select`-dependent symlinks, as we were already doing for tests). To actually distribute such a binary, it's the responsibility of the user to include the required dylibs with it (or, better, use a rule from rules_apple to perform the bundling).

I've explicitly ignored the swift-5.0 and swift-5.5 directory since we have no plans to deploy anything from these rules to such old OSes.

PiperOrigin-RevId: 817593332
(cherry picked from commit 2f5aa6e)
@adincebic adincebic force-pushed the adin/add-rpaths-for-compatibility-libraries branch from 2ef19e8 to 37135ea Compare October 24, 2025 14:14
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.

3 participants