diff options
author | Benjamin Peterson <bp@benjamin.pe> | 2018-02-05 09:36:27 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-02-05 09:37:52 -0800 |
commit | 73fcc7a72d70245280f63d171c654babf1cc579a (patch) | |
tree | 2c518b3e587fc2564a60f1438737b5d4203a3433 /src/main/java/com/google/devtools/build/lib/rules | |
parent | ac09f0a1b39092aa92cd86ffe51b30488e3ae312 (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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidDevice.java | 23 |
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 |