target/realtek: auto reset package when upgrade

This commit is contained in:
jjm2473 2022-04-08 13:46:13 +08:00
parent c7d4ae931a
commit 90e35c8608
2 changed files with 67 additions and 0 deletions

View File

@ -62,6 +62,19 @@ clean_tmp_files() {
rm -rf /tmp/romopkgstatus
}
clean_themes() {
local line
local name
local path
uci show luci.themes | tail -n +2 | sed "s/^luci.themes.//g; s/'//g" | while read; do
line="$REPLY"
name=`echo "$line" | cut -d= -f 1`
path=`echo "$line" | cut -d= -f 2`
[ "x$path" != "x" -a -d /www$path ] || uci delete "luci.themes.$name"
done
uci commit luci
}
boot() {
[ -f /.recovery_mode ] && return 0
@ -70,5 +83,7 @@ boot() {
split_both_status
rebuild_opkg_status > /usr/lib/opkg/status
clean_tmp_files
clean_themes
fi
}

View File

@ -1,5 +1,44 @@
#!/bin/sh
nonconf_files_of_pkg() {
local pkgname="$1"
if [ -s /overlay/upper/usr/lib/opkg/info/${pkgname}.conffiles ]; then
grep -hvxFf /overlay/upper/usr/lib/opkg/info/${pkgname}.conffiles \
/overlay/upper/usr/lib/opkg/info/${pkgname}.list
else
cat /overlay/upper/usr/lib/opkg/info/${pkgname}.list
fi
}
reset_pkg() {
local pkgname="$1"
local line
local dep
local deps
if [ -e /overlay/upper/usr/lib/opkg/info/${pkgname}.control ]; then
if [ -f /overlay/upper/usr/lib/opkg/info/${pkgname}.list ]; then
nonconf_files_of_pkg "${pkgname}" | while read; do
line="$REPLY"
rm -f "/overlay/upper/${line}"
done
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.list
fi
if [ -f /overlay/upper/usr/lib/opkg/info/${pkgname}.control ]; then
deps=`grep '^Depends: ' /overlay/upper/usr/lib/opkg/info/${pkgname}.control | dd bs=1 skip=8 2>/dev/null | sed 's/,/ /g'`
mv /overlay/upper/usr/lib/opkg/info/${pkgname}.control /overlay/upper/usr/lib/opkg/info/${pkgname}.delcontrol
for dep in $deps ; do
reset_pkg "$dep"
done
fi
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.*
fi
}
if [ -e /dev/console ]; then
exec >> /dev/console
exec 2>&1
fi
if ! [ -f /etc/uci-defaults/09_realtek ]; then
if [ -f /etc/config/dockerd -a -f /etc/config/dockerman ]; then
local docker_root=`uci get dockerman.local.daemon_data_root`
@ -19,6 +58,17 @@ if ! [ -f /etc/uci-defaults/09_realtek ]; then
commit ucitrack
EOF
rm -f /overlay/upper/usr/lib/lua/luci/view/cbi/dynlist.htm
for pkg in luci-app-ttyd luci-i18n-ttyd-zh-cn luci-app-argon-config luci-i18n-argon-config-zh-cn \
luci-theme-argon luci-theme-argon-18.06 luci-base uhttpd iptables firewall ip-full dnsmasq-full \
netifd odhcp6c ppp wireguard-tools luci-proto-ppp luci-proto-ipv6 luci-proto-wireguard ; do
reset_pkg "$pkg"
done
uci -q batch <<-EOF >/dev/null
set luci.themes.Argon=/luci-static/argon
commit luci
EOF
fi
rm -f /overlay/upper/usr/lib/lua/luci/dispatcher.lua
@ -41,3 +91,5 @@ uci -q batch <<-EOF >/dev/null
set argon.@global[0].mode=light
commit argon
EOF
exit 0