aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/pkgcache
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-10-10 11:25:52 +0000
committerGravatar Yue Gan <yueg@google.com>2016-10-10 13:35:22 +0000
commit66ae95a2e6043a3b01817de6810a094a2ed78e14 (patch)
treee166f934c435e22754cb45db423da4db680d5de0 /src/main/java/com/google/devtools/build/lib/pkgcache
parent9c1090bcd88f187e8849a08fa7cd42246a9b5095 (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.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/pkgcache/TargetParsingCompleteEvent.java61
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();
+ }
}