aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/functions.sh
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2016-05-27 09:43:14 +0200
committerJo-Philipp Wich <jo@mein.io>2016-05-27 10:27:45 +0200
commit7f6945829640e82dadf928c9e214470fa0c5a321 (patch)
tree2a59f1476d962b22112f8d1e028bc046c9503979 /package/base-files/files/lib/functions.sh
parent749d4b77bdbf0b31b9e15c42207ae448ac45c7d9 (diff)
downloadupstream-7f6945829640e82dadf928c9e214470fa0c5a321.tar.gz
upstream-7f6945829640e82dadf928c9e214470fa0c5a321.tar.bz2
upstream-7f6945829640e82dadf928c9e214470fa0c5a321.zip
base-files: rework postinstall uci-defaults handling
Some package postinstall operations, e.g. those emitted by the LuCI build system, source and delete the uci-defaults themselves upon package insteall, causing the generic defaults apply code to trigger shell errors like: .../luci-app-ddns.postinst: .: line 130: can't open './40_luci-ddns' Rework the generic apply code to check the existence of the uci-defaults script before trying to source it, use sed to prefilter the list of entries from the control file and perform the directory change in a subshell, avoiding the need for cd $OLDPWD. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'package/base-files/files/lib/functions.sh')
-rwxr-xr-xpackage/base-files/files/lib/functions.sh9
1 files changed, 4 insertions, 5 deletions
diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh
index 7bce122ae7..e6c6822cec 100755
--- a/package/base-files/files/lib/functions.sh
+++ b/package/base-files/files/lib/functions.sh
@@ -223,12 +223,11 @@ default_postinst() {
if [ -z "$root" ] && grep -q -s "^/etc/uci-defaults/" "/usr/lib/opkg/info/${pkgname}.list"; then
. /lib/functions/system.sh
[ -d /tmp/.uci ] || mkdir -p /tmp/.uci
- cd /etc/uci-defaults
- for i in $(grep -s "^/etc/uci-defaults/" "/usr/lib/opkg/info/${pkgname}.list"); do
- ( . "./$(basename $i)" ) && rm -f "$i"
- done
+ for i in $(sed -ne 's!^/etc/uci-defaults/!!p' "/usr/lib/opkg/info/${pkgname}.list"); do (
+ cd /etc/uci-defaults
+ [ -f "$i" ] && . "$i" && rm -f "$i"
+ ) done
uci commit
- cd $OLDPWD
fi
[ -n "$root" ] || rm -f /tmp/luci-indexcache 2>/dev/null