base-files: make default_prerm work offline
authorMatthias Schiffer <mschiffer@universe-factory.net>
Mon, 26 Sep 2016 13:25:37 +0000 (15:25 +0200)
committerMatthias Schiffer <mschiffer@universe-factory.net>
Mon, 26 Sep 2016 15:57:57 +0000 (17:57 +0200)
IPKG_INSTROOT must be respected for offline removal (used for per-device
rootfs).

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
package/base-files/files/lib/functions.sh

index e6c6822..232a1c4 100755 (executable)
@@ -164,12 +164,20 @@ insert_modules() {
 }
 
 default_prerm() {
+       local root="${IPKG_INSTROOT}"
        local name
+
        name=$(basename ${1%.*})
-       [ -f /usr/lib/opkg/info/${name}.prerm-pkg ] && . /usr/lib/opkg/info/${name}.prerm-pkg
-       for i in `cat /usr/lib/opkg/info/${name}.list | grep "^/etc/init.d/"`; do
-               $i disable
-               $i stop
+       [ -f "$root/usr/lib/opkg/info/${name}.prerm-pkg" ] && . "$root/usr/lib/opkg/info/${name}.prerm-pkg"
+
+       local shell="$(which bash)"
+       for i in `cat "$root/usr/lib/opkg/info/${name}.list" | grep "^/etc/init.d/"`; do
+               if [ -n "$root" ]; then
+                       ${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" disable
+               else
+                       "$i" disable
+                       "$i" stop
+               fi
        done
 }