Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix alwayslink in objc_import #15313

Closed

Conversation

kersson
Copy link

@kersson kersson commented Apr 21, 2022

When ObjcCommon was rewritten in Starlark in 4a0cc3b the archives list from objc_import (passed in via extra_import_libraries) got dropped from the force_load_library list in objc_provider.

This fix adds them back so -force_load is correctly applied when alwayslink is set.

Here is the original Java implementation for reference:

if (alwayslink) {
for (CompilationArtifacts artifacts : compilationArtifacts.asSet()) {
for (Artifact archive : artifacts.getArchive().asSet()) {
objcProvider.add(FORCE_LOAD_LIBRARY, archive);
}
}
for (Artifact archive : extraImportLibraries) {
objcProvider.add(FORCE_LOAD_LIBRARY, archive);
}
}

This for loop is what was omitted in the rewrite and is what is added in this PR:

for (Artifact archive : extraImportLibraries) { 
  objcProvider.add(FORCE_LOAD_LIBRARY, archive); 
}

When ObjcCommon was rewritten in Starlark in 4a0cc3b
the `archives` list from objc_import (passed in via
`extra_import_libraries`) got dropped from the `force_load_library` list
in objc_provider. This commit adds them back so `-force_load` is
correctly applied when `alwayslink` is set.
@kersson
Copy link
Author

kersson commented Jun 14, 2022

Any chance we can get this reviewed soon? Hopefully, this is a very straightforward fix. Let me know if you have questions!

@googlewalt
Copy link
Contributor

Sorry for the delay. I'll review and import it.

@brentleyjones
Copy link
Contributor

@bazel-io flag

@bazel-io bazel-io added the potential release blocker Flagged by community members using "@bazel-io flag". Should be added to a release blocker milestone label Jun 15, 2022
@ckolli5
Copy link

ckolli5 commented Jun 17, 2022

@bazel-io fork 5.3.0

@bazel-io bazel-io removed the potential release blocker Flagged by community members using "@bazel-io flag". Should be added to a release blocker milestone label Jun 17, 2022
ckolli5 added a commit that referenced this pull request Jun 22, 2022
When `ObjcCommon` was rewritten in Starlark in 4a0cc3b the `archives` list from `objc_import` (passed in via `extra_import_libraries`) got dropped from the `force_load_library` list in `objc_provider`.

This fix adds them back so `-force_load` is correctly applied when `alwayslink` is set.

Here is the original Java implementation for reference:
https://github.com/bazelbuild/bazel/blob/4a0cc3b3f297f8df60022ae977e170148a4c7ae4/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java#L415-L424

This `for` loop is what was omitted in the rewrite and is what is added in this PR:
```java
for (Artifact archive : extraImportLibraries) {
  objcProvider.add(FORCE_LOAD_LIBRARY, archive);
}
```

Closes #15313.

PiperOrigin-RevId: 455164591
Change-Id: Icc0a5aab26ec150475d82b57549b263418776141

Co-authored-by: Krishna Ersson <kersson@butterflynetinc.com>
aranguyen pushed a commit to aranguyen/bazel that referenced this pull request Jun 27, 2022
When `ObjcCommon` was rewritten in Starlark in 4a0cc3b the `archives` list from `objc_import` (passed in via `extra_import_libraries`) got dropped from the `force_load_library` list in `objc_provider`.

This fix adds them back so `-force_load` is correctly applied when `alwayslink` is set.

Here is the original Java implementation for reference:
https://github.com/bazelbuild/bazel/blob/4a0cc3b3f297f8df60022ae977e170148a4c7ae4/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java#L415-L424

This `for` loop is what was omitted in the rewrite and is what is added in this PR:
```java
for (Artifact archive : extraImportLibraries) {
  objcProvider.add(FORCE_LOAD_LIBRARY, archive);
}
```

Closes bazelbuild#15313.

PiperOrigin-RevId: 455164591
Change-Id: Icc0a5aab26ec150475d82b57549b263418776141
@ShreeM01 ShreeM01 removed the awaiting-review PR is awaiting review from an assigned reviewer label Sep 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team-Rules-ObjC Issues for Objective-C maintainers
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants