diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java index b73ba0a9c3da44..8f8fe4dcb2b852 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java +++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java @@ -115,19 +115,6 @@ public class StarlarkSemanticsOptions extends OptionsBase implements Serializabl + "pertaining to Google legacy code.") public boolean experimentalGoogleLegacyApi; - // This flag is declared in StarlarkSemanticsOptions instead of JavaOptions because there is no - // way to retrieve the java configuration from the Java implementation of - // java_common.create_provider. - @Option( - name = "experimental_java_common_create_provider_enabled_packages", - converter = CommaSeparatedOptionListConverter.class, - defaultValue = "", - documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, - effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS}, - metadataTags = {OptionMetadataTag.EXPERIMENTAL}, - help = "Passes list of packages that can use the java_common.create_provider Starlark API.") - public List experimentalJavaCommonCreateProviderEnabledPackages; - @Option( name = "experimental_platforms_api", defaultValue = "false", @@ -711,8 +698,6 @@ public StarlarkSemantics toSkylarkSemantics() { .experimentalCcSkylarkApiEnabledPackages(experimentalCcSkylarkApiEnabledPackages) .experimentalEnableAndroidMigrationApis(experimentalEnableAndroidMigrationApis) .experimentalGoogleLegacyApi(experimentalGoogleLegacyApi) - .experimentalJavaCommonCreateProviderEnabledPackages( - experimentalJavaCommonCreateProviderEnabledPackages) .experimentalPlatformsApi(experimentalPlatformsApi) .experimentalStarlarkConfigTransitions(experimentalStarlarkConfigTransitions) .experimentalStarlarkUnusedInputsList(experimentalStarlarkUnusedInputsList) diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index a2dd46f368cfdc..df3ccac9efeda0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -33,7 +33,6 @@ import com.google.devtools.build.lib.syntax.SkylarkList; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import com.google.devtools.build.lib.syntax.StarlarkSemantics; -import java.util.List; import javax.annotation.Nullable; /** A module that contains Skylark utilities for Java support. */ @@ -61,10 +60,11 @@ public JavaInfo create( Environment environment) throws EvalException { if (environment.getSemantics().incompatibleDisallowLegacyJavaInfo()) { - checkCallPathInWhitelistedPackages( - environment.getSemantics(), + throw new EvalException( location, - environment.getGlobals().getLabel().getPackageName()); + "java_common.create_provider is deprecated and cannot be used when " + + "--incompatible_disallow_legacy_javainfo is set. " + + "Please migrate to the JavaInfo constructor."); } return JavaInfoBuildHelper.getInstance() .create( @@ -240,23 +240,6 @@ private NestedSet asArtifactNestedSet(Object o) throws EvalException { .build(); } - /** - * Throws an {@link EvalException} if the given {@code callPath} is not listed under the {@code - * --experimental_java_common_create_provider_enabled_packages} flag. - */ - private static void checkCallPathInWhitelistedPackages( - StarlarkSemantics semantics, Location location, String callPath) throws EvalException { - List whitelistedPackagesList = - semantics.experimentalJavaCommonCreateProviderEnabledPackages(); - if (whitelistedPackagesList.stream().noneMatch(path -> callPath.startsWith(path))) { - throw new EvalException( - location, - "java_common.create_provider is deprecated and cannot be used when " - + "--incompatible_disallow_legacy_javainfo is set. " - + "Please migrate to the JavaInfo constructor."); - } - } - @Override public boolean isJavaToolchainResolutionEnabled(SkylarkRuleContext ruleContext) throws EvalException { diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java index 6c0c72cdb5ba56..bf55bdf3087e98 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java @@ -134,8 +134,6 @@ public boolean flagValue(FlagIdentifier flagIdentifier) { public abstract boolean experimentalGoogleLegacyApi(); - public abstract ImmutableList experimentalJavaCommonCreateProviderEnabledPackages(); - public abstract boolean experimentalPlatformsApi(); public abstract boolean experimentalStarlarkConfigTransitions(); @@ -258,7 +256,6 @@ public static Builder builderWithDefaults() { .experimentalAllowIncrementalRepositoryUpdates(true) .experimentalEnableAndroidMigrationApis(false) .experimentalGoogleLegacyApi(false) - .experimentalJavaCommonCreateProviderEnabledPackages(ImmutableList.of()) .experimentalPlatformsApi(false) .experimentalStarlarkConfigTransitions(true) .experimentalStarlarkUnusedInputsList(true) @@ -318,8 +315,6 @@ public abstract static class Builder { public abstract Builder experimentalGoogleLegacyApi(boolean value); - public abstract Builder experimentalJavaCommonCreateProviderEnabledPackages(List value); - public abstract Builder experimentalPlatformsApi(boolean value); public abstract Builder experimentalStarlarkConfigTransitions(boolean value); diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java index 573d81c8fd8dad..ac78fd574516c8 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java @@ -126,10 +126,6 @@ private static StarlarkSemanticsOptions buildRandomOptions(Random rand) throws E + rand.nextDouble(), "--experimental_enable_android_migration_apis=" + rand.nextBoolean(), "--experimental_google_legacy_api=" + rand.nextBoolean(), - "--experimental_java_common_create_provider_enabled_packages=" - + rand.nextDouble() - + "," - + rand.nextDouble(), "--experimental_platforms_api=" + rand.nextBoolean(), "--experimental_starlark_config_transitions=" + rand.nextBoolean(), "--experimental_starlark_unused_inputs_list=" + rand.nextBoolean(), @@ -187,8 +183,6 @@ private static StarlarkSemantics buildRandomSemantics(Random rand) { ImmutableList.of(String.valueOf(rand.nextDouble()), String.valueOf(rand.nextDouble()))) .experimentalEnableAndroidMigrationApis(rand.nextBoolean()) .experimentalGoogleLegacyApi(rand.nextBoolean()) - .experimentalJavaCommonCreateProviderEnabledPackages( - ImmutableList.of(String.valueOf(rand.nextDouble()), String.valueOf(rand.nextDouble()))) .experimentalPlatformsApi(rand.nextBoolean()) .experimentalStarlarkConfigTransitions(rand.nextBoolean()) .experimentalStarlarkUnusedInputsList(rand.nextBoolean()) diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java index 193b09513529db..8662d364df7229 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java @@ -1881,109 +1881,6 @@ public void testIncompatibleDisallowLegacyJavaInfo() throws Exception { ")"); } - @Test - public void testIncompatibleDisallowLegacyJavaInfoWithFlag() throws Exception { - setSkylarkSemanticsOptions( - "--incompatible_disallow_legacy_javainfo", - "--experimental_java_common_create_provider_enabled_packages=java/test"); - scratch.file( - "java/test/custom_rule.bzl", - "def _impl(ctx):", - " jar = ctx.file.jar", - " java_common.create_provider(", - " compile_time_jars = [jar],", - " transitive_compile_time_jars = [jar],", - " runtime_jars = [jar],", - " use_ijar = False,", - " )", - "java_custom_library = rule(", - " implementation = _impl,", - " attrs = {", - " 'jar': attr.label(allow_single_file = True),", - " }", - ")"); - scratch.file( - "java/test/BUILD", - "load(':custom_rule.bzl', 'java_custom_library')", - "java_custom_library(", - " name = 'custom',", - " jar = 'lib.jar'", - ")"); - assertThat(getConfiguredTarget("//java/test:custom")).isNotNull(); - } - - @Test - public void testIncompatibleDisallowLegacyJavaInfoOtherPackageWithFlag() throws Exception { - setSkylarkSemanticsOptions( - "--incompatible_disallow_legacy_javainfo", - "--experimental_java_common_create_provider_enabled_packages=java/package"); - scratch.file( - "java/package/custom_rule.bzl", - "def _impl(ctx):", - " jar = ctx.file.jar", - " java_common.create_provider(", - " compile_time_jars = [jar],", - " transitive_compile_time_jars = [jar],", - " runtime_jars = [jar],", - " use_ijar = False,", - " )", - "custom_rule = rule(", - " implementation = _impl,", - " attrs = {", - " 'jar': attr.label(allow_single_file = True),", - " }", - ")"); - scratch.file( - "java/package/BUILD", - "load('//third_party/bazel_skylib:bzl_library.bzl', 'bzl_library')", - "bzl_library(name = 'custom_rule', srcs = ['custom_rule.bzl'])"); - scratch.file( - "java/otherpackage/BUILD", - "load('//java/package:custom_rule.bzl', 'custom_rule')", - "custom_rule(", - " name = 'custom',", - " jar = 'lib.jar'", - ")"); - assertThat(getConfiguredTarget("//java/otherpackage:custom")).isNotNull(); - } - - @Test - public void testIncompatibleDisallowLegacyJavaInfoOtherPackageFailsWithFlag() throws Exception { - setSkylarkSemanticsOptions( - "--incompatible_disallow_legacy_javainfo", - "--experimental_java_common_create_provider_enabled_packages=java/otherpackage"); - scratch.file( - "java/package/custom_rule.bzl", - "def _impl(ctx):", - " jar = ctx.file.jar", - " java_common.create_provider(", - " compile_time_jars = [jar],", - " transitive_compile_time_jars = [jar],", - " runtime_jars = [jar],", - " use_ijar = False,", - " )", - "custom_rule = rule(", - " implementation = _impl,", - " attrs = {", - " 'jar': attr.label(allow_single_file = True),", - " }", - ")"); - scratch.file( - "java/package/BUILD", - "load('//third_party/bazel_skylib:bzl_library.bzl', 'bzl_library')", - "bzl_library(name = 'custom_rule', srcs = ['custom_rule.bzl'])"); - checkError( - "java/otherpackage", - "custom", - "java_common.create_provider is deprecated and cannot be used when " - + "--incompatible_disallow_legacy_javainfo is set.", - "load('//java/package:custom_rule.bzl', 'custom_rule')", - "custom_rule(", - " name = 'custom',", - " jar = 'lib.jar'", - ")"); - } - private static boolean javaCompilationArgsHaveTheSameParent( JavaCompilationArgsProvider args, JavaCompilationArgsProvider otherArgs) { if (!nestedSetsOfArtifactHaveTheSameParent(