aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Benjamin Peterson <bp@benjamin.pe>2018-02-05 09:36:27 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-05 09:37:52 -0800
commit73fcc7a72d70245280f63d171c654babf1cc579a (patch)
tree2c518b3e587fc2564a60f1438737b5d4203a3433
parentac09f0a1b39092aa92cd86ffe51b30488e3ae312 (diff)
Fix AndroidDevice to never put the unified launcher's runfiles middleman in the runfiles tree.
As I understand it, this is only a theoretical issue today because $unified_launcher is generally a flat file. (Flat files never have runfiles middlemen.) However, it's good to be future proof. Change-Id: If77edfa9dd7475ab93b19c62b08f8d86a77acbe6 PiperOrigin-RevId: 184540188
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
index 8f44097450..76c22c7426 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java
@@ -110,16 +110,20 @@ public class AndroidDevice implements RuleConfiguredTargetFactory {
deviceAttributes.createStubScriptAction(metadata, images, executable, ruleContext);
deviceAttributes.createBootAction(metadata, images);
- Runfiles runfiles =
+ FilesToRunProvider unifiedLauncher = deviceAttributes.getUnifiedLauncher();
+ Runfiles.Builder runfilesBuilder =
new Runfiles.Builder(ruleContext.getWorkspaceName())
.addTransitiveArtifacts(filesToBuild)
.addArtifacts(commonDependencyArtifacts)
- .addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES)
- .merge(
- ruleContext
- .getExecutablePrerequisite("$unified_launcher", Mode.HOST)
- .getRunfilesSupport())
- .build();
+ .addRunfiles(ruleContext, RunfilesProvider.DEFAULT_RUNFILES);
+ if (unifiedLauncher.getRunfilesSupport() != null) {
+ runfilesBuilder
+ .merge(unifiedLauncher.getRunfilesSupport().getRunfiles())
+ .addLegacyExtraMiddleman(unifiedLauncher.getRunfilesSupport().getRunfilesMiddleman());
+ } else {
+ runfilesBuilder.addTransitiveArtifacts(unifiedLauncher.getFilesToRun());
+ }
+ Runfiles runfiles = runfilesBuilder.build();
RunfilesSupport runfilesSupport =
RunfilesSupport.withExecutable(ruleContext, runfiles, executable);
NestedSet<Artifact> extraFilesToRun =
@@ -265,7 +269,6 @@ public class AndroidDevice implements RuleConfiguredTargetFactory {
.addAll(xvfbSupportFiles)
.add(mksdcard)
.add(snapshotFs)
- .addAll(unifiedLauncher.getFilesToRun())
.addAll(androidRuntestDeps)
.addAll(testingShbaseDeps)
.addAll(platformApks)
@@ -314,6 +317,10 @@ public class AndroidDevice implements RuleConfiguredTargetFactory {
ruleContext.getActionOwner(), executable, STUB_SCRIPT, arguments, true));
}
+ public FilesToRunProvider getUnifiedLauncher() {
+ return unifiedLauncher;
+ }
+
public void createBootAction(Artifact metadata, Artifact images) {
// the boot action will run during the build so use execpath
// strings to find all dependent artifacts (there is no nicely created runfiles