diff options
author | 2016-03-11 18:58:23 +0000 | |
---|---|---|
committer | 2016-03-11 21:29:56 +0000 | |
commit | 9beb1e2f1c774775813494b57a7c576390d846ed (patch) | |
tree | 4dfd8b3b5760b401bcea0ba43743f9a6902c43df /src/main/java/com/google | |
parent | 3c35021eb39218119328522acccebcfe652906a9 (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.java | 16 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java | 9 |
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, |