diff options
author | 2016-10-10 11:25:52 +0000 | |
---|---|---|
committer | 2016-10-10 13:35:22 +0000 | |
commit | 66ae95a2e6043a3b01817de6810a094a2ed78e14 (patch) | |
tree | e166f934c435e22754cb45db423da4db680d5de0 /src/main/java/com/google/devtools/build/lib/pkgcache | |
parent | 9c1090bcd88f187e8849a08fa7cd42246a9b5095 (diff) |
Post the expansion of a target pattern on the event stream
...by making TargetParsingCompleteEvent an instance of BuildEvent. The main
value of this event on the event stream is that it is now know which actual
targets to expect.
--
Change-Id: I50b16f825d742d28e719692489de701d16195efa
Reviewed-on: https://bazel-review.googlesource.com/#/c/6278
MOS_MIGRATED_REVID=135661452
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/pkgcache')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/pkgcache/LegacyLoadingPhaseRunner.java | 10 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java | 61 |
2 files changed, 57 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/LegacyLoadingPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/pkgcache/LegacyLoadingPhaseRunner.java index 6d7fc3f251..388e4b84f8 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/LegacyLoadingPhaseRunner.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/LegacyLoadingPhaseRunner.java @@ -174,9 +174,13 @@ public final class LegacyLoadingPhaseRunner extends LoadingPhaseRunner { } } - eventBus.post(new TargetParsingCompleteEvent(targets.getTargets(), - filteredTargets, testFilteredTargets, - timer.stop().elapsed(TimeUnit.MILLISECONDS))); + eventBus.post( + new TargetParsingCompleteEvent( + targets.getTargets(), + filteredTargets, + testFilteredTargets, + timer.stop().elapsed(TimeUnit.MILLISECONDS), + targetPatterns)); if (targets.hasError()) { eventHandler.handle(Event.warn("Target pattern parsing failed. Continuing anyway")); diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java index 56aff59aee..8e0022a46a 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java @@ -15,18 +15,23 @@ package com.google.devtools.build.lib.pkgcache; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.buildeventstream.BuildEvent; +import com.google.devtools.build.lib.buildeventstream.BuildEventId; +import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; +import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Target; - +import com.google.devtools.build.lib.packages.TargetUtils; import java.util.Collection; +import java.util.List; -/** - * This event is fired just after target pattern evaluation is completed. - */ -public class TargetParsingCompleteEvent { +/** This event is fired just after target pattern evaluation is completed. */ +public class TargetParsingCompleteEvent implements BuildEvent { + private final ImmutableList<String> originalTargetPattern; private final ImmutableSet<Target> targets; private final ImmutableSet<Target> filteredTargets; private final ImmutableSet<Target> testFilteredTargets; @@ -34,21 +39,30 @@ public class TargetParsingCompleteEvent { /** * Construct the event. - * @param targets The targets that were parsed from the - * command-line pattern. + * + * @param targets The targets that were parsed from the command-line pattern. */ - public TargetParsingCompleteEvent(Collection<Target> targets, - Collection<Target> filteredTargets, Collection<Target> testFilteredTargets, - long timeInMs) { + public TargetParsingCompleteEvent( + Collection<Target> targets, + Collection<Target> filteredTargets, + Collection<Target> testFilteredTargets, + long timeInMs, + List<String> originalTargetPattern) { this.timeInMs = timeInMs; this.targets = ImmutableSet.copyOf(targets); this.filteredTargets = ImmutableSet.copyOf(filteredTargets); this.testFilteredTargets = ImmutableSet.copyOf(testFilteredTargets); + this.originalTargetPattern = ImmutableList.copyOf(originalTargetPattern); } @VisibleForTesting public TargetParsingCompleteEvent(Collection<Target> targets) { - this(targets, ImmutableSet.<Target>of(), ImmutableSet.<Target>of(), 0); + this( + targets, + ImmutableSet.<Target>of(), + ImmutableSet.<Target>of(), + 0, + ImmutableList.<String>of()); } /** @@ -84,4 +98,29 @@ public class TargetParsingCompleteEvent { public long getTimeInMs() { return timeInMs; } + + @Override + public BuildEventId getEventId() { + return BuildEventId.targetPatternExpanded(originalTargetPattern); + } + + @Override + public Collection<BuildEventId> getChildrenEvents() { + ImmutableList.Builder childrenBuilder = ImmutableList.builder(); + for (Target target : targets) { + // Test suits won't produce a target-complete event, so do not anounce their + // completion as children. + if (!TargetUtils.isTestSuiteRule(target)) { + childrenBuilder.add(BuildEventId.targetCompleted(target.getLabel())); + } + } + return childrenBuilder.build(); + } + + @Override + public BuildEventStreamProtos.BuildEvent asStreamProto() { + return GenericBuildEvent.protoChaining(this) + .setExpanded(BuildEventStreamProtos.PatternExpanded.newBuilder().build()) + .build(); + } } |