fix(build): the time left counts down between the compile's estimates and ignores skipped work #45
No reviewers
Labels
No labels
area/build
area/install
area/saves
area/tooling
area/ui
area/updates
ci: approved
good first issue
gpu/amd
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
platform/linux
platform/steam-deck
platform/windows
priority
critical
priority
high
priority
low
risk
high
risk
low
risk
medium
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
ci: approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/LongshotLauncher!45
Loading…
Reference in a new issue
No description provided.
Delete branch "HumanBean/LongshotLauncher:fix/build-time-left"
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?
The build step's time left was way off: it froze for minutes during the compile, showed minutes for a read that had seconds left, and on rebuilds showed later stages at about 4× their real length.
Why (causes)
BuildClockused@@etaas it arrived, andnx2/build.pyonly sends one when a file finishes; it compiles the biggest files first, so lines can be minutes apart.Pace()hit its 0.25 floor and every later stage was shown at a quarter of its time.BuildForecast) scales with threads, so on fewer threads the bar and the time left disagreed.What changed
Core/MakeGameRun.cs(BuildClock): the compile counts down from the last@@eta; once that runs out (the link, or a slower PC than build.py expects) it uses the compile's own progress rate, with a 10% floor while that can't be measured. Other stages measure their rate from when their progress first moves.Pace()leaves out stages markedKept.Core/MakeGameProtocol.cs: each stage's share of the bar comes fromBuildForecast.Seconds(id, threads)(identical to the old fixed shares at 24 threads). NewBuildStage.Kept, set by make_game's two "skipped" lines, by@@plan changed < total, and for an update's read.Download(1)marks the download done.App/ViewModels/BuildStepViewModel.cs: passes the build's thread count toBuildProgress.tests/launcher_core/Program.cstakes the bar's expected values from the forecast and checks shares at 8 vs 24 threads,Keptand the eta count;tests/launcher_core/ScreenChecks.csadds a scenario for the read's rate, skipped stages, the eta countdown and its fallback.Testing
python -I tests/test_launcher_core.pyandpython -I tests/test_release.py: pass.Open, needing timestamped build logs: the forecast's stage times and its threads^0.85 scaling on 8–16 thread CPUs; the link time (the 10% floor is a guess); build.py's first-build
@@etaassumes a 7900X's speed (a Longshot change, not here); a rebuild starts at the full first-build forecast until make_game says what it skipped.🤖 Generated with Claude Code
WIP: fix(build): the time left counts down between the compile's estimates and ignores skipped workto fix(build): the time left counts down between the compile's estimates and ignores skipped work