aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-12-18 11:52:18 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-18 11:54:13 -0800
commitefc86c5d140b277a341128950021c59c85f2304f (patch)
tree7470146106430e924a8144ca3fbaad2797c0dd87 /src/main/java/com/google/devtools/build/lib/rules
parent0accd45176ccfbd2487d69b780bb7b8dd1f24b2b (diff)
Remove support for --android_sdk=<filegroup>.
RELNOTES[INC]: --android_sdk no longer supports filegroup targets. PiperOrigin-RevId: 179451275
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBaseRule.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidToolsDefaultsJar.java41
4 files changed, 7 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBaseRule.java
index 49c5dba321..5c708e479d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBaseRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBaseRule.java
@@ -97,7 +97,7 @@ public class AndroidLocalTestBaseRule implements RuleDefinition {
.value(environment.getToolsLabel(AndroidRuleClasses.DEFAULT_RESOURCES_BUSYBOX)))
.add(
attr(":android_sdk", LABEL)
- .allowedRuleClasses("android_sdk", "filegroup")
+ .allowedRuleClasses("android_sdk")
.value(
getAndroidSdkLabel(environment.getToolsLabel(AndroidRuleClasses.DEFAULT_SDK))))
/* <!-- #BLAZE_RULE($android_local_test_base).ATTRIBUTE(test_class) -->
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 084f143f60..e13978ce6c 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
@@ -541,7 +541,7 @@ public final class AndroidRuleClasses {
return builder
.add(
attr(":android_sdk", LABEL)
- .allowedRuleClasses("android_sdk", "filegroup")
+ .allowedRuleClasses("android_sdk")
.value(getAndroidSdkLabel(env.getToolsLabel(AndroidRuleClasses.DEFAULT_SDK))))
/* <!-- #BLAZE_RULE($android_base).ATTRIBUTE(plugins) -->
Java compiler plugins to run at compile-time.
@@ -1071,7 +1071,7 @@ public final class AndroidRuleClasses {
.setUndocumented()
.add(
attr(":android_sdk", LABEL)
- .allowedRuleClasses("android_sdk", "filegroup")
+ .allowedRuleClasses("android_sdk")
.value(getAndroidSdkLabel(environment.getToolsLabel(DEFAULT_SDK))));
if (compatibleWithAndroidEnvironments.length > 0) {
builder.compatibleWith(compatibleWithAndroidEnvironments);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
index f4667fb305..5fb856bb8f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
@@ -75,12 +75,7 @@ public abstract class AndroidSdkProvider implements TransitiveInfoProvider {
* not specified.
*/
public static AndroidSdkProvider fromRuleContext(RuleContext ruleContext) {
- TransitiveInfoCollection androidSdkDep =
- ruleContext.getPrerequisite(":android_sdk", Mode.TARGET);
- AndroidSdkProvider androidSdk =
- androidSdkDep == null ? null : androidSdkDep.getProvider(AndroidSdkProvider.class);
-
- return androidSdk;
+ return ruleContext.getPrerequisite(":android_sdk", Mode.TARGET, AndroidSdkProvider.class);
}
/** Throws an error if the Android SDK cannot be found. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidToolsDefaultsJar.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidToolsDefaultsJar.java
index 817e0a2bc9..368c37798b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidToolsDefaultsJar.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidToolsDefaultsJar.java
@@ -15,17 +15,12 @@ package com.google.devtools.build.lib.rules.android;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
-import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
-import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
-import java.util.regex.Pattern;
/**
* Implementation for the {@code android_tools_defaults_jar} rule.
@@ -39,8 +34,6 @@ import java.util.regex.Pattern;
* from {@link AndroidConfiguration.Options#getDefaultsRules()}.
*/
public class AndroidToolsDefaultsJar implements RuleConfiguredTargetFactory {
- private static final Pattern ANDROID_JAR_BASENAME_RX =
- Pattern.compile("android[a-zA-Z0-9_]*\\.jar$");
@Override
public ConfiguredTarget create(RuleContext ruleContext)
@@ -53,39 +46,11 @@ public class AndroidToolsDefaultsJar implements RuleConfiguredTargetFactory {
return null;
}
- TransitiveInfoCollection androidSdk = ruleContext.getPrerequisite(":android_sdk", Mode.TARGET);
- AndroidSdkProvider sdkProvider = androidSdk.getProvider(AndroidSdkProvider.class);
- Artifact androidJar =
- sdkProvider != null
- ? sdkProvider.getAndroidJar()
- : findAndroidJar(androidSdk.getProvider(FileProvider.class).getFilesToBuild());
-
- NestedSet<Artifact> filesToBuild =
- androidJar == null
- ? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)
- : NestedSetBuilder.create(Order.STABLE_ORDER, androidJar);
+ Artifact androidJar = AndroidSdkProvider.fromRuleContext(ruleContext).getAndroidJar();
return new RuleConfiguredTargetBuilder(ruleContext)
- .add(RunfilesProvider.class, RunfilesProvider.EMPTY)
- .setFilesToBuild(filesToBuild)
+ .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
+ .setFilesToBuild(NestedSetBuilder.create(Order.STABLE_ORDER, androidJar))
.build();
}
-
- private static Artifact findAndroidJar(Iterable<Artifact> fullSdk) {
- // We need to do this by sifting through all the files in the Android SDK because we need to
- // handle the case when --android_sdk points to a plain filegroup.
- //
- // We can't avoid adding an android_tools_defaults_jar rule to the defaults package when this is
- // the case, because the defaults package is constructed very early and it's not possible to get
- // information about the rule class of the target pointed to by --android_sdk earlier, and it's
- // doubly impossible to do redirect chasing then.
- for (Artifact artifact : fullSdk) {
-
- if (ANDROID_JAR_BASENAME_RX.matcher(artifact.getExecPath().getBaseName()).matches()) {
- return artifact;
- }
- }
-
- return null;
- }
}