aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Adam Michael <ajmichael@google.com>2016-10-13 23:09:25 +0000
committerGravatar Yue Gan <yueg@google.com>2016-10-14 09:33:19 +0000
commit78c19807d2cbb308b830022dcdcc8b03f19f90a9 (patch)
tree1dea0ad109a5195415b68756f130a5869007c51c /src/main/java/com/google/devtools/build
parentf61277fe5d89de793037c739d79b2a0005eaaa76 (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/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java42
-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();
}
}