diff options
author | 2018-07-17 14:24:30 -0700 | |
---|---|---|
committer | 2018-07-17 14:25:47 -0700 | |
commit | 27e81776f6dd684aca01c1066216a3c127821da5 (patch) | |
tree | fb035b41aebd8397320ebfd3a636b39d2fe2c131 /src/main/java/com/google/devtools/build/lib/rules/java | |
parent | 86e007fdeced120cda3108e97044db4fd817d5f0 (diff) |
Expose ProguardSpecProvider to skylark.
RELNOTES: None
PiperOrigin-RevId: 204974291
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java')
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); } |