fix(builder): the Linux builder shows its clock and countdown during a build #2150
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2150
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/linux-builder-clock"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
During a build, the line under the progress bar in the Linux builder stays empty: no elapsed time, no compile clock, no "about N minutes left". Only an update shows it.
tickwrites that line and calls itself again a second later only while make_game.py runs.buildreached it throughshow_progress, which runs before make_game.py is started, so the first call found no process and the clock never started.start_make_updatecallstickagain once make_game.py runs, which is why updates were fine. It has been this way since the Linux builder was added, so the countdown added later has never shown in a Linux build.buildnow starts the clock after starting make_game.py, asstart_make_updatedoes, andshow_progressno longer callstick, since nothing runs yet at either of its callers.on_exitclears the line: with the clock running, a build cancelled or stopped while compiling would otherwise keep "about 20 minutes left" under "The build stopped". A finished build already says how long it took in the line above.Testing (Linux, Tk 8.6)
@@stage compileand@@eta 600and then sleeps. Before, the line is empty for the whole run. After, it readsElapsed 0:00:01 · compiling 0:00 · about 10 minutes leftand counts each second, and it's empty again after Cancel. An update counts as before.tests/test_linux_builder_clock.py(new) runs the builder's owntickandon_exiton a stand-in window, without Tk or a display.tests/test_linux_builder_jobs.pynow expects the clock to start after the process. On main, 1 and 7 of them fail.Nice catch, and a clean fix.
tickonly reschedules itself whileself.procis running, so calling it fromshow_progressbefore thePopencould never start the clock. Moving the call to after the process starts matchesstart_make_update. Theshow_progresscall inbegin_updateloses nothing either, since no process runs there yet. Clearingtime_textinon_exitis also needed now that the clock really runs. The pendingafter(1000)tick then findsprocasNoneand stops, which yourtest_it_ends_with_the_buildcovers.show_progressalready resetsetaandcompile_started, so a second build after a stopped one doesn't show the first build's countdown.I ran the new
test_linux_builder_clock.py, the updatedtest_linux_builder_jobs.pyand the other checks that readbuilder/linux/hookshot_builder.py(test_builder_*,test_desktop_exec,test_disk_warning,test_prepare_at_build,test_make_game_ngx,test_linux_play_diagnostics) at the PR's head on Linux: all pass, except two .NET-only checks that skip here. CI is green, and the branch still merges cleanly onto current main.Nothing to change from my side.
github-sync referenced this pull request2026-11-12 06:22:54 +00:00