fix config for 25.12.2
Signed-off-by: Zhe Yuan <yuanzhe1999@outlook.com>
This commit is contained in:
@@ -5,7 +5,9 @@
|
|||||||
# ./add-openwrt-packages.sh packages.txt
|
# ./add-openwrt-packages.sh packages.txt
|
||||||
# Description:
|
# Description:
|
||||||
# - Reads package names from a text file (supports both newline or space separation)
|
# - Reads package names from a text file (supports both newline or space separation)
|
||||||
# - Adds missing CONFIG_PACKAGE_xxx=y entries to .config
|
# - Supports ##built-in and ##module sections to control build mode (=y or =m)
|
||||||
|
# - Packages default to built-in (=y) if no section header is specified
|
||||||
|
# - Adds missing CONFIG_PACKAGE_xxx entries to .config
|
||||||
# - Keeps existing settings intact
|
# - Keeps existing settings intact
|
||||||
# - Reports missing packages
|
# - Reports missing packages
|
||||||
# - Runs make defconfig at the end to sync dependencies
|
# - Runs make defconfig at the end to sync dependencies
|
||||||
@@ -81,27 +83,51 @@ package_exists() {
|
|||||||
|
|
||||||
echo "📦 Reading packages from $PKG_FILE ..."
|
echo "📦 Reading packages from $PKG_FILE ..."
|
||||||
|
|
||||||
# Read package tokens from file, while allowing inline comments.
|
# Parse the file into "package:mode" pairs, respecting ##built-in / ##module sections.
|
||||||
PACKAGES=$(awk '{ sub(/#.*/, ""); for (i = 1; i <= NF; i++) print $i }' "$PKG_FILE")
|
# Default mode is "y" (built-in). Inline comments (#xxx but not ##) are stripped.
|
||||||
|
ENTRIES=$(awk '
|
||||||
|
BEGIN { mode = "y" }
|
||||||
|
/^##built-in/ { mode = "y"; next }
|
||||||
|
/^##module/ { mode = "m"; next }
|
||||||
|
{
|
||||||
|
sub(/#[^#].*/, "") # strip inline comments (single #), preserve ## headers
|
||||||
|
for (i = 1; i <= NF; i++) print $i ":" mode
|
||||||
|
}
|
||||||
|
' "$PKG_FILE")
|
||||||
|
|
||||||
ADDED=()
|
ADDED=()
|
||||||
|
UPGRADED=()
|
||||||
MISSING=()
|
MISSING=()
|
||||||
|
|
||||||
for pkg in $PACKAGES; do
|
for entry in $ENTRIES; do
|
||||||
|
pkg="${entry%:*}"
|
||||||
|
mode="${entry##*:}"
|
||||||
CONFIG_NAME="CONFIG_PACKAGE_${pkg}"
|
CONFIG_NAME="CONFIG_PACKAGE_${pkg}"
|
||||||
|
|
||||||
# Skip if already built-in
|
if [ "$mode" = "y" ]; then
|
||||||
if is_already_builtin "$pkg"; then
|
# --- built-in mode ---
|
||||||
echo "✅ Already built-in: $pkg"
|
if is_already_builtin "$pkg"; then
|
||||||
continue
|
echo "✅ Already built-in: $pkg"
|
||||||
fi
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
# Upgrade module to built-in
|
if is_module "$pkg"; then
|
||||||
if is_module "$pkg"; then
|
sed -i "s/^CONFIG_PACKAGE_${pkg}=m$/CONFIG_PACKAGE_${pkg}=y/" .config
|
||||||
sed -i "s/^CONFIG_PACKAGE_${pkg}=m$/CONFIG_PACKAGE_${pkg}=y/" .config
|
UPGRADED+=("$pkg")
|
||||||
ADDED+=("$pkg")
|
echo "⬆️ Module → built-in: $pkg"
|
||||||
echo "⬆️ Module → built-in: $pkg"
|
continue
|
||||||
continue
|
fi
|
||||||
|
else
|
||||||
|
# --- module mode ---
|
||||||
|
if is_module "$pkg"; then
|
||||||
|
echo "✅ Already module: $pkg"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if is_already_builtin "$pkg"; then
|
||||||
|
echo "✅ Already built-in (keeping): $pkg"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if package exists in OpenWrt package metadata.
|
# Check if package exists in OpenWrt package metadata.
|
||||||
@@ -112,9 +138,9 @@ for pkg in $PACKAGES; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Append package config
|
# Append package config
|
||||||
echo "${CONFIG_NAME}=y" >> .config
|
echo "${CONFIG_NAME}=${mode}" >> .config
|
||||||
ADDED+=("$pkg")
|
ADDED+=("$pkg (=${mode})")
|
||||||
echo "➕ Added: $pkg"
|
echo "➕ Added: $pkg (=${mode})"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Run defconfig to sync dependencies
|
# Run defconfig to sync dependencies
|
||||||
@@ -126,6 +152,8 @@ echo
|
|||||||
echo "✅ Done!"
|
echo "✅ Done!"
|
||||||
echo "📋 Packages newly added: ${#ADDED[@]}"
|
echo "📋 Packages newly added: ${#ADDED[@]}"
|
||||||
[ ${#ADDED[@]} -gt 0 ] && echo " → ${ADDED[*]}"
|
[ ${#ADDED[@]} -gt 0 ] && echo " → ${ADDED[*]}"
|
||||||
|
echo "📋 Packages upgraded to built-in: ${#UPGRADED[@]}"
|
||||||
|
[ ${#UPGRADED[@]} -gt 0 ] && echo " → ${UPGRADED[*]}"
|
||||||
if [ ${#MISSING[@]} -gt 0 ]; then
|
if [ ${#MISSING[@]} -gt 0 ]; then
|
||||||
echo "⚠️ Packages not found (check feeds or spelling):"
|
echo "⚠️ Packages not found (check feeds or spelling):"
|
||||||
for m in "${MISSING[@]}"; do
|
for m in "${MISSING[@]}"; do
|
||||||
|
|||||||
134
add-openwrt-packages_old.sh
Executable file
134
add-openwrt-packages_old.sh
Executable file
@@ -0,0 +1,134 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Add specified OpenWRT packages (from a text file) to .config without removing existing ones
|
||||||
|
# Author: Zhe Yuan
|
||||||
|
# Usage:
|
||||||
|
# ./add-openwrt-packages.sh packages.txt
|
||||||
|
# Description:
|
||||||
|
# - Reads package names from a text file (supports both newline or space separation)
|
||||||
|
# - Adds missing CONFIG_PACKAGE_xxx=y entries to .config
|
||||||
|
# - Keeps existing settings intact
|
||||||
|
# - Reports missing packages
|
||||||
|
# - Runs make defconfig at the end to sync dependencies
|
||||||
|
|
||||||
|
set -e
|
||||||
|
umask 022
|
||||||
|
|
||||||
|
# Check argument
|
||||||
|
if [ "$#" -ne 1 ]; then
|
||||||
|
echo "❌ Usage: $0 <package_list.txt>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PKG_FILE="$1"
|
||||||
|
|
||||||
|
# Verify file exists
|
||||||
|
if [ ! -f "$PKG_FILE" ]; then
|
||||||
|
echo "❌ Error: File not found: $PKG_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify we are in OpenWRT source root
|
||||||
|
if [ ! -d "package" ] || [ ! -f "Makefile" ]; then
|
||||||
|
echo "❌ Error: Please run this script in the OpenWRT source root directory."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure .config exists
|
||||||
|
if [ ! -f ".config" ]; then
|
||||||
|
echo "⚙️ Generating initial .config..."
|
||||||
|
make defconfig
|
||||||
|
fi
|
||||||
|
|
||||||
|
PACKAGE_INDEX="tmp/.config-package.in"
|
||||||
|
PACKAGE_INFO="tmp/.packageinfo"
|
||||||
|
|
||||||
|
# Ensure package metadata exists for reliable package name lookups.
|
||||||
|
if [ ! -f "$PACKAGE_INDEX" ] && [ ! -f "$PACKAGE_INFO" ]; then
|
||||||
|
echo "⚙️ Generating package metadata..."
|
||||||
|
make defconfig >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
is_already_builtin() {
|
||||||
|
local pkg="$1"
|
||||||
|
|
||||||
|
awk -v package_y="CONFIG_PACKAGE_${pkg}=y" \
|
||||||
|
-v default_y="CONFIG_DEFAULT_${pkg}=y" \
|
||||||
|
'$0 == package_y || $0 == default_y { found=1; exit }
|
||||||
|
END { exit !found }' .config
|
||||||
|
}
|
||||||
|
|
||||||
|
is_module() {
|
||||||
|
local pkg="$1"
|
||||||
|
|
||||||
|
grep -qx "CONFIG_PACKAGE_${pkg}=m" .config
|
||||||
|
}
|
||||||
|
|
||||||
|
package_exists() {
|
||||||
|
local pkg="$1"
|
||||||
|
|
||||||
|
if [ -f "$PACKAGE_INDEX" ] &&
|
||||||
|
awk -v key="PACKAGE_${pkg}" '$1 == "config" && $2 == key { found=1; exit }
|
||||||
|
END { exit !found }' "$PACKAGE_INDEX"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$PACKAGE_INFO" ] && grep -Fqx "Package: $pkg" "$PACKAGE_INFO"; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "📦 Reading packages from $PKG_FILE ..."
|
||||||
|
|
||||||
|
# Read package tokens from file, while allowing inline comments.
|
||||||
|
PACKAGES=$(awk '{ sub(/#.*/, ""); for (i = 1; i <= NF; i++) print $i }' "$PKG_FILE")
|
||||||
|
|
||||||
|
ADDED=()
|
||||||
|
MISSING=()
|
||||||
|
|
||||||
|
for pkg in $PACKAGES; do
|
||||||
|
CONFIG_NAME="CONFIG_PACKAGE_${pkg}"
|
||||||
|
|
||||||
|
# Skip if already built-in
|
||||||
|
if is_already_builtin "$pkg"; then
|
||||||
|
echo "✅ Already built-in: $pkg"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Upgrade module to built-in
|
||||||
|
if is_module "$pkg"; then
|
||||||
|
sed -i "s/^CONFIG_PACKAGE_${pkg}=m$/CONFIG_PACKAGE_${pkg}=y/" .config
|
||||||
|
ADDED+=("$pkg")
|
||||||
|
echo "⬆️ Module → built-in: $pkg"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if package exists in OpenWrt package metadata.
|
||||||
|
if ! package_exists "$pkg"; then
|
||||||
|
echo "⚠️ Package not found: $pkg"
|
||||||
|
MISSING+=("$pkg")
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Append package config
|
||||||
|
echo "${CONFIG_NAME}=y" >> .config
|
||||||
|
ADDED+=("$pkg")
|
||||||
|
echo "➕ Added: $pkg"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Run defconfig to sync dependencies
|
||||||
|
echo
|
||||||
|
echo "⚙️ Running make defconfig..."
|
||||||
|
make defconfig >/dev/null
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "✅ Done!"
|
||||||
|
echo "📋 Packages newly added: ${#ADDED[@]}"
|
||||||
|
[ ${#ADDED[@]} -gt 0 ] && echo " → ${ADDED[*]}"
|
||||||
|
if [ ${#MISSING[@]} -gt 0 ]; then
|
||||||
|
echo "⚠️ Packages not found (check feeds or spelling):"
|
||||||
|
for m in "${MISSING[@]}"; do
|
||||||
|
echo " - $m"
|
||||||
|
done
|
||||||
|
fi
|
||||||
8158
config_25.12.2/cudy_tr3000-v1_25.12.2.buildinfo
Normal file
8158
config_25.12.2/cudy_tr3000-v1_25.12.2.buildinfo
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,9 @@
|
|||||||
|
##built-in
|
||||||
|
|
||||||
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad kmod-usb3 kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware luci luci-app-attendedsysupgrade
|
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad kmod-usb3 kmod-mt7915e kmod-mt7981-firmware mt7981-wo-firmware luci luci-app-attendedsysupgrade
|
||||||
curl yq unzip ip-full kmod-inet-diag kmod-nft-socket kmod-nft-tproxy kmod-tun luci-app-upnp luci-app-ttyd luci-app-filemanager luci-app-wol luci-app-mwan3 iptables-nft ip6tables-nft tailscale zerotier adguardhome
|
iptables-nft ip6tables-nft curl yq unzip ip-full kmod-inet-diag kmod-nft-socket kmod-nft-tproxy kmod-tun
|
||||||
easytier luci-app-netspeedtest luci-app-easytier
|
|
||||||
|
luci-app-upnp luci-app-ttyd luci-app-filemanager luci-app-wol luci-app-mwan3 tailscale zerotier adguardhome
|
||||||
|
easytier luci-app-netspeedtest luci-app-easytier
|
||||||
|
|
||||||
|
##module
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
|
##built-in
|
||||||
|
|
||||||
apk-mbedtls ath11k-firmware-ipq8074 base-files ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools kmod-ath11k-ahb kmod-fs-ext4 kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-phy-aquantia kmod-qca-nss-dp kmod-usb-dwc3 kmod-usb-dwc3-qcom kmod-usb3 libc libgcc libustream-mbedtls logd losetup mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-leds-pca963x ipq-wifi-linksys_mx8500 kmod-ath11k-pci ath11k-firmware-qcn9074 kmod-hci-uart luci luci-app-attendedsysupgrade
|
apk-mbedtls ath11k-firmware-ipq8074 base-files ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools kmod-ath11k-ahb kmod-fs-ext4 kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload kmod-phy-aquantia kmod-qca-nss-dp kmod-usb-dwc3 kmod-usb-dwc3-qcom kmod-usb3 libc libgcc libustream-mbedtls logd losetup mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-leds-pca963x ipq-wifi-linksys_mx8500 kmod-ath11k-pci ath11k-firmware-qcn9074 kmod-hci-uart luci luci-app-attendedsysupgrade
|
||||||
curl yq unzip ip-full kmod-mtd-rw kmod-inet-diag kmod-nft-socket kmod-nft-tproxy kmod-tun luci-app-upnp luci-app-ttyd luci-app-filemanager luci-app-wol luci-app-mwan3 iptables-nft ip6tables-nft luci-app-openvpn luci-proto-wireguard luci-app-cloudflared qrencode tailscale zerotier adguardhome
|
curl yq unzip ip-full kmod-mtd-rw kmod-inet-diag kmod-nft-socket kmod-nft-tproxy kmod-tun luci-app-upnp luci-app-ttyd luci-app-filemanager luci-app-wol luci-app-mwan3 iptables-nft ip6tables-nft
|
||||||
easytier luci-app-netspeedtest luci-app-easytier
|
|
||||||
|
luci-app-openvpn luci-proto-wireguard luci-app-cloudflared qrencode tailscale zerotier adguardhome
|
||||||
|
easytier luci-app-netspeedtest luci-app-easytier
|
||||||
|
##module
|
||||||
|
|||||||
Reference in New Issue
Block a user