aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-03-11 18:58:23 +0000
committerGravatar David Chen <dzc@google.com>2016-03-11 21:29:56 +0000
commit9beb1e2f1c774775813494b57a7c576390d846ed (patch)
tree4dfd8b3b5760b401bcea0ba43743f9a6902c43df /src/main/java/com/google
parent3c35021eb39218119328522acccebcfe652906a9 (diff)
Allow android_library with android resource attributes to have deps without srcs instead of throwing an error.
Implicit exporting of the deps of an android_library rule that doesn't have srcs is deprecated and will soon be removed. -- MOS_MIGRATED_REVID=116988446
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java9
2 files changed, 12 insertions, 13 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 68a0849f19..f0e3015e4b 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
@@ -488,13 +488,6 @@ public class AndroidCommon {
}
}
- if (disallowDepsWithoutSrcs(ruleContext.getRule().getRuleClass())
- && ruleContext.attributes().get("srcs", BuildType.LABEL_LIST).isEmpty()
- && ruleContext.attributes().get("idl_srcs", BuildType.LABEL_LIST).isEmpty()
- && !ruleContext.attributes().get("deps", BuildType.LABEL_LIST).isEmpty()) {
- ruleContext.attributeError("deps", "deps not allowed without srcs; move to exports?");
- }
-
JavaCompilationHelper helper = initAttributes(attributes, javaSemantics);
if (ruleContext.hasErrors()) {
return null;
@@ -520,11 +513,6 @@ public class AndroidCommon {
return helper.getAttributes();
}
- private boolean disallowDepsWithoutSrcs(String ruleClass) {
- return ruleClass.equals("android_library")
- && !ruleContext.getFragment(AndroidConfiguration.class).allowSrcsLessAndroidLibraryDeps();
- }
-
private JavaCompilationHelper initAttributes(
JavaTargetAttributes.Builder attributes, JavaSemantics semantics) {
JavaCompilationHelper helper = new JavaCompilationHelper(
@@ -767,9 +755,11 @@ public class AndroidCommon {
*/
private JavaCompilationArgs collectJavaCompilationArgs(boolean recursive, boolean isNeverLink,
boolean hasSrcs) {
+ boolean exportDeps = !hasSrcs
+ && ruleContext.getFragment(AndroidConfiguration.class).allowSrcsLessAndroidLibraryDeps();
Iterable<SourcesJavaCompilationArgsProvider> fromSrcs =
ImmutableList.<SourcesJavaCompilationArgsProvider> of();
- return javaCommon.collectJavaCompilationArgs(recursive, isNeverLink, fromSrcs, !hasSrcs);
+ return javaCommon.collectJavaCompilationArgs(recursive, isNeverLink, fromSrcs, exportDeps);
}
public ImmutableList<String> getJavacOpts() {
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 189c3fd793..529e10f7b7 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
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.android.AndroidLibraryAarProvider.Aar;
import com.google.devtools.build.lib.rules.android.AndroidResourcesProvider.ResourceContainer;
@@ -103,6 +104,14 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
ResourceDependencies.fromRuleResourceAndDeps(ruleContext, false /* neverlink */));
}
+ if (!ruleContext.getFragment(AndroidConfiguration.class).allowSrcsLessAndroidLibraryDeps()
+ && !definesLocalResources
+ && ruleContext.attributes().get("srcs", BuildType.LABEL_LIST).isEmpty()
+ && ruleContext.attributes().get("idl_srcs", BuildType.LABEL_LIST).isEmpty()
+ && !ruleContext.attributes().get("deps", BuildType.LABEL_LIST).isEmpty()) {
+ ruleContext.attributeError("deps", "deps not allowed without srcs; move to exports?");
+ }
+
JavaTargetAttributes javaTargetAttributes = androidCommon.init(
javaSemantics,
androidSemantics,