Fix locale handling, menu re-entry and empty-checkupdates logging

- The runner now forces LC_ALL=C itself instead of relying on the unit's
  Environment=. pacman failures are classified by matching its output, so a
  run started by hand on a German system was misclassifying every failure.
- 'Update now' in the menu exec'd the runner, which terminated the menu.
- Log a distinct message when checkupdates is unavailable, instead of
  claiming zero pending packages before a full upgrade.
This commit is contained in:
Felitendo committed 2026-08-08 02:35:34 +02:00
1 parent ceb024d7be
commit 98d2ad57db
3 files changed
+20 -4

No files matched your search

+3 -1
View File
@@ -170,7 +170,9 @@ cau_do_status() {
cau_do_run() { cau_do_run() {
cau_need_root cau_need_root
exec "$CAU_LIBEXECDIR/cachy-auto-update-run" "$@" # Not exec'd: this is also called from the menu, which has to survive the
# run and redraw afterwards.
"$CAU_LIBEXECDIR/cachy-auto-update-run" "$@"
} }
cau_do_log() { cau_do_log() {
+7
View File
@@ -40,6 +40,13 @@ if [[ $EUID -ne 0 ]]; then
exit 2 exit 2
fi fi
# Force a neutral locale here rather than relying on the unit's Environment=,
# so a run started by hand behaves exactly like one started by the timer.
# pacman failures are classified by matching its output, and on a German system
# that output is German. Text aimed at a person does not come through here - a
# notification is rendered in the recipient's own locale by cau_msg_in.
export LC_ALL=C LANGUAGE=
# Re-exec under an inhibitor so a suspend or shutdown cannot land in the middle # Re-exec under an inhibitor so a suspend or shutdown cannot land in the middle
# of a pacman transaction and leave the database half-written. Done before # of a pacman transaction and leave the database half-written. Done before
# anything else so the whole pass is covered, including the lock. # anything else so the whole pass is covered, including the lock.
+10 -3
View File
@@ -76,9 +76,16 @@ cau_pacman_update() {
return 0 return 0
fi fi
CAU_PACMAN_COUNT="$(grep -c . <<< "$CAU_PACMAN_PENDING")" if [[ -n $CAU_PACMAN_PENDING ]]; then
[[ $CAU_PACMAN_COUNT =~ ^[0-9]+$ ]] || CAU_PACMAN_COUNT=0 CAU_PACMAN_COUNT="$(grep -c . <<< "$CAU_PACMAN_PENDING")"
cau_info "Updating $CAU_PACMAN_COUNT repository package(s)" [[ $CAU_PACMAN_COUNT =~ ^[0-9]+$ ]] || CAU_PACMAN_COUNT=0
cau_info "Updating $CAU_PACMAN_COUNT repository package(s)"
else
# checkupdates is unavailable, so the list is unknown and pacman is
# asked to work it out itself.
CAU_PACMAN_COUNT=0
cau_info "Running a full system upgrade (pending list unavailable)"
fi
mapfile -t flags < <(cau_pacman_flags) mapfile -t flags < <(cau_pacman_flags)
log="$(mktemp)" || return 1 log="$(mktemp)" || return 1