aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2017-12-04 11:39:33 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-04 11:41:29 -0800
commitbb406b9b2f7b44d96cd5d0d1202503c19e0e6480 (patch)
tree0ab446cbb08ebc9ccc7f55decda0e2e0663914ab /src/main/java/com/google/devtools/build/lib
parentb4ba96f52a0cadcbfdf0cc56055ed61768b191f2 (diff)
Expose ObjcProtoProvider as a Skylark object.
This does not provide any meaningful API to interact with ObjcProtoProvider from a skylark context -- it simply allows ObjcProtoProvider to be passed between skylark API calls as an opaque object. This helps facilitate exposure of an Apple Linking API to Skylark which will take place in future changes. RELNOTES: None. PiperOrigin-RevId: 177844029
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoProvider.java13
6 files changed, 20 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 8b8a27ea8e..54b1072112 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -85,7 +85,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
Mode.SPLIT, CcLinkParamsInfo.PROVIDER);
Iterable<ObjcProtoProvider> avoidProtoProviders =
ruleContext.getPrerequisites(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME, Mode.TARGET,
- ObjcProtoProvider.class);
+ ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
NestedSet<Artifact> protosToAvoid = protoArtifactsToAvoid(avoidProtoProviders);
Map<BuildConfiguration, CcToolchainProvider> childConfigurationsAndToolchains =
@@ -103,7 +103,8 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
ImmutableListMultimap<BuildConfiguration, ObjcProtoProvider> objcProtoProvidersMap =
- ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT, ObjcProtoProvider.class);
+ ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT,
+ ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
Map<String, NestedSet<Artifact>> outputGroupCollector = new TreeMap<>();
for (Entry<BuildConfiguration, CcToolchainProvider> childConfigAndToolchain :
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
index 9b5d87a897..436a2aa3d0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
@@ -89,7 +89,7 @@ public final class IosTest implements RuleConfiguredTargetFactory {
+ "(https://github.com/bazelbuild/rules_apple) to build Apple targets.");
Iterable<ObjcProtoProvider> objcProtoProviders =
- ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.class);
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
ProtobufSupport protoSupport =
new ProtobufSupport(
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 5f2785114d..d2b5be83bd 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
@@ -222,7 +222,7 @@ public class MultiArchBinarySupport {
throws RuleErrorException, InterruptedException {
Iterable<ObjcProvider> dylibObjcProviders = getDylibObjcProviders(dylibProviders);
Iterable<ObjcProtoProvider> dylibProtoProviders =
- getTypedProviders(dylibProviders, ObjcProtoProvider.class);
+ getTypedProviders(dylibProviders, ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
NestedSet<Artifact> protosToAvoid = protoArtifactsToAvoid(dylibProtoProviders);
ImmutableSet.Builder<DependencySpecificConfiguration> childInfoBuilder = ImmutableSet.builder();
@@ -230,7 +230,7 @@ public class MultiArchBinarySupport {
Iterable<TransitiveInfoCollection> infoCollections =
configToDepsCollectionMap.get(childConfig);
Iterable<ObjcProtoProvider> depProtoProviders =
- getTypedProviders(infoCollections, ObjcProtoProvider.class);
+ getTypedProviders(infoCollections, ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
Optional<ObjcProvider> protosObjcProvider;
if (ObjcRuleClasses.objcConfiguration(ruleContext).enableAppleBinaryNativeProtos()) {
ProtobufSupport protoSupport =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
index 5d74c1bf94..5143484b0a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
@@ -56,7 +56,7 @@ public class ObjcProtoAspect extends NativeAspectClass implements ConfiguredAspe
if (ruleContext.attributes().has("deps", BuildType.LABEL_LIST)) {
Iterable<ObjcProtoProvider> depObjcProtoProviders =
- ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.class);
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
aspectObjcProtoProvider.addTransitive(depObjcProtoProviders);
}
@@ -105,7 +105,7 @@ public class ObjcProtoAspect extends NativeAspectClass implements ConfiguredAspe
// Only add the provider if it has any values, otherwise skip it.
if (!aspectObjcProtoProvider.isEmpty()) {
- aspectBuilder.addProvider(aspectObjcProtoProvider.build());
+ aspectBuilder.addNativeDeclaredProvider(aspectObjcProtoProvider.build());
}
return aspectBuilder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
index 5a3f00553a..5fa5a1d198 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
@@ -43,7 +43,7 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory {
ruleContext.getPrerequisites("deps", Mode.TARGET, ProtoSourcesProvider.class);
Iterable<ObjcProtoProvider> objcProtoProviders =
- ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.class);
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProtoProvider.SKYLARK_CONSTRUCTOR);
ProtobufSupport protoSupport =
new ProtobufSupport(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoProvider.java
index b8dd834ff0..2401682a7f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoProvider.java
@@ -16,9 +16,10 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.packages.NativeProvider;
import com.google.devtools.build.lib.vfs.PathFragment;
/**
@@ -38,7 +39,14 @@ import com.google.devtools.build.lib.vfs.PathFragment;
* all the time (whether protos are used or not), the dependency is specified on objc_proto_library
* instead.
*/
-public class ObjcProtoProvider implements TransitiveInfoProvider {
+public class ObjcProtoProvider extends NativeInfo {
+
+ /** Skylark name for the ObjcProtoProvider. */
+ public static final String SKYLARK_NAME = "ObjcProto";
+
+ /** Skylark constructor and identifier for AppleExecutableBinaryProvider. */
+ public static final NativeProvider<ObjcProtoProvider> SKYLARK_CONSTRUCTOR =
+ new NativeProvider<ObjcProtoProvider>(ObjcProtoProvider.class, SKYLARK_NAME) {};
private final NestedSet<NestedSet<Artifact>> protoGroups;
private final NestedSet<Artifact> protobufHeaders;
@@ -50,6 +58,7 @@ public class ObjcProtoProvider implements TransitiveInfoProvider {
NestedSet<Artifact> portableProtoFilters,
NestedSet<Artifact> protobufHeaders,
NestedSet<PathFragment> protobufHeaderSearchPaths) {
+ super(SKYLARK_CONSTRUCTOR);
this.protoGroups = Preconditions.checkNotNull(protoGroups);
this.portableProtoFilters = Preconditions.checkNotNull(portableProtoFilters);
this.protobufHeaders = Preconditions.checkNotNull(protobufHeaders);