diff options
author | 2016-10-13 23:09:25 +0000 | |
---|---|---|
committer | 2016-10-14 09:33:19 +0000 | |
commit | 78c19807d2cbb308b830022dcdcc8b03f19f90a9 (patch) | |
tree | 1dea0ad109a5195415b68756f130a5869007c51c /src/main/java/com/google | |
parent | f61277fe5d89de793037c739d79b2a0005eaaa76 (diff) |
Refactor AarImportRule into a base rule.
Also moves AAR-specific tools from tools/zip into tools/android and renames embedded_jar_extractor to aar_embedded_jars_extractor because in a future change it will extract classes.jar and libs/*.jar.
--
MOS_MIGRATED_REVID=136099324
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java | 6 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java | 42 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java (renamed from src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImport.java) | 10 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AarImportBaseRule.java (renamed from src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImportRule.java) | 18 |
4 files changed, 57 insertions, 19 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index 833a3ba548..41400143b8 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -27,9 +27,9 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.ConfigRuleClasses; import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule; -import com.google.devtools.build.lib.bazel.rules.android.AarImportRule; import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule; import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule; +import com.google.devtools.build.lib.bazel.rules.android.BazelAarImportRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidBinaryRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidLibraryRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidRuleClasses.BazelAndroidToolsDefaultsJarRule; @@ -78,6 +78,7 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.rules.Alias.AliasRule; import com.google.devtools.build.lib.rules.AliasProvider; +import com.google.devtools.build.lib.rules.android.AarImportBaseRule; import com.google.devtools.build.lib.rules.android.AndroidBinaryOnlyRule; import com.google.devtools.build.lib.rules.android.AndroidConfiguration; import com.google.devtools.build.lib.rules.android.AndroidLibraryBaseRule; @@ -352,7 +353,8 @@ public class BazelRuleClassProvider { builder.addRuleDefinition(new AndroidLibraryBaseRule(androidNeverlinkAspect, jackAspect)); builder.addRuleDefinition(new BazelAndroidLibraryRule()); builder.addRuleDefinition(new BazelAndroidBinaryRule()); - builder.addRuleDefinition(new AarImportRule()); + builder.addRuleDefinition(new AarImportBaseRule()); + builder.addRuleDefinition(new BazelAarImportRule()); builder.addSkylarkAccessibleTopLevels("android_common", new AndroidSkylarkCommon()); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java new file mode 100644 index 0000000000..fc64a5c968 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java @@ -0,0 +1,42 @@ +// Copyright 2016 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.bazel.rules.android; + +import com.google.devtools.build.lib.analysis.RuleDefinition; +import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses.JavaBaseRule; +import com.google.devtools.build.lib.packages.RuleClass; +import com.google.devtools.build.lib.packages.RuleClass.Builder; +import com.google.devtools.build.lib.rules.android.AarImport; +import com.google.devtools.build.lib.rules.android.AarImportBaseRule; + +/** + * Rule definition for the {@code aar_import} rule. + */ +public final class BazelAarImportRule implements RuleDefinition { + + @Override + public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) { + return builder.build(); + } + + @Override + public Metadata getMetadata() { + return RuleDefinition.Metadata.builder() + .name("aar_import") + .ancestors(AarImportBaseRule.class, JavaBaseRule.class) + .factoryClass(AarImport.class) + .build(); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java index af20e8f182..dbbb5df3cb 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.bazel.rules.android; +package com.google.devtools.build.lib.rules.android; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Action; @@ -27,12 +27,6 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; -import com.google.devtools.build.lib.rules.android.AndroidResourcesProvider; -import com.google.devtools.build.lib.rules.android.AndroidRuleClasses; -import com.google.devtools.build.lib.rules.android.ApplicationManifest; -import com.google.devtools.build.lib.rules.android.LocalResourceContainer; -import com.google.devtools.build.lib.rules.android.ResourceApk; -import com.google.devtools.build.lib.rules.android.ResourceDependencies; import com.google.devtools.build.lib.rules.java.JavaCommon; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar; @@ -147,7 +141,7 @@ public class AarImport implements RuleConfiguredTargetFactory { private static Action[] createEmbeddedJarExtractorActions(RuleContext ruleContext, Artifact aar, String filename, Artifact outputArtifact) { return new SpawnAction.Builder() - .setExecutable(ruleContext.getExecutablePrerequisite("$embedded_jar_extractor", Mode.HOST)) + .setExecutable(ruleContext.getExecutablePrerequisite("$aar_embedded_jars_extractor", Mode.HOST)) .setMnemonic("AarJarExtractor") .setProgressMessage("Extracting " + filename + " from " + aar.getFilename()) .addArgument("--input_archive") diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImportRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImportBaseRule.java index 2d09378c12..03590c3e1a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AarImportRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImportBaseRule.java @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.bazel.rules.android; +package com.google.devtools.build.lib.rules.android; import static com.google.devtools.build.lib.packages.Attribute.ANY_EDGE; import static com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition.HOST; @@ -19,18 +19,18 @@ import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LABEL; import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST; -import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; +import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.rules.android.AndroidRuleClasses.AndroidAaptBaseRule; import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; import com.google.devtools.build.lib.util.FileType; /** Rule definition for the aar_import rule. */ -public class AarImportRule implements RuleDefinition { +public class AarImportBaseRule implements RuleDefinition { @Override public RuleClass build(Builder builder, RuleDefinitionEnvironment environment) { @@ -43,16 +43,16 @@ public class AarImportRule implements RuleDefinition { .allowedRuleClasses("aar_import", "java_import") .allowedFileTypes() .validityPredicate(ANY_EDGE)) - .add(attr("$embedded_jar_extractor", LABEL) + .add(attr("$aar_embedded_jars_extractor", LABEL) .cfg(HOST) .exec() .value(Label.parseAbsoluteUnchecked( - environment.getToolsRepository() + "//tools/zip:embedded_jar_extractor"))) + environment.getToolsRepository() + "//tools/android:aar_embedded_jars_extractor"))) .add(attr("$zip_manifest_creator", LABEL) .cfg(HOST) .exec() .value(Label.parseAbsoluteUnchecked( - environment.getToolsRepository() + "//tools/zip:zip_manifest_creator"))) + environment.getToolsRepository() + "//tools/android:zip_manifest_creator"))) .add(attr("$zipper", LABEL) .cfg(HOST) .exec() @@ -65,11 +65,11 @@ public class AarImportRule implements RuleDefinition { @Override public Metadata getMetadata() { return RuleDefinition.Metadata.builder() - .name("aar_import") + .name("$aar_import_base") + .type(RuleClassType.ABSTRACT) // AndroidAaptBaseRule is needed for $android_manifest_merger which is used by the // ApplicationManifest class. - .ancestors(BaseRuleClasses.RuleBase.class, AndroidAaptBaseRule.class) - .factoryClass(AarImport.class) + .ancestors(AndroidAaptBaseRule.class) .build(); } } |