diff options
author | 2016-08-26 16:14:37 +0000 | |
---|---|---|
committer | 2016-08-26 18:42:42 +0000 | |
commit | 8cb36d6bee170da857df3e50e72c8dcfceb5b7ff (patch) | |
tree | 9c9310435370714bd3be073cc6317d93883e2e23 /src/main/java | |
parent | 4c10f3f86f7a0530e83d4b2062b48676afafe2c0 (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')
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; |