diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-08 12:55:55 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-08 12:55:55 -0500 |
| commit | e8eff25043c12a7d30dc347be60ce516a5afd05d (patch) | |
| tree | b4533792b350d6fd15d5e0144c452aa762ee43c6 /configs | |
| parent | da29e92aea51803234d25b6473b4d7fb82dbf7da (diff) | |
| download | archsetup-e8eff25043c12a7d30dc347be60ce516a5afd05d.tar.gz archsetup-e8eff25043c12a7d30dc347be60ce516a5afd05d.zip | |
fix(guard): allow same-version reinstalls through the live-update hook
The hypr-live-update-guard hook blocked on target names alone, so a same-version reinstall of hyprland (the maintenance console's integrity REINSTALL, right after a full update) aborted identically to a real upgrade. A pure reinstall writes identical bytes over identical bytes and can't crash the live compositor: the SIGABRT hazard needs the on-disk version to actually change.
The guard now compares each target's installed version (pacman -Q) against the sync-db candidate (expac -S %v). Both are read-only queries and safe under the transaction lock, pinned live with db.lck present. Targets that match pass as reinstalls, and the block message lists only the version-changing packages. Unresolvable versions (AUR targets, -U transactions, expac missing) still block conservatively.
Verified live on ratio: the previously blocked six-package reinstall ran clean with Hyprland up. The block path is pinned by the test suite (13 tests, four new). I deployed the script to /usr/local/bin on both hosts by hand since the installer only copies it on fresh systems.
Diffstat (limited to 'configs')
0 files changed, 0 insertions, 0 deletions
