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")