diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-28 01:43:24 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-28 01:43:24 -0400 |
| commit | 7a557e8ecf29aff7c6129415054abff5902bb49d (patch) | |
| tree | 41a5e1fca0efcd67aa8db423870aafa5cbc33923 /scripts/testing/tests/test_dotfiles.py | |
| parent | 2b686c15acf44d48add3abac46df99bb869eebed (diff) | |
| download | archsetup-7a557e8ecf29aff7c6129415054abff5902bb49d.tar.gz archsetup-7a557e8ecf29aff7c6129415054abff5902bb49d.zip | |
feat(hyprland): guard against live GPU/compositor library upgrades
A pacman -Syu that swaps mesa/hyprland/wayland runtime libs out from under
a running Hyprland session crashes the compositor: the next GPU-lib call
hits a now-"(deleted)" library and SIGABRTs, taking the Wayland clients
with it (hit ratio 2026-06-07, mesa + hyprland upgraded live). It's a
likely driver of ratio's high unsafe-shutdown ratio.
I added a pacman PreTransaction hook (hypr-live-update-guard) on the
GPU/compositor runtime set. When such an upgrade is pending and Hyprland is
running, it aborts before any package is swapped and tells the user to
re-run from a TTY with the session stopped. Aborting at PreTransaction is
safe: nothing is replaced yet, so the live session is untouched. With no
Hyprland running (the from-a-TTY path) the guard stays quiet and the
upgrade proceeds. Override with HYPR_ALLOW_LIVE_UPDATE=1 or by touching the
sentinel file named in the abort message.
archsetup installs the guard and hook in the hyprland path. The decision
logic is covered by tests/hypr-live-update-guard (running/not, override,
multi-package, empty-target). The hook firing against a real pacman
transaction needs a live Hyprland session, filed as a manual test.
Diffstat (limited to 'scripts/testing/tests/test_dotfiles.py')
0 files changed, 0 insertions, 0 deletions
