]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
base-files: handle packages alternatives when apk removes packages 19093/head
authorMario Andrés Pérez <mapb_@outlook.com>
Thu, 12 Jun 2025 13:49:59 +0000 (15:49 +0200)
committerRobert Marko <robimarko@gmail.com>
Mon, 23 Jun 2025 07:39:12 +0000 (09:39 +0200)
On commit 3010ab8 ("base-files: add update_alternatives function") was
implemented the function to handle ALTERNATIVES when using APK (OPKG
handle it internally) but in commit bcc6415 ("base-files: add
compatibility for APK and OPKG") was only called when adding a package,
so call it also when removing packages.

While we are here, check for a more specific *.alternatives files instead
of *.list, and remove redundant "filelist" variable definition.

Fixes: bcc6415 ("base-files: add compatibility for APK and OPKG")
Fixes: https://github.com/openwrt/openwrt/issues/19090
Fixes: https://github.com/openwrt/openwrt/issues/16991
Reported-and-tested-by: Eric Fahlgren <ericfahlgren@gmail.com>
Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19093
Signed-off-by: Robert Marko <robimarko@gmail.com>
package/base-files/files/lib/functions.sh

index e944d36505662fd0faf1d7c312c7e10ece6c75e1..18bf79251d20578d0805b1257f6e3ea2b4372e41 100644 (file)
@@ -216,6 +216,10 @@ default_prerm() {
        local filelist="${root}/usr/lib/opkg/info/${pkgname}.list"
        [ -f "$root/lib/apk/packages/${pkgname}.list" ] && filelist="$root/lib/apk/packages/${pkgname}.list"
 
+       if [ -e "$root/lib/apk/packages/${pkgname}.alternatives" ]; then
+               update_alternatives remove "${pkgname}"
+       fi
+
        if [ -f "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ]; then
                ( . "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" )
                ret=$?
@@ -352,8 +356,7 @@ default_postinst() {
                add_group_and_user "${pkgname}"
        fi
 
-       if [ -e "${root}/lib/apk/packages/${pkgname}.list" ]; then
-               filelist="${root}/lib/apk/packages/${pkgname}.list"
+       if [ -e "${root}/lib/apk/packages/${pkgname}.alternatives" ]; then
                update_alternatives install "${pkgname}"
        fi