aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-06-17 13:44:04 +0000
committerGravatar John Field <jfield@google.com>2015-06-17 15:24:43 +0000
commit9c37ab153ed19a8018e2c76891b63f66042d8f29 (patch)
treeeed65bba27ec107a832bd62bc3b21435ac152fec
parent54c8be9e14d5ce1f00277eb3ba9d67325ef280e7 (diff)
Add a tools/android/jack package to the Bazel tree so that Android rules actually work. This is a temporary measure until these targets are integrated into android_sdk .
Also make handling invalid tools/android/jack packages in JackCompilationHelper a bit more robust. -- MOS_MIGRATED_REVID=96202009
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/JackAspect.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java12
-rw-r--r--tools/android/jack/BUILD23
-rw-r--r--tools/android/jack/empty0
-rwxr-xr-xtools/android/jack/fail.sh15
9 files changed, 65 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index dd650e04a6..0f52356e57 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -99,6 +99,9 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
getTransitiveResourceContainers(ruleContext, ImmutableList.of("resources", "deps")),
javaCommon, androidCommon, javaSemantics, androidSemantics, tools,
ImmutableList.<String>of("deps"));
+ if (builder == null) {
+ return null;
+ }
return builder.build();
} catch (RuleConfigurationException e) {
Preconditions.checkArgument(ruleContext.hasErrors(),
@@ -256,6 +259,9 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
JavaTargetAttributes resourceClasses = androidCommon.init(
javaSemantics, androidSemantics, tools, resourceApk, AndroidIdlProvider.EMPTY,
ruleContext.getConfiguration().isCodeCoverageEnabled(), true);
+ if (resourceClasses == null) {
+ return null;
+ }
Artifact deployJar = createDeployJar(ruleContext, javaSemantics, androidCommon, resourceClasses,
ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_BINARY_DEPLOY_JAR));
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 f3f047e24e..9826c2ec05 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
@@ -330,6 +330,9 @@ public class AndroidCommon {
}
jackCompilationHelper = initJack(helper.getAttributes(), javaSemantics);
+ if (jackCompilationHelper == null) {
+ return null;
+ }
initJava(
helper, artifactsBuilder, collectJavaCompilationArgs, resourceApk.getResourceJavaSrcJar());
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 9e5559b78b..af4e4fa794 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
@@ -97,8 +97,10 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
false,
null /* proguardCfgOut */);
- androidCommon.init(javaSemantics, androidSemantics, tools,
- resourceApk, transitiveIdlImportData, false, true);
+ if (androidCommon.init(javaSemantics, androidSemantics, tools,
+ resourceApk, transitiveIdlImportData, false, true) == null) {
+ return null;
+ }
Artifact classesJar = mergeJarsFromSrcs(ruleContext,
ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_LIBRARY_CLASS_JAR));
@@ -145,9 +147,10 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
JavaCommon javaCommon = new JavaCommon(ruleContext, javaSemantics);
AndroidCommon androidCommon = new AndroidCommon(ruleContext, javaCommon);
ResourceApk resourceApk = ResourceApk.fromTransitiveResources(transitiveResources);
- androidCommon.init(javaSemantics, androidSemantics, tools,
- resourceApk, transitiveIdlImportData, false, true);
-
+ if (androidCommon.init(javaSemantics, androidSemantics, tools,
+ resourceApk, transitiveIdlImportData, false, true) == null) {
+ return null;
+ }
RuleConfiguredTargetBuilder targetBuilder = androidCommon.addTransitiveInfoProviders(
new RuleConfiguredTargetBuilder(ruleContext), tools);
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 103dcc4bc6..9f719402c1 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
@@ -551,6 +551,7 @@ public final class AndroidRuleClasses {
.value(env.getLabel("//tools/android/jack:resource_extractor")))
.add(attr("$android_jack", LABEL)
.cfg(HOST)
+ .singleArtifact()
.value(env.getLabel("//tools/android/jack:android_jack")))
.build();
}
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 236ce567d7..61f9fb5165 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
@@ -100,6 +100,9 @@ public final class JackAspect implements ConfiguredAspectFactory {
.addDeps(getPotentialDependency(ruleContext, "deps"))
.addRuntimeDeps(getPotentialDependency(ruleContext, "runtime_deps"))
.build();
+ if (jackHelper == null) {
+ return null;
+ }
JackLibraryProvider result =
JavaCommon.isNeverLink(ruleContext)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
index f0ff9554d8..247a37ffeb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/JackCompilationHelper.java
@@ -808,13 +808,13 @@ public final class JackCompilationHelper {
.getConfiguration()
.getFragment(AndroidConfiguration.class)
.isJackSanityChecked();
- FilesToRunProvider jackBinary =
- Preconditions.checkNotNull(ruleContext.getExecutablePrerequisite("$jack", Mode.HOST));
- FilesToRunProvider jillBinary =
- Preconditions.checkNotNull(ruleContext.getExecutablePrerequisite("$jill", Mode.HOST));
+ FilesToRunProvider jackBinary = ruleContext.getExecutablePrerequisite("$jack", Mode.HOST);
+ FilesToRunProvider jillBinary = ruleContext.getExecutablePrerequisite("$jill", Mode.HOST);
FilesToRunProvider resourceExtractorBinary =
- Preconditions.checkNotNull(
- ruleContext.getExecutablePrerequisite("$resource_extractor", Mode.HOST));
+ ruleContext.getExecutablePrerequisite("$resource_extractor", Mode.HOST);
+ if (ruleContext.hasErrors()) {
+ return null;
+ }
return new JackCompilationHelper(
Preconditions.checkNotNull(ruleContext),
diff --git a/tools/android/jack/BUILD b/tools/android/jack/BUILD
new file mode 100644
index 0000000000..fd59375de0
--- /dev/null
+++ b/tools/android/jack/BUILD
@@ -0,0 +1,23 @@
+# Stub tools for the upcoming Jack support in Bazel.
+
+package(default_visibility = ["//visibility:public"])
+
+sh_binary(
+ name = "jack",
+ srcs = ["fail.sh"],
+)
+
+filegroup(
+ name = "android_jack",
+ srcs = ["empty"],
+)
+
+sh_binary(
+ name = "jill",
+ srcs = ["fail.sh"],
+)
+
+sh_binary(
+ name = "resource_extractor",
+ srcs = ["fail.sh"],
+)
diff --git a/tools/android/jack/empty b/tools/android/jack/empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/android/jack/empty
diff --git a/tools/android/jack/fail.sh b/tools/android/jack/fail.sh
new file mode 100755
index 0000000000..59b453bcbe
--- /dev/null
+++ b/tools/android/jack/fail.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# Copyright 2015 Google Inc. 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.
+exit 1