aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2016-08-26 16:14:37 +0000
committerGravatar John Cater <jcater@google.com>2016-08-26 18:42:42 +0000
commit8cb36d6bee170da857df3e50e72c8dcfceb5b7ff (patch)
tree9c9310435370714bd3be073cc6317d93883e2e23 /src/main/java
parent4c10f3f86f7a0530e83d4b2062b48676afafe2c0 (diff)
Remove all references to (incorrect) BlazeDirectories.buildDataDirectory root
The buildDataDirectory is calculated off of the incorrect execroot. More progress towards #1681. -- MOS_MIGRATED_REVID=131407798
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java34
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java12
7 files changed, 38 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
index 140d3c8488..859b63fec2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java
@@ -68,6 +68,7 @@ public final class BlazeDirectories {
String productName) {
this.serverDirectories = serverDirectories;
this.workspace = workspace;
+ this.productName = productName;
Path outputBase = serverDirectories.getOutputBase();
Path execRootBase = deepExecRoot ? outputBase.getChild("execroot") : outputBase;
boolean useDefaultExecRootName = this.workspace == null || this.workspace.isRootDirectory();
@@ -79,9 +80,8 @@ public final class BlazeDirectories {
this.execRoot = execRootBase.getChild(workspace.getBaseName());
}
String relativeOutputPath = getRelativeOutputPath(productName);
- this.outputPath = execRoot.getRelative(relativeOutputPath);
+ this.outputPath = execRoot.getRelative(getRelativeOutputPath());
this.localOutputPath = outputBase.getRelative(relativeOutputPath);
- this.productName = productName;
}
@VisibleForTesting
@@ -137,22 +137,40 @@ public final class BlazeDirectories {
}
/**
- * Returns the execution root. This is the directory underneath which Blaze builds the source
- * symlink forest, to represent the merged view of different workspaces specified
- * with --package_path.
+ * Returns the execution root for the main package. This is created before the workspace file
+ * has been read, so it has an incorrect path. Use {@link #getExecRoot(String)} instead.
*/
+ @Deprecated
public Path getExecRoot() {
return execRoot;
}
/**
- * Returns the output path used by this Blaze instance.
+ * Returns the execution root for a particular repository. This is the directory underneath which
+ * Blaze builds the source symlink forest, to represent the merged view of different workspaces
+ * specified with --package_path.
+ */
+ public Path getExecRoot(String workspaceName) {
+ return execRoot.getParentDirectory().getRelative(workspaceName);
+ }
+
+ /**
+ * Returns the output path for the main repository using the workspace's directory name. Use
+ * {@link #getOutputPath(String)}, instead.
*/
+ @Deprecated
public Path getOutputPath() {
return outputPath;
}
/**
+ * Returns the output path used by this Blaze instance.
+ */
+ public Path getOutputPath(String workspaceName) {
+ return getExecRoot(workspaceName).getRelative(getRelativeOutputPath());
+ }
+
+ /**
* Returns the local output path used by this Blaze instance.
*/
public Path getLocalOutputPath() {
@@ -180,8 +198,8 @@ public final class BlazeDirectories {
* Returns the configuration-independent root where the build-data should be placed, given the
* {@link BlazeDirectories} of this server instance. Nothing else should be placed here.
*/
- public Root getBuildDataDirectory() {
- return Root.asDerivedRoot(getExecRoot(), getOutputPath());
+ public Root getBuildDataDirectory(String workspaceName) {
+ return Root.asDerivedRoot(getExecRoot(workspaceName), getOutputPath(workspaceName));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 9078f96528..0fbaebb7d2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -477,7 +477,7 @@ public class BuildView {
}
}
- skyframeExecutor.injectWorkspaceStatusData();
+ skyframeExecutor.injectWorkspaceStatusData(loadingResult.getWorkspaceName());
SkyframeAnalysisResult skyframeAnalysisResult;
try {
skyframeAnalysisResult =
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java b/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java
index 90653115b2..064e0323bb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/WorkspaceStatusAction.java
@@ -29,7 +29,6 @@ import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.common.options.Option;
import com.google.devtools.common.options.OptionsBase;
-
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
@@ -181,7 +180,8 @@ public abstract class WorkspaceStatusAction extends AbstractAction {
* will be unconditionally re-executed on every build)
*/
WorkspaceStatusAction createWorkspaceStatusAction(
- ArtifactFactory artifactFactory, ArtifactOwner artifactOwner, Supplier<UUID> buildId);
+ ArtifactFactory artifactFactory, ArtifactOwner artifactOwner, Supplier<UUID> buildId,
+ String workspaceName);
/**
* Creates a dummy workspace status map. Used in cases where the build failed, so that part of
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
index 62066c89f8..2a4b4caf1f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
@@ -47,7 +47,6 @@ public interface BuildInfoFactory extends Serializable {
*/
public interface BuildInfoContext {
Artifact getBuildInfoArtifact(PathFragment rootRelativePath, Root root, BuildInfoType type);
- Root getBuildDataDirectory();
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
index e4972e00b4..e196dd7481 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelWorkspaceStatusModule.java
@@ -220,8 +220,9 @@ public class BazelWorkspaceStatusModule extends BlazeModule {
@Override
public WorkspaceStatusAction createWorkspaceStatusAction(
- ArtifactFactory factory, ArtifactOwner artifactOwner, Supplier<UUID> buildId) {
- Root root = env.getDirectories().getBuildDataDirectory();
+ ArtifactFactory factory, ArtifactOwner artifactOwner, Supplier<UUID> buildId,
+ String workspaceName) {
+ Root root = env.getDirectories().getBuildDataDirectory(workspaceName);
Artifact stableArtifact = factory.getDerivedArtifact(
new PathFragment("stable-status.txt"), root, artifactOwner);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
index 7361c1f564..652fc820e4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
@@ -36,12 +36,9 @@ import java.util.Map;
public class BuildInfoCollectionFunction implements SkyFunction {
// Supplier only because the artifact factory has not yet been created at constructor time.
private final Supplier<ArtifactFactory> artifactFactory;
- private final Root buildDataDirectory;
- BuildInfoCollectionFunction(Supplier<ArtifactFactory> artifactFactory,
- Root buildDataDirectory) {
+ BuildInfoCollectionFunction(Supplier<ArtifactFactory> artifactFactory) {
this.artifactFactory = artifactFactory;
- this.buildDataDirectory = buildDataDirectory;
}
@Override
@@ -66,11 +63,6 @@ public class BuildInfoCollectionFunction implements SkyFunction {
? factory.getConstantMetadataArtifact(rootRelativePath, root, keyAndConfig)
: factory.getDerivedArtifact(rootRelativePath, root, keyAndConfig);
}
-
- @Override
- public Root getBuildDataDirectory() {
- return buildDataDirectory;
- }
};
return new BuildInfoCollectionValue(buildInfoFactories.get(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 8ee75f1593..bc358f8a03 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -322,7 +322,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
}
private ImmutableMap<SkyFunctionName, SkyFunction> skyFunctions(
- Root buildDataDirectory,
PackageFactory pkgFactory,
Predicate<PathFragment> allowedMissingInputs) {
ConfiguredRuleClassProvider ruleClassProvider =
@@ -398,8 +397,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
map.put(SkyFunctions.ASPECT_COMPLETION, CompletionFunction.aspectCompletionFunction(eventBus));
map.put(SkyFunctions.TEST_COMPLETION, new TestCompletionFunction());
map.put(SkyFunctions.ARTIFACT, new ArtifactFunction(allowedMissingInputs));
- map.put(SkyFunctions.BUILD_INFO_COLLECTION, new BuildInfoCollectionFunction(artifactFactory,
- buildDataDirectory));
+ map.put(SkyFunctions.BUILD_INFO_COLLECTION, new BuildInfoCollectionFunction(artifactFactory));
map.put(SkyFunctions.BUILD_INFO, new WorkspaceStatusFunction());
map.put(SkyFunctions.COVERAGE_REPORT, new CoverageReportFunction());
ActionExecutionFunction actionExecutionFunction =
@@ -529,7 +527,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
protected void init() {
progressReceiver = newSkyframeProgressReceiver();
ImmutableMap<SkyFunctionName, SkyFunction> skyFunctions =
- skyFunctions(directories.getBuildDataDirectory(), pkgFactory, allowedMissingInputs);
+ skyFunctions(pkgFactory, allowedMissingInputs);
memoizingEvaluator = evaluatorSupplier.create(
skyFunctions, evaluatorDiffer(), progressReceiver, emittedEventState,
hasIncrementalState());
@@ -621,10 +619,10 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
PrecomputedValue.DEFAULTS_PACKAGE_CONTENTS.set(injectable(), defaultsPackageContents);
}
- public void injectWorkspaceStatusData() {
+ public void injectWorkspaceStatusData(String workspaceName) {
PrecomputedValue.WORKSPACE_STATUS_KEY.set(injectable(),
workspaceStatusActionFactory.createWorkspaceStatusAction(
- artifactFactory.get(), WorkspaceStatusValue.ARTIFACT_OWNER, buildId));
+ artifactFactory.get(), WorkspaceStatusValue.ARTIFACT_OWNER, buildId, workspaceName));
}
public void injectCoverageReportData(ImmutableList<ActionAnalysisMetadata> actions) {
@@ -1376,7 +1374,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
EventHandler eventHandler, Label label, BuildConfiguration configuration) {
if (memoizingEvaluator.getExistingValueForTesting(
PrecomputedValue.WORKSPACE_STATUS_KEY.getKeyForTesting()) == null) {
- injectWorkspaceStatusData();
+ injectWorkspaceStatusData(label.getWorkspaceRoot());
}
Dependency dep;