diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java | 23 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java index dc488bd6e0..cfa284f7d9 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.buildtool.buildevent.ExecutionProgressRecei import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventKind; import com.google.devtools.build.lib.pkgcache.LoadingPhaseCompleteEvent; +import com.google.devtools.build.lib.skyframe.LoadingPhaseStartedEvent; import com.google.devtools.build.lib.util.Clock; import com.google.devtools.build.lib.util.io.AnsiTerminal; import com.google.devtools.build.lib.util.io.LineCountingAnsiTerminalWriter; @@ -150,6 +151,12 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler { } @Subscribe + public void loadingStarted(LoadingPhaseStartedEvent event) { + stateTracker.loadingStarted(event); + refresh(); + } + + @Subscribe public void loadingComplete(LoadingPhaseCompleteEvent event) { stateTracker.loadingComplete(event); refresh(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java index 0764d53778..bddd3c086e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalStateTracker.java @@ -22,6 +22,8 @@ import com.google.devtools.build.lib.buildtool.buildevent.BuildCompleteEvent; import com.google.devtools.build.lib.buildtool.buildevent.BuildStartingEvent; import com.google.devtools.build.lib.buildtool.buildevent.ExecutionProgressReceiverAvailableEvent; import com.google.devtools.build.lib.pkgcache.LoadingPhaseCompleteEvent; +import com.google.devtools.build.lib.skyframe.LoadingPhaseStartedEvent; +import com.google.devtools.build.lib.skyframe.LoadingProgressReceiver; import com.google.devtools.build.lib.util.Clock; import com.google.devtools.build.lib.util.io.AnsiTerminalWriter; @@ -54,6 +56,7 @@ class ExperimentalStateTracker { private boolean ok; private ExecutionProgressReceiver executionProgressReceiver; + private LoadingProgressReceiver loadingProgressReceiver; ExperimentalStateTracker(Clock clock) { this.runningActions = new ArrayDeque<>(); @@ -68,7 +71,13 @@ class ExperimentalStateTracker { additionalMessage = ""; } + void loadingStarted(LoadingPhaseStartedEvent event) { + status = null; + loadingProgressReceiver = event.getLoadingProgressReceiver(); + } + void loadingComplete(LoadingPhaseCompleteEvent event) { + loadingProgressReceiver = null; int count = event.getTargets().size(); status = "Analysing"; additionalMessage = "" + count + " targets"; @@ -159,6 +168,12 @@ class ExperimentalStateTracker { if (runningActions.size() >= 1) { return true; } + if (loadingProgressReceiver != null) { + // This is kind-of a hack: since the event handler does not get informed about updates + // in the loading phase, indicate that the progress bar might change even though no + // explicit update event is known to the event handler. + return true; + } return false; } @@ -172,6 +187,14 @@ class ExperimentalStateTracker { terminalWriter.append(status + ":").normal().append(" " + additionalMessage); return; } + if (loadingProgressReceiver != null) { + terminalWriter + .okStatus() + .append("Loading:") + .normal() + .append(" " + loadingProgressReceiver.progressState()); + return; + } if (executionProgressReceiver != null) { terminalWriter.okStatus().append(executionProgressReceiver.getProgressString()); } else { |