aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/buildtool
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-07-13 00:52:17 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-13 00:53:50 -0700
commit75bc18a6290f9112077884460d61f34bec325814 (patch)
treebdf837d9c727acd915c8cf7c9a316cd8515f5348 /src/main/java/com/google/devtools/build/lib/buildtool
parentb39c69394c5e7991ca8d04efac2142c22947a7c5 (diff)
For all top-level artifacts, track the labels that own them when that is available.
The owning labels are the labels of the top-level configured targets that requested this artifact to be built (there may be many such targets). In cases where the artifact is added not through a configured target (build-info artifacts and coverage artifacts), the label of the artifact's owner is used. PiperOrigin-RevId: 204432951
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/buildtool')
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java23
1 files changed, 6 insertions, 17 deletions
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 2e61ef8cf5..d31e0d1f4b 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
@@ -21,7 +21,7 @@ import com.google.common.base.Stopwatch;
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.common.collect.SetMultimap;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionCacheChecker;
import com.google.devtools.build.lib.actions.ActionGraph;
@@ -49,6 +49,7 @@ import com.google.devtools.build.lib.analysis.actions.SymlinkTreeActionContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.buildtool.buildevent.ExecutionPhaseCompleteEvent;
import com.google.devtools.build.lib.buildtool.buildevent.ExecutionStartingEvent;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
@@ -226,8 +227,6 @@ public class ExecutionTool {
ActionGraph actionGraph = analysisResult.getActionGraph();
- // Get top-level artifacts.
- ImmutableSet<Artifact> additionalArtifacts = analysisResult.getAdditionalArtifactsToBuild();
OutputService outputService = env.getOutputService();
ModifiedFileSet modifiedOutputFiles = ModifiedFileSet.EVERYTHING_MODIFIED;
@@ -303,18 +302,8 @@ public class ExecutionTool {
Set<AspectKey> builtAspects = new HashSet<>();
Collection<AspectValue> aspects = analysisResult.getAspects();
- Iterable<Artifact> allArtifactsForProviders =
- Iterables.concat(
- additionalArtifacts,
- TopLevelArtifactHelper.getAllArtifactsToBuild(
- analysisResult.getTargetsToBuild(), analysisResult.getTopLevelContext())
- .getAllArtifacts(),
- TopLevelArtifactHelper.getAllArtifactsToBuildFromAspects(
- aspects, analysisResult.getTopLevelContext())
- .getAllArtifacts(),
- //TODO(dslomov): Artifacts to test from aspects?
- TopLevelArtifactHelper.getAllArtifactsToTest(analysisResult.getTargetsToTest()));
-
+ SetMultimap<Artifact, Label> topLevelArtifactsToOwnerLabels =
+ TopLevelArtifactHelper.makeTopLevelArtifactsToOwnerLabels(analysisResult, aspects);
if (request.isRunningInEmacs()) {
// The syntax of this message is tightly constrained by lisp/progmodes/compile.el in emacs
request
@@ -327,7 +316,7 @@ public class ExecutionTool {
for (ActionContextProvider actionContextProvider : actionContextProviders) {
try (SilentCloseable c =
Profiler.instance().profile(actionContextProvider + ".executionPhaseStarting")) {
- actionContextProvider.executionPhaseStarting(actionGraph, allArtifactsForProviders);
+ actionContextProvider.executionPhaseStarting(actionGraph, topLevelArtifactsToOwnerLabels);
}
}
executor.executionPhaseStarting();
@@ -350,7 +339,7 @@ public class ExecutionTool {
builder.buildArtifacts(
env.getReporter(),
- additionalArtifacts,
+ analysisResult.getTopLevelArtifactsToOwnerLabels().keySet(),
analysisResult.getParallelTests(),
analysisResult.getExclusiveTests(),
analysisResult.getTargetsToBuild(),