aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2017-12-04 13:50:52 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-04 13:52:30 -0800
commit8bec8dd9096d090fd16da405e90125ae04da4c9b (patch)
treed823c412be32689954ddfa27614c5a8e01a1a527
parentba66e72295d763e43b92179ce6bd46476084a548 (diff)
From apple_binary, receive AppleExecutableBinaryProvider from the bundle_loader attribute
Prior to this change, apple_binary relied on bundle_loader targets (which are themselves apple_binary) to propagate an unwrapped ObjcProvider. That is deprecated, is disabled by --noexperimental_objc_provider_from_linked, and will be killed off shortly. RELNOTES: None. PiperOrigin-RevId: 177862573
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java20
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java8
5 files changed, 37 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index d2b5be83bd..71a8a7fb6f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -282,13 +282,20 @@ public class MultiArchBinarySupport {
private static Iterable<ObjcProvider> getDylibObjcProviders(
Iterable<TransitiveInfoCollection> transitiveInfoCollections) {
+ // Dylibs.
Iterable<ObjcProvider> frameworkObjcProviders =
Streams.stream(getTypedProviders(transitiveInfoCollections,
AppleDynamicFrameworkProvider.SKYLARK_CONSTRUCTOR))
.map(frameworkProvider -> frameworkProvider.getDepsObjcProvider())
.collect(ImmutableList.toImmutableList());
+ // Bundle Loaders.
+ Iterable<ObjcProvider> executableObjcProviders =
+ Streams.stream(getTypedProviders(transitiveInfoCollections,
+ AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR))
+ .map(frameworkProvider -> frameworkProvider.getDepsObjcProvider())
+ .collect(ImmutableList.toImmutableList());
- return Iterables.concat(frameworkObjcProviders,
+ return Iterables.concat(frameworkObjcProviders, executableObjcProviders,
getTypedProviders(transitiveInfoCollections, ObjcProvider.SKYLARK_CONSTRUCTOR));
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 63c7abcb3b..8fe598b529 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -121,7 +121,8 @@ public class AppleStaticLibraryTest extends ObjcRuleTestCase {
" resources = [':avoid.png']",
")");
- ObjcProvider provider = providerForTarget("//package:test");
+ ObjcProvider provider = getConfiguredTarget("//package:test")
+ .get(AppleStaticLibraryProvider.SKYLARK_CONSTRUCTOR).getDepsObjcProvider();
// Do not remove SDK_FRAMEWORK values in avoid_deps.
assertThat(provider.get(ObjcProvider.SDK_FRAMEWORK))
.containsAllOf(new SdkFramework("AvoidSDK"), new SdkFramework("BaseSDK"));
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
index 3894f64224..955ce658a7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
@@ -504,7 +504,8 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
.addAll(FASTBUILD_COPTS)
.addAll(
ObjcLibraryTest.iquoteArgs(
- binaryTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR), getTargetConfiguration()))
+ providerForTarget("//package:opl_binary"),
+ getTargetConfiguration()))
.add("-I")
.add(sourceFile.getExecPath().getParentDirectory().getParentDirectory().toString())
.add("-fno-objc-arc")
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index a51ddb6fc0..38740996f1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -352,6 +352,10 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
.add("--apple_crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL)
.add("--crosstool_top=" + MockObjcSupport.DEFAULT_OSX_CROSSTOOL);
+ // TODO(b/32411441): This flag will be flipped off by default imminently, at which point
+ // this can be removed. The flag itself is for safe rollout of a backwards incompatible change.
+ extraArgsBuilder.add("--noexperimental_objc_provider_from_linked");
+
ImmutableList<String> extraArgs = extraArgsBuilder.build();
args = Arrays.copyOf(args, args.length + extraArgs.size());
for (int i = 0; i < extraArgs.size(); i++) {
@@ -1045,7 +1049,21 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
}
protected ObjcProvider providerForTarget(String label) throws Exception {
- return getConfiguredTarget(label).get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+ ObjcProvider objcProvider = getConfiguredTarget(label).get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+ if (objcProvider != null) {
+ return objcProvider;
+ }
+ AppleExecutableBinaryProvider executableProvider =
+ getConfiguredTarget(label).get(AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
+ if (executableProvider != null) {
+ return executableProvider.getDepsObjcProvider();
+ }
+ AppleDylibBinaryProvider dylibProvider =
+ getConfiguredTarget(label).get(AppleDylibBinaryProvider.SKYLARK_CONSTRUCTOR);
+ if (dylibProvider != null) {
+ return dylibProvider.getDepsObjcProvider();
+ }
+ return null;
}
protected CommandAction archiveAction(String label) throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
index f2b301dcd7..e434456d7e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
@@ -204,7 +204,9 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
")");
ConfiguredTarget binaryTarget = getConfiguredTarget("//examples/apple_skylark:bin");
- ObjcProvider objcProvider = binaryTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+ AppleExecutableBinaryProvider executableProvider =
+ binaryTarget.get(AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
+ ObjcProvider objcProvider = executableProvider.getDepsObjcProvider();
assertThat(Artifact.toRootRelativePaths(objcProvider.get(ObjcProvider.LIBRARY)))
.contains("examples/apple_skylark/liblib.a");
@@ -242,7 +244,9 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
")");
ConfiguredTarget binaryTarget = getConfiguredTarget("//examples/apple_skylark:bin");
- ObjcProvider objcProvider = binaryTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+ AppleExecutableBinaryProvider executableProvider =
+ binaryTarget.get(AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
+ ObjcProvider objcProvider = executableProvider.getDepsObjcProvider();
assertThat(objcProvider.get(ObjcProvider.DEFINE)).contains("mock_define");
}