Use a relative path for the runfiles tree
Add preconditions to enforce this and remove some now unnecessary code.
A small step towards #1593.
--
PiperOrigin-RevId: 150625693
MOS_MIGRATED_REVID=150625693
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImpl.java
index 79ecce1..a863234 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImpl.java
@@ -65,6 +65,7 @@
PathFragment runfilesDir,
Runfiles runfiles,
@Nullable Artifact manifest) {
+ Preconditions.checkArgument(!runfilesDir.isAbsolute());
this.runfilesDir = Preconditions.checkNotNull(runfilesDir);
this.runfiles = Preconditions.checkNotNull(runfiles);
this.manifest = manifest;
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
index ac42e14..f338d2b 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
@@ -118,7 +118,7 @@
ImmutableMap.copyOf(env),
ImmutableMap.copyOf(info),
new RunfilesSupplierImpl(
- runfilesDir.asFragment(), action.getExecutionSettings().getRunfiles()),
+ runfilesDir.relativeTo(execRoot), action.getExecutionSettings().getRunfiles()),
/*inputs=*/ImmutableList.copyOf(action.getInputs()),
/*tools=*/ImmutableList.<Artifact>of(),
/*filesetManifests=*/ImmutableList.<Artifact>of(),
diff --git a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
index 28a0b2a..d8bb0a7 100644
--- a/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
+++ b/src/main/java/com/google/devtools/build/lib/sandbox/SpawnHelpers.java
@@ -145,9 +145,7 @@
for (Map.Entry<PathFragment, Map<PathFragment, Artifact>> rootAndMappings :
rootsAndMappings.entrySet()) {
PathFragment root = rootAndMappings.getKey();
- if (root.isAbsolute()) {
- root = root.relativeTo(execRoot.asFragment());
- }
+ Preconditions.checkState(!root.isAbsolute());
for (Map.Entry<PathFragment, Artifact> mapping : rootAndMappings.getValue().entrySet()) {
Artifact sourceArtifact = mapping.getValue();
Path source =
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
index 150ed7a..8aef0e6 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTest.java
@@ -353,7 +353,7 @@
Action[] actions = builder()
.addInput(manifest)
.addRunfilesSupplier(
- new RunfilesSupplierImpl(new PathFragment("/destination/"), Runfiles.EMPTY, manifest))
+ new RunfilesSupplierImpl(new PathFragment("destination"), Runfiles.EMPTY, manifest))
.addOutput(getBinArtifactWithNoOwner("output"))
.setExecutable(scratch.file("/bin/xxx").asFragment())
.setProgressMessage("Test")