diff options
author | Kristina Chodorow <kchodorow@google.com> | 2015-03-02 15:51:58 +0000 |
---|---|---|
committer | Ulf Adams <ulfjack@google.com> | 2015-03-05 14:16:41 +0000 |
commit | b579b9488fb71faa39f17bcc76d87c4396e90735 (patch) | |
tree | 3e3efe4dfcab3bf30c04f82a354b313272090c7b | |
parent | c9bacf1bf8450be5ebe1e94f50706089dbf33225 (diff) |
Get runfiles prefix from the WORKSPACE file
--
MOS_MIGRATED_REVID=87513766
13 files changed, 75 insertions, 114 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 <target>.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 <target>.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(); } diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java index 1743349d9a..f220064fb0 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java +++ b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java @@ -27,12 +27,9 @@ import com.google.devtools.build.lib.analysis.config.BinTools; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.exec.ExecutionOptions; import com.google.devtools.build.lib.exec.FileWriteStrategy; -import com.google.devtools.build.lib.exec.SourceManifestActionContextImpl; import com.google.devtools.build.lib.exec.SymlinkTreeStrategy; import com.google.devtools.build.lib.runtime.CommonCommandOptions; -import com.google.devtools.build.lib.testutil.TestConstants; import com.google.devtools.build.lib.util.BlazeClock; -import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.OptionsBase; import com.google.devtools.common.options.OptionsParser; import com.google.devtools.common.options.OptionsParsingException; @@ -57,9 +54,6 @@ public class TestExecutorBuilder { public TestExecutorBuilder(BlazeDirectories directories, BinTools binTools) { this.directories = directories; - - strategies.add(new SourceManifestActionContextImpl( - new PathFragment(TestConstants.RUNFILES_PREFIX))); strategies.add(new FileWriteStrategy()); strategies.add(new SymlinkTreeStrategy(null, binTools)); } |