From f40a89b58506a5802c7bd03708f5972e652a9836 Mon Sep 17 00:00:00 2001 From: ilist Date: Mon, 22 Feb 2021 03:32:26 -0800 Subject: [PATCH] Remove JavaStrictCompilationArgsProvider. The JavaStrictCompilationArgsProvider was introduced for a migration in times when a java_*_proto_library could be either strict/nonstrict. See unknown commit for migration plan. With removal of special attribute on java_*_proto_library (attribute strict_deps, flag experimental_java_proto_library_enforce_strict_deps) and addition of a global configuration flag (experimental_jlpl_enforce_strict_deps), that only allows all such targets to be strict or non-strict, this can be merged into a single provider. Note that most of java_* rules took strict version over non-strict, and generated identical strict/non-strict version of the provider. The last place where different providers are generated is java_lite_proto_library. The latter provides a non-strict using a custom provider JavaProtoLibraryAspectProvider) PiperOrigin-RevId: 358784793 --- .../devtools/build/lib/rules/java/BUILD | 1 - .../build/lib/rules/java/JavaCommon.java | 6 --- .../java/JavaCompilationArgsProvider.java | 5 -- .../build/lib/rules/java/JavaInfo.java | 16 ------ .../build/lib/rules/java/JavaLibrary.java | 8 +-- .../JavaStrictCompilationArgsProvider.java | 50 ------------------- .../java/proto/JavaLiteProtoLibrary.java | 14 ++---- .../rules/java/proto/JavaProtoLibrary.java | 9 +--- 8 files changed, 7 insertions(+), 102 deletions(-) delete mode 100644 src/main/java/com/google/devtools/build/lib/rules/java/JavaStrictCompilationArgsProvider.java diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BUILD b/src/main/java/com/google/devtools/build/lib/rules/java/BUILD index 2bcfa81672c374..a974808a3c40e4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/java/BUILD @@ -150,7 +150,6 @@ java_library( "JavaSourceInfoProvider.java", "JavaSourceJarsProvider.java", "JavaStarlarkCommon.java", - "JavaStrictCompilationArgsProvider.java", "JavaTargetAttributes.java", "JavaToolchainProvider.java", "JavaToolchainTool.java", diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java index a19fb6ede9505b..8e993d0c881e42 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java @@ -231,12 +231,6 @@ public static String javaLibraryPath(Collection sharedLibraries, Strin */ public JavaCompilationArgsProvider collectJavaCompilationArgs( boolean isNeverLink, boolean srcLessDepsExport) { - return collectJavaCompilationArgs( - isNeverLink, srcLessDepsExport, /* javaProtoLibraryStrictDeps= */ false); - } - - public JavaCompilationArgsProvider collectJavaCompilationArgs( - boolean isNeverLink, boolean srcLessDepsExport, boolean javaProtoLibraryStrictDeps) { return collectJavaCompilationArgs( /* isNeverLink= */ isNeverLink, /* srcLessDepsExport= */ srcLessDepsExport, diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java index 58fb1c710d68a9..3f3e90df03f3b4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationArgsProvider.java @@ -124,11 +124,6 @@ public static JavaCompilationArgsProvider legacyFromTargets( for (TransitiveInfoCollection info : infos) { JavaCompilationArgsProvider provider = null; - JavaStrictCompilationArgsProvider strictCompilationArgsProvider = - JavaInfo.getProvider(JavaStrictCompilationArgsProvider.class, info); - if (strictCompilationArgsProvider != null) { - provider = strictCompilationArgsProvider.getJavaCompilationArgsProvider(); - } if (provider == null) { provider = JavaInfo.getProvider(JavaCompilationArgsProvider.class, info); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java index e76507e9651d09..391053c518a92e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java @@ -75,7 +75,6 @@ private static T nullIfNone(Object object, Class type) { JavaGenJarsProvider.class, JavaExportsProvider.class, JavaCompilationInfoProvider.class, - JavaStrictCompilationArgsProvider.class, JavaSourceInfoProvider.class); private final TransitiveInfoProviderMap providers; @@ -118,8 +117,6 @@ public TransitiveInfoProviderMap getProviders() { public static JavaInfo merge(List providers) { List javaCompilationArgsProviders = JavaInfo.fetchProvidersFromList(providers, JavaCompilationArgsProvider.class); - List javaStrictCompilationArgsProviders = - JavaInfo.fetchProvidersFromList(providers, JavaStrictCompilationArgsProvider.class); List javaSourceJarsProviders = JavaInfo.fetchProvidersFromList(providers, JavaSourceJarsProvider.class); List javaPluginInfoProviders = @@ -142,9 +139,6 @@ public static JavaInfo merge(List providers) { .addProvider( JavaCompilationArgsProvider.class, JavaCompilationArgsProvider.merge(javaCompilationArgsProviders)) - .addProvider( - JavaStrictCompilationArgsProvider.class, - JavaStrictCompilationArgsProvider.merge(javaStrictCompilationArgsProviders)) .addProvider( JavaSourceJarsProvider.class, JavaSourceJarsProvider.merge(javaSourceJarsProviders)) .addProvider( @@ -561,16 +555,6 @@ public

Builder addProvider( } public JavaInfo build() { - // TODO(twerth): Clean up after we remove java_proto_library.strict_deps. - // Instead of teaching every (potential Starlark) caller to also create the provider for - // strict deps we wrap the non strict provider instead. - if (!providerMap.contains(JavaStrictCompilationArgsProvider.class) - && providerMap.contains(JavaCompilationArgsProvider.class)) { - JavaStrictCompilationArgsProvider javaStrictCompilationArgsProvider = - new JavaStrictCompilationArgsProvider( - providerMap.getProvider(JavaCompilationArgsProvider.class)); - addProvider(JavaStrictCompilationArgsProvider.class, javaStrictCompilationArgsProvider); - } return new JavaInfo( providerMap.build(), runtimeJars, 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 24a9f2bf5d2225..5d177356cb44b8 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 @@ -143,12 +143,7 @@ final ConfiguredTarget init( javaArtifacts, attributes, neverLink, helper.getBootclasspathOrDefault())); JavaCompilationArgsProvider javaCompilationArgs = - common.collectJavaCompilationArgs( - neverLink, /* srcLessDepsExport= */ false, /* javaProtoLibraryStrictDeps= */ false); - JavaStrictCompilationArgsProvider strictJavaCompilationArgs = - new JavaStrictCompilationArgsProvider( - common.collectJavaCompilationArgs( - neverLink, /* srcLessDepsExport= */ false, /* javaProtoLibraryStrictDeps= */ true)); + common.collectJavaCompilationArgs(neverLink, /* srcLessDepsExport= */ false); NestedSet transitiveJavaNativeLibraries = common.collectTransitiveJavaNativeLibraries(); @@ -185,7 +180,6 @@ final ConfiguredTarget init( JavaInfo javaInfo = javaInfoBuilder .addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider) - .addProvider(JavaStrictCompilationArgsProvider.class, strictJavaCompilationArgs) .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) .addProvider(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider) // TODO(bazel-team): this should only happen for java_plugin diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStrictCompilationArgsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaStrictCompilationArgsProvider.java deleted file mode 100644 index ddf858a8d8407c..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaStrictCompilationArgsProvider.java +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.rules.java; - -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; -import java.util.Collection; -import java.util.stream.Collectors; - -/** - * This class just wraps a JavaCompilationArgsProvider. - * - *

It is used to enforce strict_deps from a downstream java_library to an upstream - * java_proto_library. - * - *

TODO(twerth): Remove this class once we finished migration. - */ -public class JavaStrictCompilationArgsProvider implements TransitiveInfoProvider { - private final JavaCompilationArgsProvider javaCompilationArgsProvider; - - public JavaStrictCompilationArgsProvider( - JavaCompilationArgsProvider javaCompilationArgsProvider) { - this.javaCompilationArgsProvider = javaCompilationArgsProvider; - } - - public JavaCompilationArgsProvider getJavaCompilationArgsProvider() { - return javaCompilationArgsProvider; - } - - public static JavaStrictCompilationArgsProvider merge( - Collection providers) { - Collection javaCompilationArgsProviders = - providers.stream() - .map(JavaStrictCompilationArgsProvider::getJavaCompilationArgsProvider) - .collect(Collectors.toList()); - return new JavaStrictCompilationArgsProvider( - JavaCompilationArgsProvider.merge(javaCompilationArgsProviders)); - } -} 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 fea64bf0b5b3cc..1ff48731f19469 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 @@ -37,7 +37,6 @@ import com.google.devtools.build.lib.rules.java.JavaInfo; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; -import com.google.devtools.build.lib.rules.java.JavaStrictCompilationArgsProvider; import com.google.devtools.build.lib.rules.java.ProguardLibrary; import com.google.devtools.build.lib.rules.java.ProguardSpecProvider; @@ -59,7 +58,10 @@ public ConfiguredTarget create(final RuleContext ruleContext) ruleContext.getPrerequisites("deps", JavaProtoLibraryAspectProvider.class); JavaCompilationArgsProvider dependencyArgsProviders = - constructJcapFromAspectDeps(ruleContext, javaProtoLibraryAspectProviders); + constructJcapFromAspectDeps( + ruleContext, + javaProtoLibraryAspectProviders, + ruleContext.getFragment(JavaConfiguration.class).isJlplStrictDepsEnforced()); // We assume that the runtime jars will not have conflicting artifacts // with the same root relative path @@ -83,14 +85,6 @@ public ConfiguredTarget create(final RuleContext ruleContext) JavaInfo.Builder javaInfoBuilder = JavaInfo.Builder.create() .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders); - if (ruleContext.getFragment(JavaConfiguration.class).isJlplStrictDepsEnforced()) { - JavaStrictCompilationArgsProvider strictDependencyArgsProviders = - new JavaStrictCompilationArgsProvider( - constructJcapFromAspectDeps( - ruleContext, javaProtoLibraryAspectProviders, /* alwaysStrict= */ true)); - javaInfoBuilder.addProvider( - JavaStrictCompilationArgsProvider.class, strictDependencyArgsProviders); - } JavaInfo javaInfo = javaInfoBuilder .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) 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 3414e232726f46..81edc70de20dd8 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 @@ -34,7 +34,6 @@ import com.google.devtools.build.lib.rules.java.JavaInfo; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider; -import com.google.devtools.build.lib.rules.java.JavaStrictCompilationArgsProvider; /** Implementation of the java_proto_library rule. */ public class JavaProtoLibrary implements RuleConfiguredTargetFactory { @@ -54,11 +53,8 @@ public ConfiguredTarget create(final RuleContext ruleContext) ruleContext.getPrerequisites("deps", JavaProtoLibraryAspectProvider.class); JavaCompilationArgsProvider dependencyArgsProviders = - constructJcapFromAspectDeps(ruleContext, javaProtoLibraryAspectProviders); - JavaStrictCompilationArgsProvider strictDependencyArgsProviders = - new JavaStrictCompilationArgsProvider( - constructJcapFromAspectDeps( - ruleContext, javaProtoLibraryAspectProviders, /* alwaysStrict= */ true)); + constructJcapFromAspectDeps( + ruleContext, javaProtoLibraryAspectProviders, /* alwaysStrict= */ true); // We assume that the runtime jars will not have conflicting artifacts // with the same root relative path @@ -82,7 +78,6 @@ public ConfiguredTarget create(final RuleContext ruleContext) JavaInfo javaInfo = JavaInfo.Builder.create() .addProvider(JavaCompilationArgsProvider.class, dependencyArgsProviders) - .addProvider(JavaStrictCompilationArgsProvider.class, strictDependencyArgsProviders) .addProvider(JavaSourceJarsProvider.class, sourceJarsProvider) .addProvider(JavaRuleOutputJarsProvider.class, JavaRuleOutputJarsProvider.EMPTY) .build();