aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/pkgcache
diff options
context:
space:
mode:
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();
+ }
}