aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-03-20 23:53:28 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-20 23:55:01 -0700
commitc68645fda6198a46ac510c832c9b374ae3f20680 (patch)
tree18958f07c9489ab8de514289e0f90c8595e34610 /src/main/java/com
parentc776a69b56c5b8117493d9a811ff230e18096b97 (diff)
Allow android_library rule to also accept rules that provide the JavaInfo
provider as an input. RELNOTES: PiperOrigin-RevId: 189868401
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryBaseRule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java5
4 files changed, 12 insertions, 1 deletions
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 21fcb618ba..b5ce0c123a 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
@@ -114,6 +114,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
validateRuleContext(ruleContext);
JavaSemantics javaSemantics = createJavaSemantics();
AndroidSemantics androidSemantics = createAndroidSemantics();
+ androidSemantics.validateAndroidLibraryRuleContext(ruleContext);
AndroidSdkProvider.verifyPresence(ruleContext);
NestedSetBuilder<Aar> transitiveAars = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveAarArtifacts = NestedSetBuilder.stableOrder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryBaseRule.java
index 0c053e06cf..e3dda1f31a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryBaseRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibraryBaseRule.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.rules.android.AndroidRuleClasses.AndroidResourceSupportRule;
import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaInfo;
+import com.google.devtools.build.lib.rules.java.JavaRuleClasses;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.ProguardLibraryRule;
import com.google.devtools.build.lib.util.FileTypeSet;
@@ -84,6 +85,7 @@ public final class AndroidLibraryBaseRule implements RuleDefinition {
.copy("deps")
.allowedRuleClasses(AndroidRuleClasses.ALLOWED_DEPENDENCIES)
.allowedFileTypes()
+ .mandatoryProviders(JavaRuleClasses.CONTAINS_JAVA_PROVIDER)
.aspect(androidNeverlinkAspect))
/* <!-- #BLAZE_RULE(android_library).ATTRIBUTE(exports) -->
The closure of all rules reached via <code>exports</code> attributes
@@ -94,7 +96,8 @@ public final class AndroidLibraryBaseRule implements RuleDefinition {
.add(
attr("exports", LABEL_LIST)
.allowedRuleClasses(AndroidRuleClasses.ALLOWED_DEPENDENCIES)
- .allowedFileTypes(/*May not have files in exports!*/ )
+ .allowedFileTypes(/*May not have files in exports!*/)
+ .mandatoryProviders(JavaRuleClasses.CONTAINS_JAVA_PROVIDER)
.aspect(androidNeverlinkAspect))
/* <!-- #BLAZE_RULE(android_library).ATTRIBUTE(exports_manifest) -->
Whether to export manifest entries to <code>android_binary</code> targets
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index b564337e56..bda2847eba 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -62,6 +62,7 @@ import com.google.devtools.build.lib.rules.cpp.CppOptions;
import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
import com.google.devtools.build.lib.rules.java.JavaConfiguration;
import com.google.devtools.build.lib.rules.java.JavaInfo;
+import com.google.devtools.build.lib.rules.java.JavaRuleClasses;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.ProguardHelper;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -703,6 +704,7 @@ public final class AndroidRuleClasses {
.cfg(ANDROID_SPLIT_TRANSITION)
.allowedRuleClasses(ALLOWED_DEPENDENCIES)
.allowedFileTypes()
+ .mandatoryProviders(JavaRuleClasses.CONTAINS_JAVA_PROVIDER)
.aspect(androidNeverlinkAspect)
.aspect(dexArchiveAspect, DexArchiveAspect.PARAM_EXTRACTOR))
/* <!-- #BLAZE_RULE($android_binary_base).ATTRIBUTE(debug_key) -->
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
index fde6c409e1..87130b7351 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
@@ -110,6 +110,11 @@ public interface AndroidSemantics {
default void validateAndroidBinaryRuleContext(RuleContext ruleContext) throws RuleErrorException {
}
+ /** A hook for checks of internal-only or external-only attributes of {@code android_library}. */
+ default void validateAndroidLibraryRuleContext(RuleContext ruleContext)
+ throws RuleErrorException {
+ }
+
/** The artifact for the map that proguard will output. */
Artifact getProguardOutputMap(RuleContext ruleContext) throws InterruptedException;