diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
3 files changed, 25 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 12c38a8cba..92c680424f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -1728,7 +1728,6 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { * Skyframe-based implementation of {@link LoadingPhaseRunner} based on {@link * TargetPatternPhaseFunction}. */ - // TODO(ulfjack): This is still incomplete. final class SkyframeLoadingPhaseRunner extends LoadingPhaseRunner { private final TargetPatternEvaluator targetPatternEvaluator; private final Set<String> ruleClassNames; @@ -1785,17 +1784,14 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { long time = timer.stop().elapsed(TimeUnit.MILLISECONDS); TargetPatternPhaseValue patternParsingValue = evalResult.get(key); - // TODO(ulfjack): The first event should be pre-test_suite expansion, the second post. - eventBus.post(new TargetParsingCompleteEvent(patternParsingValue.getTargets(), + eventBus.post(new TargetParsingCompleteEvent(patternParsingValue.getOriginalTargets(), patternParsingValue.getFilteredTargets(), patternParsingValue.getTestFilteredTargets(), time)); if (callback != null) { callback.notifyTargets(patternParsingValue.getTargets()); } eventBus.post(new LoadingPhaseCompleteEvent( - /*was expandedTargetsToLoad*/patternParsingValue.getTargets(), - // TODO(ulfjack): Should be: Sets.difference(originalTargetsToLoad, expandedTargetsToLoad) - /*was testSuiteTargets*/ImmutableSet.<Target>of(), + patternParsingValue.getTargets(), patternParsingValue.getTestSuiteTargets(), packageManager.getStatistics(), /*timeInMs=*/0)); return patternParsingValue.toLoadingResult(); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java index ea30c0584c..9608878f34 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java @@ -159,9 +159,12 @@ final class TargetPatternPhaseFunction implements SkyFunction { expandedTargetsBuilder.add(target); } } - targets = expandedTargetsBuilder.build(); - return new TargetPatternPhaseValue(targets.getTargets(), testsToRun, preExpansionError, - targets.hasError(), filteredTargets, testFilteredTargets); + ResolvedTargets<Target> expandedTargets = expandedTargetsBuilder.build(); + Set<Target> testSuiteTargets = + Sets.difference(targets.getTargets(), expandedTargets.getTargets()); + return new TargetPatternPhaseValue(expandedTargets.getTargets(), testsToRun, preExpansionError, + expandedTargets.hasError(), filteredTargets, testFilteredTargets, + targets.getTargets(), ImmutableSet.copyOf(testSuiteTargets)); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java index becc737239..4c864db3d8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java @@ -52,15 +52,23 @@ public final class TargetPatternPhaseValue implements SkyValue { private final ImmutableSet<Target> filteredTargets; private final ImmutableSet<Target> testFilteredTargets; + // These two fields are only for the purposes of generating the TargetParsingCompleteEvent. + // TODO(ulfjack): Support EventBus event posting in Skyframe, and remove this code again. + private final ImmutableSet<Target> originalTargets; + private final ImmutableSet<Target> testSuiteTargets; + TargetPatternPhaseValue(ImmutableSet<Target> targets, @Nullable ImmutableSet<Target> testsToRun, boolean hasError, boolean hasPostExpansionError, ImmutableSet<Target> filteredTargets, - ImmutableSet<Target> testFilteredTargets) { + ImmutableSet<Target> testFilteredTargets, ImmutableSet<Target> originalTargets, + ImmutableSet<Target> testSuiteTargets) { this.targets = Preconditions.checkNotNull(targets); this.testsToRun = testsToRun; this.hasError = hasError; this.hasPostExpansionError = hasPostExpansionError; this.filteredTargets = Preconditions.checkNotNull(filteredTargets); this.testFilteredTargets = Preconditions.checkNotNull(testFilteredTargets); + this.originalTargets = Preconditions.checkNotNull(originalTargets); + this.testSuiteTargets = Preconditions.checkNotNull(testSuiteTargets); } public ImmutableSet<Target> getTargets() { @@ -88,6 +96,14 @@ public final class TargetPatternPhaseValue implements SkyValue { return testFilteredTargets; } + public ImmutableSet<Target> getOriginalTargets() { + return originalTargets; + } + + public ImmutableSet<Target> getTestSuiteTargets() { + return testSuiteTargets; + } + public LoadingResult toLoadingResult() { return new LoadingResult(hasError(), hasPostExpansionError(), getTargets(), getTestsToRun(), ImmutableMap.<PackageIdentifier, Path>of()); |