aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-07-17 14:24:30 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-17 14:25:47 -0700
commit27e81776f6dd684aca01c1066216a3c127821da5 (patch)
treefb035b41aebd8397320ebfd3a636b39d2fe2c131 /src/main/java/com/google/devtools/build/lib/rules/java
parent86e007fdeced120cda3108e97044db4fd817d5f0 (diff)
Expose ProguardSpecProvider to skylark.
RELNOTES: None PiperOrigin-RevId: 204974291
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ProguardHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java34
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java7
6 files changed, 37 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index e09e95a663..c8e9e97308 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -158,7 +158,7 @@ public class JavaImport implements RuleConfiguredTargetFactory {
JavaNativeLibraryProvider.class,
new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
.add(JavaSourceInfoProvider.class, javaSourceInfoProvider)
- .add(ProguardSpecProvider.class, new ProguardSpecProvider(proguardSpecs))
+ .addNativeDeclaredProvider(new ProguardSpecProvider(proguardSpecs))
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveJavaSourceJars)
.addOutputGroup(OutputGroupInfo.HIDDEN_TOP_LEVEL, proguardSpecs)
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index c40d186e19..f71a1bde3b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -215,12 +215,11 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
.setFilesToBuild(filesToBuild)
.addProvider(new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
.addProvider(JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
- .addProvider(new ProguardSpecProvider(proguardSpecs))
+ .addNativeDeclaredProvider(new ProguardSpecProvider(proguardSpecs))
.addNativeDeclaredProvider(javaInfo)
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveSourceJars)
.addOutputGroup(OutputGroupInfo.HIDDEN_TOP_LEVEL, proguardSpecs);
-
if (ruleContext.hasErrors()) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardHelper.java
index 7328701eb7..4c27def83d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardHelper.java
@@ -253,7 +253,7 @@ public abstract class ProguardHelper {
ruleContext.attributes().has(PROGUARD_SPECS, BuildType.LABEL_LIST)
? ruleContext.getPrerequisiteArtifacts(PROGUARD_SPECS, Mode.TARGET).list()
: ImmutableList.<Artifact>of(),
- ruleContext.getPrerequisites("deps", Mode.TARGET, ProguardSpecProvider.class));
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ProguardSpecProvider.PROVIDER));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
index 0cdc265a31..f2c1cb4c9c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
@@ -106,7 +106,7 @@ public final class ProguardLibrary {
}
NestedSetBuilder<Artifact> dependencySpecsBuilder = NestedSetBuilder.naiveLinkOrder();
for (ProguardSpecProvider provider :
- ruleContext.getPrerequisites(attributeName, mode, ProguardSpecProvider.class)) {
+ ruleContext.getPrerequisites(attributeName, mode, ProguardSpecProvider.PROVIDER)) {
dependencySpecsBuilder.addTransitive(provider.getTransitiveProguardSpecs());
}
return dependencySpecsBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
index 0db1e3371e..79f1c69fad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardSpecProvider.java
@@ -14,23 +14,30 @@
package com.google.devtools.build.lib.rules.java;
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.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.skylarkbuildapi.java.ProguardSpecProviderApi;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
/** A target that can provide proguard specifications to Android binaries. */
@Immutable
-@AutoCodec
-public final class ProguardSpecProvider implements TransitiveInfoProvider {
+public final class ProguardSpecProvider extends NativeInfo
+ implements ProguardSpecProviderApi<Artifact> {
+
+ public static final String PROVIDER_NAME = "ProguardSpecProvider";
+ public static final Provider PROVIDER = new Provider();
private final NestedSet<Artifact> transitiveProguardSpecs;
public ProguardSpecProvider(NestedSet<Artifact> transitiveProguardSpecs) {
+ super(PROVIDER);
this.transitiveProguardSpecs = transitiveProguardSpecs;
}
+ @Override
public NestedSet<Artifact> getTransitiveProguardSpecs() {
return transitiveProguardSpecs;
}
@@ -43,4 +50,23 @@ public final class ProguardSpecProvider implements TransitiveInfoProvider {
return new ProguardSpecProvider(specs.build());
}
+ /** Provider class for {@link ProguardSpecProvider} objects. */
+ public static class Provider extends BuiltinProvider<ProguardSpecProvider>
+ implements ProguardSpecProviderApi.Provider<Artifact> {
+ private Provider() {
+ super(PROVIDER_NAME, ProguardSpecProvider.class);
+ }
+
+ public String getName() {
+ return PROVIDER_NAME;
+ }
+
+ @Override
+ public ProguardSpecProvider create(SkylarkNestedSet specs) {
+ return new ProguardSpecProvider(
+ NestedSetBuilder.<Artifact>stableOrder()
+ .addTransitive(specs.getSet(Artifact.class))
+ .build());
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index 6e38294284..cb9be32ef6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -92,9 +92,8 @@ public class JavaLiteProtoLibrary implements RuleConfiguredTargetFactory {
.addSkylarkTransitiveInfo(
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
.addProvider(RunfilesProvider.withData(Runfiles.EMPTY, runfiles))
- .addOutputGroup(
- OutputGroupInfo.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
- .addProvider(getJavaLiteRuntimeSpec(ruleContext))
+ .addOutputGroup(OutputGroupInfo.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER))
+ .addNativeDeclaredProvider(getJavaLiteRuntimeSpec(ruleContext))
.addNativeDeclaredProvider(javaInfo)
.addProvider(createCcLinkParamsStore(ruleContext, ImmutableList.of()))
.build();
@@ -110,7 +109,7 @@ public class JavaLiteProtoLibrary implements RuleConfiguredTargetFactory {
return new ProguardSpecProvider(specs);
}
- ProguardSpecProvider specProvider = runtime.getProvider(ProguardSpecProvider.class);
+ ProguardSpecProvider specProvider = runtime.get(ProguardSpecProvider.PROVIDER);
if (specProvider == null) {
return new ProguardSpecProvider(specs);
}