diff options
author | Luis Fernando Pino Duque <lpino@google.com> | 2016-04-26 15:34:43 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2016-04-27 11:46:13 +0000 |
commit | bac102a562bce8a423754c19e35ad7656d3f5d2c (patch) | |
tree | 769c760addc05c1c4ad5a6a4aa1378ad8c8a5b91 /src/main/java/com/google/devtools/build/lib/rules | |
parent | ebde9a267486fc2573eeb4d17f8f8e9c4099a132 (diff) |
Set --android_sdk=@bazel_tools//tools/android:sdk by default and delete Constants.ANDROID_DEFAULT_SDK.
This CL also updates the test infrastructure to include a mock of @bazel_tools//tools/android:sdk.
--
MOS_MIGRATED_REVID=120815577
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
3 files changed, 41 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java index 712733196c..606a35e9a0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java @@ -18,11 +18,11 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; -import com.google.devtools.build.lib.Constants; +import com.google.devtools.build.lib.analysis.RedirectChaser; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration.DefaultLabelConverter; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.EmptyToNullLabelConverter; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration.LabelConverter; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsConverter; import com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode; import com.google.devtools.build.lib.analysis.config.BuildOptions; @@ -48,13 +48,6 @@ import java.util.Set; @Immutable public class AndroidConfiguration extends BuildConfiguration.Fragment { - /** Converter for --android_sdk. */ - public static class AndroidSdkConverter extends DefaultLabelConverter { - public AndroidSdkConverter() { - super(Constants.ANDROID_DEFAULT_SDK); - } - } - /** * Converter for {@link com.google.devtools.build.lib.rules.android.AndroidConfiguration.ConfigurationDistinguisher} */ @@ -198,9 +191,9 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { // Label of filegroup combining all Android tools used as implicit dependencies of // android_* rules @Option(name = "android_sdk", - defaultValue = "", + defaultValue = "@bazel_tools//tools/android:sdk", category = "version", - converter = AndroidSdkConverter.class, + converter = LabelConverter.class, help = "Specifies Android SDK/platform that is used to build Android applications.") public Label sdk; @@ -300,6 +293,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { public FragmentOptions getHost(boolean fallback) { Options host = (Options) super.getHost(fallback); host.androidCrosstoolTop = androidCrosstoolTop; + host.sdk = sdk; return host; } @@ -321,7 +315,13 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { @Override public Fragment create(ConfigurationEnvironment env, BuildOptions buildOptions) throws InvalidConfigurationException { - return new AndroidConfiguration(buildOptions.get(Options.class)); + AndroidConfiguration.Options androidOptions = + buildOptions.get(AndroidConfiguration.Options.class); + Label androidSdk = RedirectChaser.followRedirects(env, androidOptions.sdk, "android_sdk"); + if (androidSdk == null) { + return null; + } + return new AndroidConfiguration(buildOptions.get(Options.class), androidSdk); } @Override @@ -349,8 +349,8 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { private final boolean allowAndroidLibraryDepsWithoutSrcs; private final boolean useAndroidResourceShrinking; - AndroidConfiguration(Options options) { - this.sdk = options.sdk; + AndroidConfiguration(Options options, Label androidSdk) { + this.sdk = androidSdk; this.incrementalNativeLibs = options.incrementalNativeLibs; this.strictDeps = options.strictDeps; this.legacyNativeSupport = options.legacyNativeSupport; 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 7cd976d654..0cb5c907fc 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 @@ -28,7 +28,6 @@ import static com.google.devtools.build.lib.util.FileTypeSet.ANY_FILE; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Lists; -import com.google.devtools.build.lib.Constants; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; @@ -169,19 +168,20 @@ public final class AndroidRuleClasses { public static final String DEFAULT_RESOURCE_SHRINKER = "//tools/android:resource_shrinker"; public static final String DEFAULT_AAR_GENERATOR = "//tools/android:aar_generator"; + public static final String DEFAULT_SDK = "//tools/android:sdk"; - public static final Label DEFAULT_ANDROID_SDK = - Label.parseAbsoluteUnchecked( - Constants.ANDROID_DEFAULT_SDK); - - public static final LateBoundLabel<BuildConfiguration> ANDROID_SDK = - new LateBoundLabel<BuildConfiguration>(DEFAULT_ANDROID_SDK, AndroidConfiguration.class) { - @Override - public Label resolve(Rule rule, AttributeMap attributes, - BuildConfiguration configuration) { - return configuration.getFragment(AndroidConfiguration.class).getSdk(); - } - }; + /** + * The default label of android_sdk option + */ + public static final class AndroidSdkLabel extends LateBoundLabel<BuildConfiguration> { + public AndroidSdkLabel(Label androidSdk) { + super(androidSdk, AndroidConfiguration.class); + } + @Override + public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) { + return configuration.getFragment(AndroidConfiguration.class).getSdk(); + } + } public static final SplitTransition<BuildOptions> ANDROID_SPLIT_TRANSITION = new SplitTransition<BuildOptions>() { @@ -496,7 +496,7 @@ public final class AndroidRuleClasses { return builder .add(attr(":android_sdk", LABEL) .allowedRuleClasses("android_sdk", "filegroup") - .value(ANDROID_SDK)) + .value(new AndroidSdkLabel(env.getToolsLabel(AndroidRuleClasses.DEFAULT_SDK)))) /* <!-- #BLAZE_RULE($android_base).ATTRIBUTE(plugins) --> Java compiler plugins to run at compile-time. Every <code>java_plugin</code> specified in @@ -780,3 +780,4 @@ com/google/common/base/Objects.class } } } + diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java index 60a912d774..cceff8a5ba 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java @@ -19,6 +19,7 @@ import static com.google.devtools.build.lib.packages.BuildType.LABEL; import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.Constants; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory; @@ -26,13 +27,15 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.AspectParameters; import com.google.devtools.build.lib.packages.NativeAspectClass.NativeAspectFactory; +import com.google.devtools.build.lib.rules.android.AndroidRuleClasses.AndroidSdkLabel; import com.google.devtools.build.lib.rules.java.JavaCommon; import com.google.devtools.build.lib.rules.java.JavaSourceInfoProvider; import com.google.devtools.build.lib.vfs.PathFragment; - import java.util.List; /** Aspect to provide Jack support to rules which have java sources. */ @@ -41,11 +44,18 @@ public final class JackAspect implements NativeAspectFactory, ConfiguredAspectFa @Override public AspectDefinition getDefinition(AspectParameters params) { + Label androidSdk; + try { + androidSdk = Label.parseAbsolute(Constants.TOOLS_REPOSITORY + AndroidRuleClasses.DEFAULT_SDK); + } catch (LabelSyntaxException e) { + throw new IllegalStateException(e); + } + return new AspectDefinition.Builder("JackAspect") .requireProvider(JavaSourceInfoProvider.class) .add(attr(":android_sdk", LABEL) .allowedRuleClasses("android_sdk") - .value(AndroidRuleClasses.ANDROID_SDK)) + .value(new AndroidSdkLabel(androidSdk))) .attributeAspect("deps", JackAspect.class) .attributeAspect("exports", JackAspect.class) .attributeAspect("runtime_deps", JackAspect.class) |