diff options
author | 2018-07-03 22:28:44 -0700 | |
---|---|---|
committer | 2018-07-03 22:30:09 -0700 | |
commit | d292b34b97970b934a1061e13e2d67844bd083e7 (patch) | |
tree | 9ef9a60ca79a74a7366eaca72848eb5bdbae2bdc /src/main/java/com/google/devtools/build/lib/rules | |
parent | 6b8c7ca48e9e48a9906c031346dc4a924b7ef559 (diff) |
Create a whitelist for android_library rules with deps but not srcs
PiperOrigin-RevId: 203230801
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
3 files changed, 6 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index 76ec398342..88128becae 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -759,7 +759,7 @@ public class AndroidCommon { !hasSrcs && ruleContext .getFragment(AndroidConfiguration.class) - .allowSrcsLessAndroidLibraryDeps(); + .allowSrcsLessAndroidLibraryDeps(ruleContext); return javaCommon.collectJavaCompilationArgs(isNeverLink, exportDeps); } 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 810b2cb8a6..64f2bc88d2 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 @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactor import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.skylark.annotations.SkylarkConfigurationField; +import com.google.devtools.build.lib.analysis.whitelisting.Whitelist; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -1138,8 +1139,9 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment return useRexToCompressDexFiles; } - public boolean allowSrcsLessAndroidLibraryDeps() { - return allowAndroidLibraryDepsWithoutSrcs; + public boolean allowSrcsLessAndroidLibraryDeps(RuleContext ruleContext) { + return allowAndroidLibraryDepsWithoutSrcs + && Whitelist.isAvailable(ruleContext, "allow_deps_without_srcs"); } public boolean useAndroidResourceShrinking() { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index 7c142a167e..f65080041d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java @@ -62,7 +62,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { + "targets implicitly. Please use android_library.exports to explicitly specify " + "targets this rule exports"; AndroidConfiguration androidConfig = ruleContext.getFragment(AndroidConfiguration.class); - if (androidConfig.allowSrcsLessAndroidLibraryDeps()) { + if (androidConfig.allowSrcsLessAndroidLibraryDeps(ruleContext)) { ruleContext.attributeWarning("deps", message); } else { ruleContext.attributeError("deps", message); |