update: remove -debug packages whose package is gone

makepkg builds pkg-debug alongside an AUR package, and removing the
package leaves it behind: the migration that dropped asdf-vm left
asdf-vm-debug. Found by 30-upgrade-from-baseline at 0c0ddf5, whose
machine kept it where a fresh install has none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-06 11:50:15 -07:00
co-authored by Claude Opus 5.5
parent 061121226d
commit 716fe83aa4
2 changed files with 44 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bats
load test_helper
@test "95-cleanup removes -debug packages whose package is gone, and keeps the rest" {
# -Qqm lists the AUR packages; -Qq NAME prints what matches NAME, which for
# herdr is herdr-bin, as it provides herdr
stub pacman '
case "$1" in
-Qqm) printf "%s\n" asdf-vm-debug cliamp cliamp-debug herdr-bin herdr-debug ;;
-Qq) case "$2" in cliamp) echo cliamp ;; herdr) echo herdr-bin ;; *) exit 1 ;; esac ;;
esac'
stub sudo
stub flatpak
run bash "$REPO/updates.d/95-cleanup.sh" < /dev/null
[ "$status" -eq 0 ]
called sudo pacman -R --noconfirm asdf-vm-debug herdr-debug
}
@test "95-cleanup leaves -debug packages alone while their packages are installed" {
stub pacman '
case "$1" in
-Qqm) printf "%s\n" cliamp cliamp-debug ;;
-Qq) [ "$2" = cliamp ] && echo cliamp ;;
esac'
stub sudo
stub flatpak
run bash "$REPO/updates.d/95-cleanup.sh" < /dev/null
[ "$status" -eq 0 ]
[ -z "$(grep 'pacman -R ' "$STUB_LOG")" ]
}
+11
View File
@@ -10,6 +10,17 @@ if command -v paccache &>/dev/null; then
sudo paccache -ruk0
fi
# makepkg builds pkg-debug alongside an AUR package, and removing the package
# leaves it behind (asdf-vm-debug). Without its package it's no use to anyone,
# so remove it without asking. The exact name: pacman -Q herdr finds herdr-bin
mapfile -t STRAY_DEBUG < <(pacman -Qqm 2> /dev/null | grep -- '-debug$' | while read -r pkg; do
[ "$(pacman -Qq "${pkg%-debug}" 2> /dev/null)" = "${pkg%-debug}" ] || echo "$pkg"
done)
if (( ${#STRAY_DEBUG[@]} > 0 )); then
echo "Removing debug symbols for packages that are gone: ${STRAY_DEBUG[*]}"
sudo pacman -R --noconfirm "${STRAY_DEBUG[@]}" || exit 1
fi
# Offer to remove packages that were installed as dependencies and are no
# longer needed (packages something lists as an optional dependency are kept).
# Ask first: one may be something you use directly. Without a terminal to ask