diff options
author | Googler <noreply@google.com> | 2018-03-20 23:53:28 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-20 23:55:01 -0700 |
commit | c68645fda6198a46ac510c832c9b374ae3f20680 (patch) | |
tree | 18958f07c9489ab8de514289e0f90c8595e34610 /src/main/java/com | |
parent | c776a69b56c5b8117493d9a811ff230e18096b97 (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')
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; |