aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2015-03-02 15:51:58 +0000
committerGravatar Ulf Adams <ulfjack@google.com>2015-03-05 14:16:41 +0000
commitb579b9488fb71faa39f17bcc76d87c4396e90735 (patch)
tree3e3efe4dfcab3bf30c04f82a354b313272090c7b /src/main/java/com/google/devtools/build
parentc9bacf1bf8450be5ebe1e94f50706089dbf33225 (diff)
Get runfiles prefix from the WORKSPACE file
-- MOS_MIGRATED_REVID=87513766
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java47
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/SourceManifestActionContextImpl.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java9
12 files changed, 75 insertions, 108 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index a4da4b4b25..22274fdd33 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -21,8 +21,10 @@ import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
+import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.Runfiles.Builder;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -78,6 +80,12 @@ public final class Runfiles {
// It is important to declare this *after* the DUMMY_SYMLINK_EXPANDER to avoid NPEs
public static final Runfiles EMPTY = new Builder().build();
+ /**
+ * The directory to put all runfiles under.
+ *
+ * <p>Using "foo" will put runfiles under &lt;target&gt;.runfiles/foo.</p>
+ */
+ private final String suffix;
/**
* The artifacts that should *always* be present in the runfiles directory. These are
@@ -162,11 +170,13 @@ public final class Runfiles {
*/
private final NestedSet<PruningManifest> pruningManifests;
- private Runfiles(NestedSet<Artifact> artifacts,
+ private Runfiles(String suffix,
+ NestedSet<Artifact> artifacts,
NestedSet<Map.Entry<PathFragment, Artifact>> symlinks,
NestedSet<Map.Entry<PathFragment, Artifact>> rootSymlinks,
NestedSet<PruningManifest> pruningManifests,
Function<Map<PathFragment, Artifact>, Map<PathFragment, Artifact>> expander) {
+ this.suffix = suffix == null ? Constants.RUNFILES_PREFIX : suffix;
this.unconditionalArtifacts = Preconditions.checkNotNull(artifacts);
this.symlinks = Preconditions.checkNotNull(symlinks);
this.rootSymlinks = Preconditions.checkNotNull(rootSymlinks);
@@ -175,6 +185,13 @@ public final class Runfiles {
}
/**
+ * Returns the runfiles' suffix.
+ */
+ public String getSuffix() {
+ return suffix;
+ }
+
+ /**
* Returns the artifacts that are unconditionally included in the runfiles (as opposed to
* pruning manifest candidates, which may or may not be included).
*/
@@ -282,7 +299,7 @@ public final class Runfiles {
* entries, the second of any elements that live outside the source tree.
*/
public Pair<Map<PathFragment, Artifact>, Map<PathFragment, Artifact>> getRunfilesInputs(
- PathFragment root, String workspaceSuffix, EventHandler eventHandler, Location location)
+ PathFragment root, EventHandler eventHandler, Location location)
throws IOException {
Map<PathFragment, Artifact> manifest = getSymlinksAsMap();
// Add unconditional artifacts (committed to inclusion on construction of runfiles).
@@ -310,7 +327,7 @@ public final class Runfiles {
manifest = filterListForObscuringSymlinks(eventHandler, location, manifest);
manifest.putAll(manifestExpander.apply(manifest));
- PathFragment path = new PathFragment(workspaceSuffix);
+ PathFragment path = new PathFragment(suffix);
Map<PathFragment, Artifact> result = new HashMap<>();
for (Map.Entry<PathFragment, Artifact> entry : manifest.entrySet()) {
result.put(path.getRelative(entry.getKey()), entry.getValue());
@@ -410,6 +427,9 @@ public final class Runfiles {
* Builder for Runfiles objects.
*/
public static final class Builder {
+
+ private String suffix;
+
/**
* This must be COMPILE_ORDER because {@link #asMapWithoutRootSymlinks} overwrites earlier
* entries with later ones, so we want a post-order iteration.
@@ -429,7 +449,7 @@ public final class Runfiles {
* Builds a new Runfiles object.
*/
public Runfiles build() {
- return new Runfiles(artifactsBuilder.build(), symlinksBuilder.build(),
+ return new Runfiles(suffix, artifactsBuilder.build(), symlinksBuilder.build(),
rootSymlinksBuilder.build(), pruningManifestsBuilder.build(),
manifestExpander);
}
@@ -597,6 +617,7 @@ public final class Runfiles {
Function<TransitiveInfoCollection, Runfiles> mapping) {
Preconditions.checkNotNull(mapping);
Preconditions.checkNotNull(ruleContext);
+ suffix = ruleContext.getWorkspaceName();
addDataDeps(ruleContext);
addNonDataDeps(ruleContext, mapping);
return this;
@@ -611,6 +632,7 @@ public final class Runfiles {
Function<TransitiveInfoCollection, Runfiles> mapping) {
Preconditions.checkNotNull(ruleContext);
Preconditions.checkNotNull(mapping);
+ suffix = ruleContext.getWorkspaceName();
for (TransitiveInfoCollection dep : getNonDataDeps(ruleContext)) {
Runfiles runfiles = mapping.apply(dep);
if (runfiles != null) {
@@ -625,8 +647,8 @@ public final class Runfiles {
* Collects runfiles from data dependencies of a target.
*/
public Builder addDataDeps(RuleContext ruleContext) {
- addTargets(getPrerequisites(ruleContext, "data", Mode.DATA),
- RunfilesProvider.DATA_RUNFILES);
+ suffix = ruleContext.getWorkspaceName();
+ addTargets(getPrerequisites(ruleContext, "data", Mode.DATA), RunfilesProvider.DATA_RUNFILES);
return this;
}
@@ -635,6 +657,7 @@ public final class Runfiles {
*/
public Builder addNonDataDeps(RuleContext ruleContext,
Function<TransitiveInfoCollection, Runfiles> mapping) {
+ suffix = ruleContext.getWorkspaceName();
for (TransitiveInfoCollection target : getNonDataDeps(ruleContext)) {
addTargetExceptFileTargets(target, mapping);
}
@@ -706,6 +729,15 @@ public final class Runfiles {
}
/**
+ * Sets the directory name to put runfiles under. "" is the default and puts the runfiles
+ * immediately under the &lt;target&gt;.runfiles directory.
+ */
+ public Builder setSuffix(String workspaceName) {
+ suffix = workspaceName;
+ return this;
+ }
+
+ /**
* Add the other {@link Runfiles} object transitively, with the option to include or exclude
* pruning manifests in the merge.
*/
@@ -713,6 +745,9 @@ public final class Runfiles {
artifactsBuilder.addTransitive(runfiles.getUnconditionalArtifacts());
symlinksBuilder.addTransitive(runfiles.getSymlinks());
rootSymlinksBuilder.addTransitive(runfiles.getRootSymlinks());
+ if (suffix == null) {
+ suffix = runfiles.suffix;
+ }
if (includePruningManifests) {
pruningManifestsBuilder.addTransitive(runfiles.getPruningManifests());
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
index 5aa3bdc933..20b13b8f83 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java
@@ -21,7 +21,6 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
-import com.google.devtools.build.lib.actions.Executor.ActionContext;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.util.Fingerprint;
@@ -53,12 +52,6 @@ import javax.annotation.Nullable;
* memory.
*/
public class SourceManifestAction extends AbstractFileWriteAction {
- /**
- * Action context that tells what workspace suffix we should use.
- */
- public interface Context extends ActionContext {
- PathFragment getRunfilesPrefix();
- }
private static final String GUID = "07459553-a3d0-4d37-9d78-18ed942470f4";
@@ -123,19 +116,16 @@ public class SourceManifestAction extends AbstractFileWriteAction {
}
@VisibleForTesting
- public void writeOutputFile(OutputStream out, EventHandler eventHandler, String workspaceSuffix)
+ public void writeOutputFile(OutputStream out, EventHandler eventHandler)
throws IOException {
- writeFile(out, runfiles.getRunfilesInputs(
- root, workspaceSuffix, eventHandler, getOwner().getLocation()));
+ writeFile(out, runfiles.getRunfilesInputs(root, eventHandler, getOwner().getLocation()));
}
@Override
public DeterministicWriter newDeterministicWriter(EventHandler eventHandler, Executor executor)
throws IOException {
final Pair<Map<PathFragment, Artifact>, Map<PathFragment, Artifact>> runfilesInputs =
- runfiles.getRunfilesInputs(root,
- executor.getContext(Context.class).getRunfilesPrefix().toString(), eventHandler,
- getOwner().getLocation());
+ runfiles.getRunfilesInputs(root, eventHandler, getOwner().getLocation());
return new DeterministicWriter() {
@Override
public void writeOutputFile(OutputStream out) throws IOException {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index b248b05c7f..b114efbdf4 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -71,7 +71,6 @@ import com.google.devtools.build.lib.exec.CheckUpToDateFilter;
import com.google.devtools.build.lib.exec.ExecutionOptions;
import com.google.devtools.build.lib.exec.OutputService;
import com.google.devtools.build.lib.exec.SingleBuildFileCache;
-import com.google.devtools.build.lib.exec.SourceManifestActionContextImpl;
import com.google.devtools.build.lib.exec.SymlinkTreeStrategy;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.profiler.ProfilePhase;
@@ -199,7 +198,6 @@ public class ExecutionTool {
actionContextProviders.add(new FilesetActionContextImpl.Provider(
runtime.getReporter(), runtime.getWorkspaceName()));
- strategies.add(new SourceManifestActionContextImpl(runtime.getRunfilesPrefix()));
strategies.add(new SymlinkTreeStrategy(runtime.getOutputService(), runtime.getBinTools()));
StrategyConverter strategyConverter = new StrategyConverter(actionContextProviders);
diff --git a/src/main/java/com/google/devtools/build/lib/exec/SourceManifestActionContextImpl.java b/src/main/java/com/google/devtools/build/lib/exec/SourceManifestActionContextImpl.java
deleted file mode 100644
index 40fed778c2..0000000000
--- a/src/main/java/com/google/devtools/build/lib/exec/SourceManifestActionContextImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2014 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.exec;
-
-import com.google.devtools.build.lib.actions.ExecutionStrategy;
-import com.google.devtools.build.lib.analysis.SourceManifestAction;
-import com.google.devtools.build.lib.vfs.PathFragment;
-
-/**
- * A context for {@link SourceManifestAction} that uses the runtime to determine
- * the workspace suffix.
- */
-@ExecutionStrategy(contextType = SourceManifestAction.Context.class)
-public class SourceManifestActionContextImpl implements SourceManifestAction.Context {
- private final PathFragment runfilesPrefix;
-
- public SourceManifestActionContextImpl(PathFragment runfilesPrefix) {
- this.runfilesPrefix = runfilesPrefix;
- }
-
- @Override
- public PathFragment getRunfilesPrefix() {
- return runfilesPrefix;
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 4fb0da35d8..2a6b77f5ec 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -19,7 +19,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
@@ -128,7 +127,7 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
List<Artifact> nativeLibraries = attributes.getNativeLibraries();
if (!nativeLibraries.isEmpty()) {
jvmFlags.add("-Djava.library.path="
- + JavaCommon.javaLibraryPath(nativeLibraries, Constants.RUNFILES_PREFIX));
+ + JavaCommon.javaLibraryPath(nativeLibraries, ruleContext.getRule().getWorkspaceName()));
}
JavaConfiguration javaConfig = ruleContext.getFragment(JavaConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index c260459133..54f0976cc5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -22,7 +22,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
-import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
@@ -346,8 +345,8 @@ public class JavaCommon {
javaExecutable = ruleContext.getFragment(Jvm.class).getJavaExecutable();
}
- String pathPrefix =
- javaExecutable.isAbsolute() ? "" : "${JAVA_RUNFILES}/" + Constants.RUNFILES_PREFIX + "/";
+ String pathPrefix = javaExecutable.isAbsolute() ? "" : "${JAVA_RUNFILES}/"
+ + ruleContext.getRule().getWorkspaceName() + "/";
return "JAVABIN=${JAVABIN:-" + pathPrefix + javaExecutable.getPathString() + "}";
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
index d0ff9573fc..aff00873a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/StandaloneTestStrategy.java
@@ -33,7 +33,6 @@ import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.util.io.FileOutErr;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.Path;
-import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.view.test.TestStatus.BlazeTestStatus;
import com.google.devtools.build.lib.view.test.TestStatus.TestCase;
import com.google.devtools.build.lib.view.test.TestStatus.TestResultData;
@@ -52,20 +51,15 @@ import java.util.Map;
public class StandaloneTestStrategy extends TestStrategy {
/*
TODO(bazel-team):
-
* tests
* It would be nice to get rid of (cd $TEST_SRCDIR) in the test-setup script.
* test timeouts.
* parsing XML output.
-
*/
- protected final PathFragment runfilesPrefix;
public StandaloneTestStrategy(OptionsClassProvider requestOptions,
- OptionsClassProvider startupOptions, BinTools binTools, PathFragment runfilesPrefix) {
+ OptionsClassProvider startupOptions, BinTools binTools) {
super(requestOptions, startupOptions, binTools);
-
- this.runfilesPrefix = runfilesPrefix;
}
private static final String TEST_SETUP = "tools/test/test-setup.sh";
@@ -81,7 +75,7 @@ public class StandaloneTestStrategy extends TestStrategy {
throw new TestExecException(e.getMessage());
}
- Path workingDirectory = runfilesDir.getRelative(runfilesPrefix);
+ Path workingDirectory = runfilesDir.getRelative(action.getRunfilesPrefix());
Map<String, String> env = getEnv(action, runfilesDir);
Spawn spawn = new BaseSpawn(getArgs(action), env,
action.getTestProperties().getExecutionInfo(),
@@ -127,13 +121,13 @@ public class StandaloneTestStrategy extends TestStrategy {
vars.putAll(config.getDefaultShellEnvironment());
vars.putAll(config.getTestEnv());
- vars.put("TEST_SRCDIR", runfilesDir.getRelative(runfilesPrefix).getPathString());
+ vars.put("TEST_SRCDIR", runfilesDir.getRelative(action.getRunfilesPrefix()).getPathString());
// TODO(bazel-team): set TEST_TMPDIR.
return vars;
}
-
+
private TestResultData execute(
ActionExecutionContext actionExecutionContext, Spawn spawn, TestRunnerAction action)
throws TestExecException, InterruptedException {
@@ -198,7 +192,7 @@ public class StandaloneTestStrategy extends TestStrategy {
} else {
if (result.getData().getStatus() == BlazeTestStatus.TIMEOUT) {
executor.getEventHandler().handle(
- new Event(EventKind.TIMEOUT, null, result.getTestName()
+ new Event(EventKind.TIMEOUT, null, result.getTestName()
+ " (see " + testOutput + ")"));
} else {
executor.getEventHandler().handle(
@@ -207,13 +201,13 @@ public class StandaloneTestStrategy extends TestStrategy {
}
}
}
-
- private final void finalizeTest(ActionExecutionContext actionExecutionContext,
+
+ private final void finalizeTest(ActionExecutionContext actionExecutionContext,
TestRunnerAction action, TestResultData data) throws IOException, ExecException {
TestResult result = new TestResult(action, data, false);
postTestResult(actionExecutionContext.getExecutor(), result);
- processTestOutput(actionExecutionContext.getExecutor(),
+ processTestOutput(actionExecutionContext.getExecutor(),
actionExecutionContext.getFileOutErr(), result);
// TODO(bazel-team): handle --test_output=errors, --test_output=all.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
index 2ac9a0fc5f..2b3b698828 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestActionBuilder.java
@@ -256,7 +256,7 @@ public final class TestActionBuilder {
testLog, cacheStatus,
coverageArtifact, microCoverageArtifact,
testProperties, executionSettings,
- shard, run, config));
+ shard, run, config, ruleContext.getWorkspaceName()));
results.add(cacheStatus);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
index 28500a752c..52fa09cc27 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestRunnerAction.java
@@ -79,6 +79,7 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
private final TestTargetExecutionSettings executionSettings;
private final int shardNum;
private final int runNumber;
+ private final String workspaceName;
// Mutable state related to test caching.
private boolean checkedCaching = false;
@@ -112,7 +113,8 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
TestTargetExecutionSettings executionSettings,
int shardNum,
int runNumber,
- BuildConfiguration configuration) {
+ BuildConfiguration configuration,
+ String workspaceName) {
super(owner, inputs, list(testLog, cacheStatus, coverageArtifact, microCoverageArtifact));
this.configuration = Preconditions.checkNotNull(configuration);
this.testLog = testLog;
@@ -147,6 +149,7 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
this.undeclaredOutputsManifestPath = undeclaredOutputsAnnotationsDir.getChild("MANIFEST");
this.undeclaredOutputsAnnotationsPath = undeclaredOutputsAnnotationsDir.getChild("ANNOTATIONS");
this.testInfrastructureFailure = baseDir.getChild(namePrefix + ".infrastructure_failure");
+ this.workspaceName = workspaceName;
}
public BuildConfiguration getConfiguration() {
@@ -165,7 +168,7 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
public boolean showsOutputUnconditionally() {
return true;
}
-
+
@Override
public int getInputCount() {
return Iterables.size(getInputs());
@@ -484,6 +487,13 @@ public class TestRunnerAction extends AbstractAction implements NotifyOnActionCa
return runNumber;
}
+ /**
+ * @return the workspace name.
+ */
+ public String getRunfilesPrefix() {
+ return workspaceName;
+ }
+
@Override
public Artifact getPrimaryOutput() {
return testLog;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index f0cf213928..dddc006a4d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -31,7 +31,6 @@ import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.common.eventbus.SubscriberExceptionHandler;
import com.google.common.util.concurrent.Uninterruptibles;
-import com.google.devtools.build.lib.Constants;
import com.google.devtools.build.lib.actions.PackageRootResolver;
import com.google.devtools.build.lib.actions.cache.ActionCache;
import com.google.devtools.build.lib.actions.cache.CompactPersistentActionCache;
@@ -181,9 +180,6 @@ public final class BlazeRuntime {
private Path workingDirectory;
private long commandStartTime;
- // Application-specified constants
- private final PathFragment runfilesPrefix;
-
private final SkyframeExecutor skyframeExecutor;
private final Reporter reporter;
@@ -247,7 +243,7 @@ public final class BlazeRuntime {
WorkspaceStatusAction.Factory workspaceStatusActionFactory,
final SkyframeExecutor skyframeExecutor,
PackageFactory pkgFactory, ConfiguredRuleClassProvider ruleClassProvider,
- ConfigurationFactory configurationFactory, PathFragment runfilesPrefix, Clock clock,
+ ConfigurationFactory configurationFactory, Clock clock,
OptionsProvider startupOptionsProvider, Iterable<BlazeModule> blazeModules,
Map<String, String> clientEnv,
TimestampGranularityMonitor timestampGranularityMonitor,
@@ -257,7 +253,6 @@ public final class BlazeRuntime {
this.directories = directories;
this.workingDirectory = directories.getWorkspace();
this.reporter = reporter;
- this.runfilesPrefix = runfilesPrefix;
this.packageFactory = pkgFactory;
this.binTools = binTools;
this.projectFileProvider = projectFileProvider;
@@ -342,7 +337,7 @@ public final class BlazeRuntime {
/**
* Conditionally enable profiling.
*/
- private final boolean initProfiler(CommonCommandOptions options,
+ private final boolean initProfiler(CommonCommandOptions options,
UUID buildID, long execStartTimeNanos) {
OutputStream out = null;
boolean recordFullProfilerData = false;
@@ -439,13 +434,6 @@ public final class BlazeRuntime {
}
/**
- * Returns any prefix to be inserted between relative source paths and the runfiles directory.
- */
- public PathFragment getRunfilesPrefix() {
- return runfilesPrefix;
- }
-
- /**
* Returns the Blaze directories object for this runtime.
*/
public BlazeDirectories getDirectories() {
@@ -1489,7 +1477,6 @@ public final class BlazeRuntime {
? new BlazeRuntime.BugReportingExceptionHandler()
: new BlazeRuntime.RemoteExceptionHandler());
- runtimeBuilder.setRunfilesPrefix(new PathFragment(Constants.RUNFILES_PREFIX));
for (BlazeModule blazeModule : blazeModules) {
runtimeBuilder.addBlazeModule(blazeModule);
}
@@ -1576,7 +1563,6 @@ public final class BlazeRuntime {
*/
public static class Builder {
- private PathFragment runfilesPrefix = PathFragment.EMPTY_FRAGMENT;
private BlazeDirectories directories;
private Reporter reporter;
private ConfigurationFactory configurationFactory;
@@ -1733,17 +1719,11 @@ public final class BlazeRuntime {
return new BlazeRuntime(directories, reporter, workspaceStatusActionFactory, skyframeExecutor,
pkgFactory, ruleClassProvider, configurationFactory,
- runfilesPrefix == null ? PathFragment.EMPTY_FRAGMENT : runfilesPrefix,
clock, startupOptionsProvider, ImmutableList.copyOf(blazeModules),
clientEnv, timestampMonitor,
eventBusExceptionHandler, binTools, projectFileProvider);
}
- public Builder setRunfilesPrefix(PathFragment prefix) {
- this.runfilesPrefix = prefix;
- return this;
- }
-
public Builder setBinTools(BinTools binTools) {
this.binTools = binTools;
return this;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 472b8d6741..b501162ef9 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -348,7 +348,7 @@ public class RunCommand implements BlazeCommand {
PathFragment runfilesDir = runfilesSupport.getRunfilesDirectoryExecPath();
Path workingDir = runtime.getExecRoot()
.getRelative(runfilesDir)
- .getRelative(runtime.getRunfilesPrefix());
+ .getRelative(runfilesSupport.getRunfiles().getSuffix());
// When runfiles are not generated, getManifest() returns the
// .runfiles_manifest file, otherwise it returns the MANIFEST file. This is
diff --git a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java
index dbfac2eb54..a70d1e109e 100644
--- a/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/standalone/StandaloneContextProvider.java
@@ -69,8 +69,7 @@ public class StandaloneContextProvider implements ActionContextProvider {
private final ImmutableList<ActionContext> strategies;
private final BlazeRuntime runtime;
- public StandaloneContextProvider(
- BlazeRuntime runtime, BuildRequest buildRequest) {
+ public StandaloneContextProvider(BlazeRuntime runtime, BuildRequest buildRequest) {
boolean verboseFailures = buildRequest.getOptions(ExecutionOptions.class).verboseFailures;
localSpawnStrategy = new LocalSpawnStrategy(
@@ -78,12 +77,12 @@ public class StandaloneContextProvider implements ActionContextProvider {
this.runtime = runtime;
TestActionContext testStrategy = new StandaloneTestStrategy(buildRequest,
- runtime.getStartupOptionsProvider(), runtime.getBinTools(), runtime.getRunfilesPrefix());
+ runtime.getStartupOptionsProvider(), runtime.getBinTools());
Builder<ActionContext> strategiesBuilder = ImmutableList.builder();
// order of strategies passed to builder is significant - when there are many strategies that
// could potentially be used and a spawnActionContext doesn't specify which one it wants, the
// last one from strategies list will be used
-
+
// put sandboxed strategy first, as we don't want it by default
if (OS.getCurrent() == OS.LINUX) {
LinuxSandboxedStrategy sandboxedLinuxStrategy =
@@ -98,7 +97,7 @@ public class StandaloneContextProvider implements ActionContextProvider {
new ExclusiveTestStrategy(testStrategy),
new LocalGccStrategy(buildRequest),
new FileWriteStrategy());
-
+
this.strategies = strategiesBuilder.build();
}