diff options
author | janakr <janakr@google.com> | 2018-07-13 00:52:17 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-13 00:53:50 -0700 |
commit | 75bc18a6290f9112077884460d61f34bec325814 (patch) | |
tree | bdf837d9c727acd915c8cf7c9a316cd8515f5348 /src/main/java/com/google/devtools/build/lib/buildtool | |
parent | b39c69394c5e7991ca8d04efac2142c22947a7c5 (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.java | 23 |
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(), |