aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-25 14:18:43 -0400
committerCraig Jennings <c@cjennings.net>2026-06-25 14:18:43 -0400
commit8fd8f406812095d0b308b836b5d92bf763f27302 (patch)
tree83132fac428a6e213878bebfcf455d61298f97f0
parent9a0b4bbbcb5ff05bc578eff07af27c08a03f7f59 (diff)
downloadarchsetup-8fd8f406812095d0b308b836b5d92bf763f27302.tar.gz
archsetup-8fd8f406812095d0b308b836b5d92bf763f27302.zip
fix(archsetup): clear informant news hook before pacman runs
An archangel-installed base ships informant, which registers a pacman PreTransaction hook (AbortOnFail) that blocks every package transaction until Arch news is marked read. archsetup's first transaction (the keyring reinstall) tripped it and the script halted at the bootstrap step. archsetup now marks all news read up front with `informant read --all` so the keyring, refresh, and install steps proceed. The --all flag marks without printing or prompting. A bare `informant read` is interactive and would hang an unattended run. The guard is a no-op when informant isn't installed. The new ZFS VM test path surfaced this. Its base image comes from a current archangel ISO that includes informant, and the older btrfs base predated it.
-rwxr-xr-xarchsetup11
1 files changed, 11 insertions, 0 deletions
diff --git a/archsetup b/archsetup
index ce08ad3..cc62751 100755
--- a/archsetup
+++ b/archsetup
@@ -876,6 +876,17 @@ prerequisites() {
display "subtitle" "Bootstrapping"
+ # If the base ships informant (e.g. an archangel-installed system), it
+ # registers a pacman PreTransaction hook (AbortOnFail) that blocks every
+ # package transaction while Arch news is unread. Mark it all read up front
+ # so the keyring/refresh/install steps below don't abort. --all marks
+ # without printing or prompting; a bare `informant read` is interactive and
+ # would hang an unattended run. No-op when informant isn't installed.
+ if command -v informant >/dev/null 2>&1; then
+ action="marking Arch news read (informant)" && display "task" "$action"
+ informant read --all >> "$logfile" 2>&1 || true
+ fi
+
action="ensuring current Arch Linux keyring" && display "task" "$action"
(pacman -Syy) >> "$logfile" 2>&1 || error_fatal "$action" "$?"
(pacman -S --noconfirm archlinux-keyring) >> "$logfile" 2>&1 || \