mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-03 10:33:56 +08:00
🍕 Sync 2026-09-14 23:30:37
This commit is contained in:
1 parent
0603b094cf
commit
81fe4cd866
214 files changed
+10806
-2630
No files matched your search
@@ -1,5 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -d "/overlay/upper/etc" ] || {
|
||||
echo "Only squashfs rom supported, and /overlay must be mounted." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
APK=false
|
||||
PKG_BASE=usr/lib/opkg/info
|
||||
PKG_EXT=control
|
||||
@@ -35,7 +40,26 @@ reset_pkg() {
|
||||
if [ -f /rom/$PKG_BASE/${pkgname}.list ]; then
|
||||
nonconf_files_of_pkg "${pkgname}" | while read; do
|
||||
line="$REPLY"
|
||||
rm -f "/overlay/upper/${line}" "/ext_overlay/upper/${line}"
|
||||
if [ -e "${line}" -o -e "/overlay/upper/${line}" -o -e "/ext_overlay/upper/${line}" ]; then
|
||||
rm -f "/overlay/upper/${line}" "/ext_overlay/upper/${line}"
|
||||
else
|
||||
local dir="$(dirname ${line})"
|
||||
[ -z "$dir" -o "$dir" = "/" -o "$dir" = "." -o "$line" = "$dir" ] || echo "$dir" >> /tmp/.reset_dirs
|
||||
fi
|
||||
done
|
||||
if [ -s /rom/$PKG_BASE/${pkgname}.conffiles ]; then
|
||||
# restore config files from rom, if they are not exist in working rootfs
|
||||
while read; do
|
||||
line="$REPLY"
|
||||
[ -e "${line}" ] && continue
|
||||
rm -rf "/overlay/upper/${line}" "/ext_overlay/upper/${line}"
|
||||
done < /rom/$PKG_BASE/${pkgname}.conffiles
|
||||
fi
|
||||
# restore auto start
|
||||
grep '^/etc/init\.d/' /rom/$PKG_BASE/${pkgname}.list | while read; do
|
||||
line="$REPLY"
|
||||
line="$(basename ${line})"
|
||||
rm -f "/overlay/upper/etc/rc.d/"*"${line}" "/ext_overlay/upper/etc/rc.d/"*"${line}"
|
||||
done
|
||||
rm -f /overlay/upper/$PKG_BASE/${pkgname}.list /ext_overlay/upper/$PKG_BASE/${pkgname}.list
|
||||
fi
|
||||
@@ -48,10 +72,32 @@ ls_all_rom_pkgs() {
|
||||
|
||||
reset_all_rom() {
|
||||
local line
|
||||
rm -f /tmp/.reset_dirs
|
||||
ls_all_rom_pkgs | while read; do
|
||||
line="$REPLY"
|
||||
reset_pkg "$line"
|
||||
done
|
||||
if [ -s /tmp/.reset_dirs ]; then
|
||||
echo "reset overlayfs opaque flags..."
|
||||
sort -u /tmp/.reset_dirs | while read; do
|
||||
local line="$REPLY"
|
||||
echo "reset dir $line and its parents"
|
||||
while :; do
|
||||
dir="$line"
|
||||
line="$(dirname ${dir})"
|
||||
[ -z "$dir" -o "$dir" = "/" -o "$dir" = "." ] && break
|
||||
if [ -e "/overlay/upper/${dir}" -o -e "/ext_overlay/upper/${dir}" ]; then
|
||||
if [ -d "/overlay/upper/${dir}" -o -d "/ext_overlay/upper/${dir}" ]; then
|
||||
setfattr -x "trusted.overlay.opaque" -h "/overlay/upper/${dir}" "/ext_overlay/upper/${dir}" 2>/dev/null
|
||||
else
|
||||
rm -f "/overlay/upper/${dir}" "/ext_overlay/upper/${dir}"
|
||||
fi
|
||||
fi
|
||||
[ "$line" = "$dir" ] && break
|
||||
done
|
||||
done
|
||||
fi
|
||||
rm -f /tmp/.reset_dirs
|
||||
}
|
||||
|
||||
reset_all_rom
|
||||
|
||||
Reference in new issue
Block a user