aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/actions
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-01-18 14:19:33 +0000
committerGravatar Han-Wen Nienhuys <hanwen@google.com>2016-01-18 14:35:07 +0000
commit39125b2213d60a52db0a186e2887d007010221cd (patch)
tree3f2b41bfb93712d11826ace7823dd95ce5750918 /src/main/java/com/google/devtools/build/lib/actions
parent8c04e9e0b5ae55107460a3be73d09f2402c51580 (diff)
Fix #757: Bazel does not copy xml test output from sandbox.
-- MOS_MIGRATED_REVID=112404257
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions')
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java64
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/actions/Spawn.java6
3 files changed, 67 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
index 0a0955538e..8e34389185 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BaseSpawn.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.actions;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.extra.EnvironmentVariable;
import com.google.devtools.build.lib.actions.extra.SpawnInfo;
@@ -41,6 +42,7 @@ public class BaseSpawn implements Spawn {
private final ImmutableMap<String, String> environment;
private final ImmutableMap<String, String> executionInfo;
private final ImmutableMap<PathFragment, Artifact> runfilesManifests;
+ private final ImmutableSet<PathFragment> optionalOutputFiles;
private final RunfilesSupplier runfilesSupplier;
private final ActionMetadata action;
private final ResourceSet localResources;
@@ -49,13 +51,15 @@ public class BaseSpawn implements Spawn {
// policy on runfilesManifests and runfilesSupplier being non-empty (ie: are overlapping mappings
// allowed?).
@VisibleForTesting
- BaseSpawn(List<String> arguments,
+ BaseSpawn(
+ List<String> arguments,
Map<String, String> environment,
Map<String, String> executionInfo,
Map<PathFragment, Artifact> runfilesManifests,
RunfilesSupplier runfilesSupplier,
ActionMetadata action,
- ResourceSet localResources) {
+ ResourceSet localResources,
+ Collection<PathFragment> optionalOutputFiles) {
this.arguments = ImmutableList.copyOf(arguments);
this.environment = ImmutableMap.copyOf(environment);
this.executionInfo = ImmutableMap.copyOf(executionInfo);
@@ -63,6 +67,7 @@ public class BaseSpawn implements Spawn {
this.runfilesSupplier = runfilesSupplier;
this.action = action;
this.localResources = localResources;
+ this.optionalOutputFiles = ImmutableSet.copyOf(optionalOutputFiles);
}
/**
@@ -75,8 +80,15 @@ public class BaseSpawn implements Spawn {
RunfilesSupplier runfilesSupplier,
ActionMetadata action,
ResourceSet localResources) {
- this(arguments, environment, executionInfo, ImmutableMap.<PathFragment, Artifact>of(),
- runfilesSupplier, action, localResources);
+ this(
+ arguments,
+ environment,
+ executionInfo,
+ ImmutableMap.<PathFragment, Artifact>of(),
+ runfilesSupplier,
+ action,
+ localResources,
+ ImmutableSet.<PathFragment>of());
}
/**
@@ -89,8 +101,15 @@ public class BaseSpawn implements Spawn {
Map<PathFragment, Artifact> runfilesManifests,
ActionMetadata action,
ResourceSet localResources) {
- this(arguments, environment, executionInfo, runfilesManifests, EmptyRunfilesSupplier.INSTANCE,
- action, localResources);
+ this(
+ arguments,
+ environment,
+ executionInfo,
+ runfilesManifests,
+ EmptyRunfilesSupplier.INSTANCE,
+ action,
+ localResources,
+ ImmutableSet.<PathFragment>of());
}
/**
@@ -101,8 +120,32 @@ public class BaseSpawn implements Spawn {
Map<String, String> executionInfo,
ActionMetadata action,
ResourceSet localResources) {
- this(arguments, environment, executionInfo,
- ImmutableMap.<PathFragment, Artifact>of(), action, localResources);
+ this(
+ arguments,
+ environment,
+ executionInfo,
+ ImmutableMap.<PathFragment, Artifact>of(),
+ action,
+ localResources);
+ }
+
+ public BaseSpawn(
+ List<String> arguments,
+ Map<String, String> environment,
+ Map<String, String> executionInfo,
+ RunfilesSupplier runfilesSupplier,
+ ActionMetadata action,
+ ResourceSet localResources,
+ Collection<PathFragment> optionalOutputFiles) {
+ this(
+ arguments,
+ environment,
+ executionInfo,
+ ImmutableMap.<PathFragment, Artifact>of(),
+ runfilesSupplier,
+ action,
+ localResources,
+ optionalOutputFiles);
}
public static PathFragment runfilesForFragment(PathFragment pathFragment) {
@@ -210,6 +253,11 @@ public class BaseSpawn implements Spawn {
}
@Override
+ public Collection<PathFragment> getOptionalOutputFiles() {
+ return optionalOutputFiles;
+ }
+
+ @Override
public ActionMetadata getResourceOwner() {
return action;
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
index 2c0a0ad5ca..acb9cd64d4 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/DelegateSpawn.java
@@ -95,6 +95,11 @@ public class DelegateSpawn implements Spawn {
}
@Override
+ public Collection<PathFragment> getOptionalOutputFiles() {
+ return spawn.getOptionalOutputFiles();
+ }
+
+ @Override
public ActionMetadata getResourceOwner() {
return spawn.getResourceOwner();
}
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
index d027f70570..b4ed5c79fa 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Spawn.java
@@ -121,6 +121,12 @@ public interface Spawn {
Collection<? extends ActionInput> getOutputFiles();
/**
+ * Instructs the spawn strategy to try to fetch these optional output files in addition to the
+ * usual output artifacts. The PathFragments should be relative to the exec root.
+ */
+ Collection<PathFragment> getOptionalOutputFiles();
+
+ /**
* Returns the resource owner for local fallback.
*/
ActionMetadata getResourceOwner();