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 | 26538d558398b51a23f402582783d2be0a897ff4 (patch) | |
| tree | e8e90c315267079386bdb1a9c54498713cb7c456 /scripts/zfs-replicate | |
| parent | db9a5979dd192decf5c9affdd9edb7e2f8fa665a (diff) | |
| download | archsetup-26538d558398b51a23f402582783d2be0a897ff4.tar.gz archsetup-26538d558398b51a23f402582783d2be0a897ff4.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 'scripts/zfs-replicate')
0 files changed, 0 insertions, 0 deletions
