🎈 Sync 2026-08-24 18:23:48

This commit is contained in:
github-actions[bot] committed 2026-08-24 18:23:48 +08:00
1 parent 91bee6a90e
commit 6b8877f5e1
119 files changed
+2501 -2677

No files matched your search

@@ -158,6 +158,7 @@ level=$1
echo "Try Level $level"
# Apk system means that openwrt is newer enough, so we don't need to check the odhcpd version on apk system
odhcpd_version=$(grep -o 'Version: [0-9]*' /usr/lib/opkg/info/odhcpd-ipv6only.control | cut -d' ' -f2)
if [ -n "$odhcpd_version" -a "$odhcpd_version" -lt 2025 ]; then
echo "odhcpd version $odhcpd_version detected, enabling NDP bug workaround"
@@ -166,7 +167,10 @@ fi
# nat
if [ "$level" = $LEVEL_NAT ]; then
if opkg status kmod-ipt-nat6 | grep '^Status: ' | grep -Fwq installed ; then
if [ -f /etc/apk/arch ]; then
apk query --installed --field version kmod-ipt-nat6 | grep -q 'Version:\s*[1-9]' || \
apk add kmod-ipt-nat6 || exit 1
elif opkg status kmod-ipt-nat6 | grep '^Status: ' | grep -Fwq installed ; then
echo "kmod-ipt-nat6 found"
else
echo "kmod-ipt-nat6 not found, installing"
@@ -1,18 +1,33 @@
#!/bin/sh
# Copyright (C) 2025 jjm2473@gmail.com
(
cd /usr/lib/opkg/info
grep -lm1 '^Version: 0.0.0-r1$' kmod-*.control 2>/dev/null | sed 's/.control$//'
) > /tmp/incompat_kmods.txt
APK=false
[ -f /etc/apk/arch ] && APK=true
if $APK; then
apk list --installed --manifest 'kmod-*' | grep ' 0.0.0-r1$' | cut -d' ' -f1 > /tmp/incompat_kmods.txt
else
(
cd /usr/lib/opkg/info
grep -lm1 '^Version: 0.0.0-r1$' kmod-*.control 2>/dev/null | sed 's/.control$//'
) > /tmp/incompat_kmods.txt
fi
if [ -s /tmp/incompat_kmods.txt ]; then
echo "The following incompatible kernel modules were found:"
cat /tmp/incompat_kmods.txt
echo "=====END====="
echo "Try installing from opkg"
opkg update
opkg install $(cat /tmp/incompat_kmods.txt)
if $APK; then
echo "Try installing from apk"
# doing `apk fix` twice, because the first time install the version 0.0.0-r1, which is always not exist, but it's side effect mark the package uninstalled, the second time will install the latest version.
# `apk add --force-reinstall` works too, but it will change world file, which may not be desired.
apk fix -r $(cat /tmp/incompat_kmods.txt) >/dev/null 2>&1
apk fix -r $(cat /tmp/incompat_kmods.txt)
else
echo "Try installing from opkg"
opkg update
opkg install $(cat /tmp/incompat_kmods.txt)
fi
rm -f /tmp/incompat_kmods.txt
echo "If you encounter network problems, please try again"
echo "If it says some packages are unknown, it may be because they have been removed. Just ignore it."
@@ -1,48 +1,49 @@
#!/bin/sh
APK=false
PKG_BASE=usr/lib/opkg/info
PKG_EXT=control
[ -s /etc/apk/arch ] && {
APK=true
PKG_BASE=lib/apk/packages
PKG_EXT=list
}
nonconf_files_of_pkg() {
local pkgname="$1"
if [ -s /rom/usr/lib/opkg/info/${pkgname}.conffiles ]; then
grep -hvxFf /rom/usr/lib/opkg/info/${pkgname}.conffiles \
/rom/usr/lib/opkg/info/${pkgname}.list
if [ -s /rom/$PKG_BASE/${pkgname}.conffiles ]; then
grep -hvxFf /rom/$PKG_BASE/${pkgname}.conffiles \
/rom/$PKG_BASE/${pkgname}.list
else
cat /rom/usr/lib/opkg/info/${pkgname}.list
cat /rom/$PKG_BASE/${pkgname}.list
fi
}
reset_pkg() {
local pkgname="$1"
local line
local dep
local deps
echo "${pkgname}" | grep -q '^kernel$
^libc$
^libgcc1$
^libatomic1$
^busybox$' && return
if [ -f /rom/usr/lib/opkg/info/${pkgname}.control -a \
\( -e /overlay/upper/usr/lib/opkg/info/${pkgname}.control -o \
-e /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.control \) ]; then
if [ -f /rom/$PKG_BASE/${pkgname}.$PKG_EXT -a \
\( -e /overlay/upper/$PKG_BASE/${pkgname}.$PKG_EXT -o \
-e /ext_overlay/upper/$PKG_BASE/${pkgname}.$PKG_EXT \) ]; then
echo "reset ${pkgname}"
if [ -f /rom/usr/lib/opkg/info/${pkgname}.list ]; then
if [ -f /rom/$PKG_BASE/${pkgname}.list ]; then
nonconf_files_of_pkg "${pkgname}" | while read; do
line="$REPLY"
line="$REPLY"
rm -f "/overlay/upper/${line}" "/ext_overlay/upper/${line}"
done
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.list /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.list
rm -f /overlay/upper/$PKG_BASE/${pkgname}.list /ext_overlay/upper/$PKG_BASE/${pkgname}.list
fi
deps=`grep '^Depends: ' /rom/usr/lib/opkg/info/${pkgname}.control | sed -e 's/^Depends: //' -e 's/ ([^)]*)//g' -e 's/,/ /g'`
# avoid loop deps
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.control /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.control
for dep in $deps ; do
reset_pkg "$dep"
done
rm -f /overlay/upper/usr/lib/opkg/info/${pkgname}.* /ext_overlay/upper/usr/lib/opkg/info/${pkgname}.*
fi
}
ls_all_rom_pkgs() {
( cd /rom/usr/lib/opkg/info ; find . -maxdepth 1 -name '*.control' | sed -E 's#./(.*).control#\1#g' )
( cd /rom/$PKG_BASE ; find . -maxdepth 1 -name "*.$PKG_EXT" | sed -E 's#./(.*).'"$PKG_EXT"'#\1#g' )
}
reset_all_rom() {
@@ -55,7 +56,13 @@ reset_all_rom() {
reset_all_rom
touch /overlay/upper/usr/lib/opkg/.upgrading
if $APK; then
rm -f /overlay/upper/etc/uci-defaults/.upgrading /ext_overlay/upper/etc/uci-defaults/.upgrading
touch /overlay/upper/etc/uci-defaults/.upgrading 2>/dev/null
else
rm -f /overlay/upper/usr/lib/opkg/.upgrading /ext_overlay/upper/usr/lib/opkg/.upgrading
touch /overlay/upper/usr/lib/opkg/.upgrading 2>/dev/null
fi
echo "done, please reboot, it will reboot in 10s"