summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Spooren <mail@aparcar.org>2024-05-03 18:24:17 +0200
committerPaul Spooren <mail@aparcar.org>2024-05-17 23:21:26 +0300
commitbcc641504d401336336ae1ada8a9935ff05c6055 (patch)
tree15333ef98cb6dbb53089579b4774b1d5f7b28e11
parent3010ab87bc5eb4278a8d550c7ad576836fbbbdf9 (diff)
downloadopenwrt-bcc641504d401336336ae1ada8a9935ff05c6055.tar.gz
openwrt-bcc641504d401336336ae1ada8a9935ff05c6055.tar.bz2
openwrt-bcc641504d401336336ae1ada8a9935ff05c6055.zip
base-files: add compatibility for APK and OPKG
Both package managers work slightly different, i.e. stores files at different places. Modify the `functions.sh` file to cover those. Signed-off-by: Paul Spooren <mail@aparcar.org>
-rw-r--r--package/base-files/files/lib/functions.sh28
1 files changed, 21 insertions, 7 deletions
diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 1126a93e88..a009aa81e9 100644
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -211,8 +211,10 @@ config_list_foreach() {
default_prerm() {
local root="${IPKG_INSTROOT}"
- local pkgname="$(basename ${1%.*})"
+ [ -z "$pkgname" ] && local pkgname="$(basename ${1%.*})"
local ret=0
+ local filelist="${root}/usr/lib/opkg/info/${pkgname}.list"
+ [ -f "$root/lib/apk/packages/${pkgname}.list" ] && filelist="$root/lib/apk/packages/${pkgname}.list"
if [ -f "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ]; then
( . "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" )
@@ -220,7 +222,7 @@ default_prerm() {
fi
local shell="$(command -v bash)"
- for i in $(grep -s "^/etc/init.d/" "$root/usr/lib/opkg/info/${pkgname}.list"); do
+ for i in $(grep -s "^/etc/init.d/" "$filelist"); do
if [ -n "$root" ]; then
${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" disable
else
@@ -235,8 +237,11 @@ default_prerm() {
}
add_group_and_user() {
- local pkgname="$1"
+ [ -z "$pkgname" ] && local pkgname="$(basename ${1%.*})"
local rusers="$(sed -ne 's/^Require-User: *//p' $root/usr/lib/opkg/info/${pkgname}.control 2>/dev/null)"
+ if [ -f "$root/lib/apk/packages/${pkgname}.rusers" ]; then
+ local rusers="$(cat $root/lib/apk/packages/${pkgname}.rusers)"
+ fi
if [ -n "$rusers" ]; then
local tuple oIFS="$IFS"
@@ -337,11 +342,20 @@ update_alternatives() {
default_postinst() {
local root="${IPKG_INSTROOT}"
- local pkgname="$(basename ${1%.*})"
- local filelist="/usr/lib/opkg/info/${pkgname}.list"
+ [ -z "$pkgname" ] && local pkgname="$(basename ${1%.*})"
+ local filelist="${root}/usr/lib/opkg/info/${pkgname}.list"
+ [ -f "$root/lib/apk/packages/${pkgname}.list" ] && filelist="$root/lib/apk/packages/${pkgname}.list"
local ret=0
- add_group_and_user "${pkgname}"
+ if [ -e "${root}/usr/lib/opkg/info/${pkgname}.list" ]; then
+ filelist="${root}/usr/lib/opkg/info/${pkgname}.list"
+ add_group_and_user "${pkgname}"
+ fi
+
+ if [ -e "${root}/lib/apk/packages/${pkgname}.list" ]; then
+ filelist="${root}/lib/apk/packages/${pkgname}.list"
+ update_alternatives install "${pkgname}"
+ fi
if [ -d "$root/rootfs-overlay" ]; then
cp -R $root/rootfs-overlay/. $root/
@@ -374,7 +388,7 @@ default_postinst() {
fi
local shell="$(command -v bash)"
- for i in $(grep -s "^/etc/init.d/" "$root$filelist"); do
+ for i in $(grep -s "^/etc/init.d/" "$filelist"); do
if [ -n "$root" ]; then
${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" enable
else