remove_packages: remove a package's -debug package too
An AUR package built with makepkg's debug option comes with pkg-debug,
which nothing depends on, so pacman -Rns leaves it behind. voxtype-debug
then conflicts with voxtype-bin-debug, and update fails on machines
installed before voxtype-bin replaced voxtype. Found by
30-upgrade-from-baseline at 0c0ddf5.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,22 @@ esac'
|
||||
called sudo pacman -Rns --noconfirm vim
|
||||
}
|
||||
|
||||
@test "remove_packages removes a package's -debug package too, even on its own" {
|
||||
# voxtype-debug outlives voxtype, and conflicts with voxtype-bin-debug
|
||||
stub pacman '
|
||||
[ "$1" = -Qq ] || exit 1
|
||||
case "$2" in
|
||||
voxtype|voxtype-debug|herdr-debug) echo "$2" ;;
|
||||
*) exit 1 ;;
|
||||
esac'
|
||||
stub sudo
|
||||
source "$REPO/utils.sh"
|
||||
|
||||
run remove_packages voxtype herdr vim
|
||||
[ "$status" -eq 0 ]
|
||||
called sudo pacman -Rns --noconfirm voxtype voxtype-debug herdr-debug
|
||||
}
|
||||
|
||||
@test "remove_packages does nothing when nothing is installed" {
|
||||
stub pacman 'exit 1'
|
||||
stub sudo
|
||||
|
||||
@@ -106,10 +106,16 @@ remove_packages() {
|
||||
|
||||
# Match the exact name: pacman -Q also finds a package that provides it, such
|
||||
# as herdr-bin for herdr, which pacman -R won't remove by that name
|
||||
# An AUR package built with makepkg's debug option comes with pkg-debug,
|
||||
# which nothing depends on, so -Rns leaves it behind, and its files conflict
|
||||
# with the replacement's (voxtype-debug with voxtype-bin-debug)
|
||||
for pkg in "${packages[@]}"; do
|
||||
if [ "$(pacman -Qq "$pkg" 2> /dev/null)" = "$pkg" ]; then
|
||||
to_remove+=("$pkg")
|
||||
fi
|
||||
if [ "$(pacman -Qq "$pkg-debug" 2> /dev/null)" = "$pkg-debug" ]; then
|
||||
to_remove+=("$pkg-debug")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#to_remove[@]} -ne 0 ]; then
|
||||
|
||||
Reference in New Issue
Block a user