aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-06-05 17:29:57 +0000
committerGravatar Laurent Le Brun <laurentlb@google.com>2015-06-08 12:53:21 +0000
commitb7db691fd3fedb05bb772de03f5171a7490f8127 (patch)
tree2d1e3321a3f2baf25cec65a12d93f30778de80ac /src/main/java
parent84a7c337b457681e59816391feda71ac79577117 (diff)
*** Reason for rollback *** Emulator is missing GLIBC_2.7 for certain cases. *** Original change description *** Remove the dynamic tool launcher, now that the android tools are static. -- MOS_MIGRATED_REVID=95302834
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidTools.java18
3 files changed, 37 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
index 587813b5fd..7ba64f7354 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidAaptActionHelper.java
@@ -15,11 +15,13 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction.Builder;
@@ -67,6 +69,13 @@ public final class AndroidAaptActionHelper {
*/
private Iterable<Artifact> getInputs() {
if (inputs.isEmpty()) {
+ // TODO(bazel-team): When using getFilesToRun(), the middleman is
+ // not expanded. Fix by providing code to expand and use getFilesToRun here.
+ RunfilesSupport aaptRunnerRunfiles = tools.getToolRunner().getRunfilesSupport();
+ Preconditions.checkState(aaptRunnerRunfiles != null, tools.getToolRunner().getLabel());
+ // Note the below may be an overapproximation of the actual runfiles, due to "conditional
+ // artifacts" (see Runfiles.PruningManifest).
+ Iterables.addAll(inputs, aaptRunnerRunfiles.getRunfilesArtifactsWithoutMiddlemen());
inputs.add(tools.getAndroidJar());
inputs.add(manifest);
Iterables.addAll(inputs, Iterables.concat(Iterables.transform(resourceContainers,
@@ -164,6 +173,7 @@ public final class AndroidAaptActionHelper {
List<String> args = new ArrayList<>();
args.addAll(getArgs(output, actionKind, ResourceType.RESOURCES));
args.addAll(getArgs(output, actionKind, ResourceType.ASSETS));
+ args.add(tools.getToolRunner().getExecutable().getExecPathString());
args.add(tools.getAapt().getExecutable().getExecPathString());
args.add("package");
Collections.addAll(args, outputArgs);
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 5ab0842157..dd4e791e2a 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
@@ -17,6 +17,7 @@ import static com.google.devtools.build.lib.analysis.config.BuildConfiguration.S
import static com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode.ERROR;
import static com.google.devtools.build.lib.analysis.config.BuildConfiguration.StrictDepsMode.STRICT;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
@@ -30,6 +31,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
+import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
@@ -598,6 +600,8 @@ public class AndroidCommon {
private void generateAndroidIdlActions(RuleContext ruleContext, AndroidTools tools,
Collection<Artifact> idls, AndroidIdlProvider transitiveIdlImportData,
Map<Artifact, Artifact> translatedIdlSources) {
+ FilesToRunProvider toolRunner =
+ ruleContext.getExecutablePrerequisite("$android_tool_runner", Mode.HOST);
Set<Artifact> preprocessedIdls = new LinkedHashSet<>();
List<String> preprocessedArgs = new ArrayList<>();
@@ -620,7 +624,7 @@ public class AndroidCommon {
preprocessedIdls.add(preprocessed);
preprocessedArgs.add("-p" + preprocessed.getExecPathString());
- createAndroidIdlPreprocessAction(ruleContext, tools, idl, preprocessed);
+ createAndroidIdlPreprocessAction(ruleContext, tools, toolRunner, idl, preprocessed);
}
// aggregate all preprocessed aidl files
@@ -630,14 +634,16 @@ public class AndroidCommon {
ruleContext.getConfiguration().getMiddlemanDirectory());
for (Artifact idl : translatedIdlSources.keySet()) {
- createAndroidIdlAction(ruleContext, tools, idl,
+ createAndroidIdlAction(ruleContext, tools, toolRunner, idl,
transitiveIdlImportData.getTransitiveIdlImports(),
preprocessedIdlsMiddleman, translatedIdlSources.get(idl), preprocessedArgs);
}
}
private void createAndroidIdlPreprocessAction(RuleContext ruleContext, AndroidTools tools,
- Artifact idl, Artifact preprocessed) {
+ FilesToRunProvider toolRunner, Artifact idl, Artifact preprocessed) {
+ RunfilesSupport toolRunnerRunfiles = toolRunner.getRunfilesSupport();
+ Preconditions.checkState(toolRunnerRunfiles != null, toolRunner.getLabel());
ruleContext.registerAction(tools.aidlAction()
// Note the below may be an overapproximation of the actual runfiles, due to "conditional
// artifacts" (see Runfiles.PruningManifest).
@@ -654,8 +660,11 @@ public class AndroidCommon {
}
private void createAndroidIdlAction(RuleContext ruleContext, AndroidTools tools,
+ FilesToRunProvider toolRunner,
Artifact idl, Iterable<Artifact> idlImports, Artifact preprocessedIdls,
Artifact output, List<String> preprocessedArgs) {
+ RunfilesSupport toolRunnerRunfiles = toolRunner.getRunfilesSupport();
+ Preconditions.checkState(toolRunnerRunfiles != null, toolRunner.getLabel());
ruleContext.registerAction(tools.aidlAction()
.addInput(idl)
.addInputs(idlImports)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidTools.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidTools.java
index 65505ab14d..5e57c27e04 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidTools.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidTools.java
@@ -36,6 +36,7 @@ public class AndroidTools {
private final Artifact aidlTool;
private final Artifact frameworkAidl;
private final FilesToRunProvider adb;
+ private final FilesToRunProvider toolRunner;
private final FilesToRunProvider aaptJavaGenerator;
private final FilesToRunProvider apkGenerator;
private final FilesToRunProvider resourceProcessor;
@@ -68,6 +69,7 @@ public class AndroidTools {
getOptionalArtifact(ruleContext, "$android_aidl_framework"),
getOptionalToolFromArtifact(ruleContext, "$android_aapt"),
getOptionalToolFromArtifact(ruleContext, "$adb"),
+ getOptionalTool(ruleContext, "$android_tool_runner"),
getOptionalTool(ruleContext, "$android_aapt_java_generator"),
getOptionalTool(ruleContext, "$android_aapt_apk_generator"),
getOptionalTool(ruleContext, ":android_resources_processor"),
@@ -141,6 +143,7 @@ public class AndroidTools {
Artifact frameworkAidl,
FilesToRunProvider aapt,
FilesToRunProvider adb,
+ FilesToRunProvider toolRunner,
FilesToRunProvider aaptJavaGenerator,
FilesToRunProvider apkGenerator,
FilesToRunProvider resourceProcessor,
@@ -159,6 +162,7 @@ public class AndroidTools {
this.aidlTool = aidlTool;
this.frameworkAidl = frameworkAidl;
this.adb = adb;
+ this.toolRunner = toolRunner;
this.aaptJavaGenerator = aaptJavaGenerator;
this.apkGenerator = apkGenerator;
this.resourceProcessor = resourceProcessor;
@@ -195,6 +199,10 @@ public class AndroidTools {
return androidSdk != null ? androidSdk.getAdb() : adb;
}
+ public FilesToRunProvider getToolRunner() {
+ return toolRunner;
+ }
+
public FilesToRunProvider getAaptJavaGenerator() {
return aaptJavaGenerator;
}
@@ -301,10 +309,14 @@ public class AndroidTools {
public SpawnAction.Builder aidlAction() {
return androidSdk != null
? new SpawnAction.Builder()
- .addInput(androidSdk.getAidl().getExecutable())
.setExecutable(androidSdk.getAidl())
: new SpawnAction.Builder()
- .addInput(aidlTool)
- .setExecutable(aidlTool);
+ // Note the below may be an overapproximation of the actual runfiles, due to
+ // "conditional artifacts" (see Runfiles.PruningManifest).
+ // TODO(bazel-team): When using getFilesToRun(), the middleman is
+ // not expanded. Fix by providing code to expand and use getFilesToRun here.
+ .addInputs(toolRunner.getRunfilesSupport().getRunfilesArtifactsWithoutMiddlemen())
+ .setExecutable(toolRunner.getExecutable())
+ .addInputArgument(aidlTool);
}
} \ No newline at end of file