浏览代码

base-files: evaluate uci-defaults on run-time installations

Packages may install scripts into /etc/uci-defaults to be executed once
after installation, usually at the first boot of the target. This works
fine if the package was installed to the rootfs during build or using
the ImageBuilder.
If the package is installed using opkg during run-time uci-defaults
were applied only after a reboot of the device. Avoid the need to
reboot by evaluting the package's uci-defaults in default-postinst.

Signed-off-by: Daniel Golle <[email protected]>
Daniel Golle 9 年之前
父节点
当前提交
9b9c78e071
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      package/base-files/files/lib/functions.sh

+ 11 - 0
package/base-files/files/lib/functions.sh

@@ -220,6 +220,17 @@ default_postinst() {
 		ret=$?
 		ret=$?
 	fi
 	fi
 
 
+	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
+		uci commit
+		cd $OLDPWD
+	fi
+
 	[ -n "$root" ] || rm -f /tmp/luci-indexcache 2>/dev/null
 	[ -n "$root" ] || rm -f /tmp/luci-indexcache 2>/dev/null
 
 
 	if [ "$PKG_UPGRADE" != "1" ]; then
 	if [ "$PKG_UPGRADE" != "1" ]; then