Replace --experimental_android_enforce_strict_deps_for_binaries_under_test with a package whitelist
PiperOrigin-RevId: 196688645
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 9f193c8..5281e04 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -622,6 +622,7 @@
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/actions",
"//src/main/java/com/google/devtools/build/lib/analysis/platform",
+ "//src/main/java/com/google/devtools/build/lib/analysis/whitelisting",
"//src/main/java/com/google/devtools/build/lib/buildeventstream",
"//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
"//src/main/java/com/google/devtools/build/lib/cmdline",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
index d378373..7e91cdc 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidBinaryRule.java
@@ -15,6 +15,7 @@
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
+import com.google.devtools.build.lib.analysis.whitelisting.Whitelist;
import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses;
import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -66,6 +67,9 @@
</ul>
<!-- #END_BLAZE_RULE.IMPLICIT_OUTPUTS --> */
.setImplicitOutputsFunction(AndroidRuleClasses.ANDROID_BINARY_IMPLICIT_OUTPUTS)
+ .add(
+ Whitelist.getAttributeFromWhitelistName("export_deps")
+ .value(environment.getToolsLabel("//tools/android:export_deps_whitelist")))
.cfg(
new ConfigFeatureFlagTransitionFactory(AndroidFeatureFlagSetProvider.FEATURE_FLAG_ATTR))
.addRequiredToolchains(CppRuleClasses.ccToolchainTypeAttribute(environment))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index 0b77069..5ab5c81 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -50,6 +50,7 @@
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.whitelisting.Whitelist;
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;
@@ -117,8 +118,7 @@
new AndroidCommon(
javaCommon,
/* asNeverLink= */ true,
- /* exportDeps= */ !AndroidCommon.getAndroidConfig(ruleContext)
- .getEnforceStrictDepsForBinariesUnderTest());
+ /* exportDeps= */ Whitelist.isAvailable(ruleContext, "export_deps"));
ResourceDependencies resourceDeps =
ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink= */ false);
RuleConfiguredTargetBuilder builder =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index 421afdb..9f9b442 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -817,16 +817,6 @@
+ "when possible. Otherwise, they will all be processed together.")
public boolean decoupleDataProcessing;
- // TODO(cushon): make this the default, and delete it
- @Option(
- name = "experimental_android_enforce_strict_deps_for_binaries_under_test",
- defaultValue = "false",
- documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
- effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
- help = "If enabled, strict dependencies are enforced for android_test.binary_under_test"
- )
- public boolean enforceStrictDepsForBinariesUnderTest;
-
@Option(
name = "android_migration_tag_check",
defaultValue = "false",
@@ -875,7 +865,6 @@
host.manifestMerger = manifestMerger;
host.androidAaptVersion = androidAaptVersion;
host.allowAndroidLibraryDepsWithoutSrcs = allowAndroidLibraryDepsWithoutSrcs;
- host.enforceStrictDepsForBinariesUnderTest = enforceStrictDepsForBinariesUnderTest;
host.oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest =
oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest;
return host;
@@ -935,7 +924,6 @@
private final boolean fixedResourceNeverlinking;
private final AndroidRobolectricTestDeprecationLevel robolectricTestDeprecationLevel;
private final boolean decoupleDataProcessing;
- private final boolean enforceStrictDepsForBinariesUnderTest;
private final boolean checkForMigrationTag;
private final boolean oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest;
@@ -977,7 +965,6 @@
this.fixedResourceNeverlinking = options.fixedResourceNeverlinking;
this.robolectricTestDeprecationLevel = options.robolectricTestDeprecationLevel;
this.decoupleDataProcessing = options.decoupleDataProcessing;
- this.enforceStrictDepsForBinariesUnderTest = options.enforceStrictDepsForBinariesUnderTest;
this.checkForMigrationTag = options.checkForMigrationTag;
this.oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest =
options.oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest;
@@ -1033,7 +1020,6 @@
boolean fixedResourceNeverlinking,
AndroidRobolectricTestDeprecationLevel robolectricTestDeprecationLevel,
boolean decoupleDataProcessing,
- boolean enforceStrictDepsForBinariesUnderTest,
boolean checkForMigrationTag,
boolean oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest) {
this.enableAndroidCpuMakeVariable = enableAndroidCpuMakeVariable;
@@ -1070,7 +1056,6 @@
this.fixedResourceNeverlinking = fixedResourceNeverlinking;
this.robolectricTestDeprecationLevel = robolectricTestDeprecationLevel;
this.decoupleDataProcessing = decoupleDataProcessing;
- this.enforceStrictDepsForBinariesUnderTest = enforceStrictDepsForBinariesUnderTest;
this.checkForMigrationTag = checkForMigrationTag;
this.oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest =
oneVersionEnforcementUseTransitiveJarsForBinaryUnderTest;
@@ -1225,10 +1210,6 @@
return decoupleDataProcessing;
}
- public boolean getEnforceStrictDepsForBinariesUnderTest() {
- return enforceStrictDepsForBinariesUnderTest;
- }
-
public boolean checkForMigrationTag() {
return checkForMigrationTag;
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 27e33db..af2220d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -153,6 +153,10 @@
"package_group(name='config_feature_flag', packages=['//...'])");
config.create(
+ "tools/whitelists/config_feature_flag/BUILD",
+ "package_group(name='config_feature_flag', packages=['//...'])");
+
+ config.create(
"/bazel_tools_workspace/tools/zip/BUILD",
"package(default_visibility=['//visibility:public'])",
"exports_files(['precompile.py'])",
@@ -267,6 +271,7 @@
.add("sh_binary(name = 'jarjar_bin', srcs = ['empty.sh'])")
.add("sh_binary(name = 'instrumentation_test_check', srcs = ['empty.sh'])")
.add("package_group(name = 'android_device_whitelist', packages = ['//...'])")
+ .add("package_group(name = 'export_deps_whitelist', packages = ['//...'])")
.add("android_tools_defaults_jar(name = 'android_jar')");
return androidBuildContents.build();
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index d96fbb7..592e6dc 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -434,3 +434,8 @@
name = "android_device_whitelist",
packages = ["//..."],
)
+
+package_group(
+ name = "export_deps_whitelist",
+ packages = ["//..."],
+)