diff options
Diffstat (limited to 'src/main')
4 files changed, 43 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaProtoLibraryRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaProtoLibraryRule.java index 62e70cd2ed..007b27e4ec 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaProtoLibraryRule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/proto/BazelJavaProtoLibraryRule.java @@ -29,6 +29,7 @@ import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.java.proto.JavaProtoLibrary; +import com.google.devtools.build.lib.rules.proto.ProtoConfiguration; /** Declaration of the {@code java_proto_library} rule. */ public class BazelJavaProtoLibraryRule implements RuleDefinition { @@ -48,7 +49,7 @@ public class BazelJavaProtoLibraryRule implements RuleDefinition { .build(); return builder - .requiresConfigurationFragments(JavaConfiguration.class) + .requiresConfigurationFragments(JavaConfiguration.class, ProtoConfiguration.class) /* <!-- #BLAZE_RULE(java_proto_library).ATTRIBUTE(deps) --> The list of <a href="protocol-buffer.html#proto_library"><code>proto_library</code></a> rules to generate Java code for. diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java index 9b331f2f1c..faaf5d0e06 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaConfiguration.java @@ -163,6 +163,7 @@ public final class JavaConfiguration extends Fragment { private final Label javaToolchain; private final boolean explicitJavaTestDeps; private final boolean experimentalTestRunner; + private final boolean jplPropagateCcLinkParamsStore; // TODO(dmarting): remove once we have a proper solution for #2539 private final boolean legacyBazelJavaTest; @@ -194,6 +195,7 @@ public final class JavaConfiguration extends Fragment { this.enforceOneVersion = javaOptions.enforceOneVersion; this.explicitJavaTestDeps = javaOptions.explicitJavaTestDeps; this.experimentalTestRunner = javaOptions.experimentalTestRunner; + this.jplPropagateCcLinkParamsStore = javaOptions.jplPropagateCcLinkParamsStore; ImmutableList.Builder<Label> translationsBuilder = ImmutableList.builder(); for (String s : javaOptions.translationTargets) { @@ -414,4 +416,8 @@ public final class JavaConfiguration extends Fragment { public boolean strictDepsJavaProtos() { return strictDepsJavaProtos; } + + public boolean jplPropagateCcLinkParamsStore() { + return jplPropagateCcLinkParamsStore; + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java index 2661bdbb28..53f361ce0f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java @@ -30,6 +30,7 @@ import com.google.devtools.common.options.EnumConverter; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionDocumentationCategory; import com.google.devtools.common.options.OptionEffectTag; +import com.google.devtools.common.options.OptionMetadataTag; import com.google.devtools.common.options.TriState; import java.util.HashMap; import java.util.LinkedHashSet; @@ -493,6 +494,17 @@ public class JavaOptions extends FragmentOptions { ) public OneVersionEnforcementLevel enforceOneVersion; + @Option( + name = "jplPropagateCcLinkParamsStore", + defaultValue = "false", + category = "rollout", + documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, + effectTags = {OptionEffectTag.AFFECTS_OUTPUTS, OptionEffectTag.LOADING_AND_ANALYSIS}, + metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE}, + help = "Roll-out flag for making java_proto_library propagate CcLinkParamsStore. DO NOT USE." + ) + public boolean jplPropagateCcLinkParamsStore; + @Override public FragmentOptions getHost(boolean fallback) { JavaOptions host = (JavaOptions) getDefault(); @@ -518,6 +530,8 @@ public class JavaOptions extends FragmentOptions { host.enforceOneVersion = enforceOneVersion; + host.jplPropagateCcLinkParamsStore = jplPropagateCcLinkParamsStore; + return host; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java index 395c025623..d91fdb9f33 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java @@ -29,8 +29,10 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.WrappingProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; +import com.google.devtools.build.lib.rules.java.JavaConfiguration; import com.google.devtools.build.lib.rules.java.JavaProvider; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaRunfilesProvider; @@ -86,19 +88,24 @@ public class JavaProtoLibrary implements RuleConfiguredTargetFactory { .addProvider(JavaRunfilesProvider.class, javaRunfilesProvider) .build(); - return new RuleConfiguredTargetBuilder(ruleContext) - .setFilesToBuild(filesToBuild.build()) - .addSkylarkTransitiveInfo( - JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext()) - .addProvider(RunfilesProvider.withData(Runfiles.EMPTY, runfiles)) - .addOutputGroup( - OutputGroupProvider.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER)) - .addProvider(dependencyArgsProviders) - .addProvider(sourceJarsProvider) - .addProvider(javaRunfilesProvider) - .addProvider(JavaRuleOutputJarsProvider.EMPTY) - .addProvider(createCcLinkParamsStore(ruleContext, ImmutableList.of())) - .addNativeDeclaredProvider(javaProvider) - .build(); + RuleConfiguredTargetBuilder result = + new RuleConfiguredTargetBuilder(ruleContext) + .setFilesToBuild(filesToBuild.build()) + .addSkylarkTransitiveInfo( + JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext()) + .addProvider(RunfilesProvider.withData(Runfiles.EMPTY, runfiles)) + .addOutputGroup( + OutputGroupProvider.DEFAULT, NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER)) + .addProvider(dependencyArgsProviders) + .addProvider(sourceJarsProvider) + .addProvider(javaRunfilesProvider) + .addProvider(JavaRuleOutputJarsProvider.EMPTY) + .addNativeDeclaredProvider(javaProvider); + + if (ruleContext.getFragment(JavaConfiguration.class).jplPropagateCcLinkParamsStore()) { + result.addProvider(createCcLinkParamsStore(ruleContext, ImmutableList.of())); + } + + return result.build(); } } |