aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java18
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());