Show what a run is doing, and record when one is cut short
A run that held back a blocker then upgraded 214 packages printed one line and then nothing for nearly five minutes while pacman downloaded and installed. It looked hung, so it got killed - during pacman's uninterruptible commit phase, which meant the packages landed but our bookkeeping never did. The menu then kept showing a failure from a previous run on a fully up-to-date machine. pacman, the AUR helper and flatpak now stream their output when a person is watching, and the progress bar is left enabled for that case. Timer runs are unchanged: quiet, --noprogressbar, everything captured in the log. Interactivity is decided once at startup rather than tested at the point of use. cau_pacman_flags runs inside a process substitution, so its stdout is always a pipe and a -t 1 check there would have silently always been false. INT/TERM/HUP now record last_result=interrupted, so a run that is stopped says so instead of leaving the previous verdict standing.
This commit is contained in:
1 parent
9fd2458d20
commit
243115ea19
7 files changed
+68
-5
No files matched your search
@@ -63,6 +63,21 @@ fi
|
||||
cau_config_load
|
||||
cau_log_open
|
||||
|
||||
# Record an interruption rather than leaving the previous run's verdict behind.
|
||||
# Without this, killing an interactive run leaves last_result at whatever it was
|
||||
# before - so the menu can keep reporting a problem from hours ago while the
|
||||
# machine is in fact fully up to date, which is worse than saying nothing.
|
||||
# pacman makes the commit phase itself uninterruptible, so the packages either
|
||||
# all landed or none did; only our own bookkeeping is at risk here.
|
||||
_cau_interrupted() {
|
||||
cau_error "Update run interrupted ($1)"
|
||||
cau_state_write last_result interrupted
|
||||
exit 130
|
||||
}
|
||||
trap '_cau_interrupted SIGINT' INT
|
||||
trap '_cau_interrupted SIGTERM' TERM
|
||||
trap '_cau_interrupted SIGHUP' HUP
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Should this run happen at all?
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user