Files
openwrt-build-helper/download-config.sh

97 lines
3.1 KiB
Bash
Executable File

#!/bin/bash
# Download OpenWRT config.buildinfo, generate .config and run defconfig
# Author: Zhe Yuan
set -e
umask 022
# --- Check if inside OpenWRT source directory ---
if [ ! -f "feeds.conf.default" ] || [ ! -d "package" ]; then
echo "[ERROR] Must run inside OpenWRT root directory."
exit 1
fi
# --- Detect Git version ---
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
VERSION="${VERSION#v}"
IS_LATEST=false
if [ -z "$VERSION" ]; then
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" =~ openwrt-([0-9]+\.[0-9]+) ]]; then
PARTIAL_VERSION="${BASH_REMATCH[1]}"
# Find latest patch tag
LATEST_TAG=$(git tag -l "v${PARTIAL_VERSION}.*" | sort -V | tail -n1)
if [ -z "$LATEST_TAG" ]; then
echo "[ERROR] Cannot find latest tag for $PARTIAL_VERSION.*"
exit 1
fi
VERSION="${LATEST_TAG#v}"
IS_LATEST=true
elif [[ "$BRANCH" == *SNAPSHOT* ]]; then
VERSION="SNAPSHOT"
else
read -rp "Cannot detect version, input manually (e.g., 24.10.4 or SNAPSHOT): " VERSION
fi
fi
echo "[INFO] OpenWRT version: $VERSION"
# --- Devices list ---
# Format: Name Target FirmwareDevice
DEVICES=(
"Linksys_MX8500 qualcommax/ipq807x linksys_mx8500"
"Cudy_TR3000_128MB mediatek/filogic cudy_tr3000-v1"
"Cudy_TR3000_256MB mediatek/filogic cudy_tr3000-256mb-v1"
)
echo "Available devices:"
for i in "${!DEVICES[@]}"; do
NAME=$(echo "${DEVICES[$i]}" | awk '{print $1}')
echo " $i) $NAME"
done
read -rp "Select device number: " DEV_INDEX
if [[ -z "${DEVICES[$DEV_INDEX]}" ]]; then
echo "[ERROR] Invalid selection."
exit 1
fi
# --- Extract device info ---
read -r DEV_NAME DEV_TARGET DEV_FW <<<"${DEVICES[$DEV_INDEX]}"
echo "[INFO] Selected device: $DEV_NAME"
# --- Construct URLs ---
if [[ "$VERSION" == "SNAPSHOT" ]]; then
CONFIG_URL="https://downloads.openwrt.org/snapshots/targets/$DEV_TARGET/config.buildinfo"
FIRMWARE_URL="https://downloads.openwrt.org/snapshots/targets/$DEV_TARGET/openwrt-SNAPSHOT-$DEV_TARGET-$DEV_FW-squashfs-sysupgrade.bin"
else
CONFIG_URL="https://downloads.openwrt.org/releases/$VERSION/targets/$DEV_TARGET/config.buildinfo"
FIRMWARE_URL="https://downloads.openwrt.org/releases/$VERSION/targets/$DEV_TARGET/openwrt-$VERSION-$DEV_TARGET-$DEV_FW-squashfs-sysupgrade.bin"
fi
echo "[INFO] Config URL: $CONFIG_URL"
echo "[INFO] Firmware URL: $FIRMWARE_URL"
# --- Download config.buildinfo ---
echo "[INFO] Downloading config.buildinfo..."
wget -q --show-progress -O ".config" "$CONFIG_URL"
echo "[INFO] Saved as .config"
# --- Run make defconfig ---
echo "[INFO] Running make defconfig..."
make defconfig >/dev/null
echo "[INFO] defconfig done."
# --- Check firmware existence ---
if curl --head --silent --fail "$FIRMWARE_URL" >/dev/null; then
echo "[INFO] Firmware exists: $FIRMWARE_URL"
else
echo "[WARN] Firmware not found or URL invalid."
fi
# --- Print Firmware Selector URL ---
TARGET_ESC=$(echo $DEV_TARGET | sed 's|/|%2F|g')
FS_URL="https://firmware-selector.openwrt.org/?version=$VERSION&target=$TARGET_ESC&id=$DEV_FW"
echo "[INFO] Check Installed Packages at: $FS_URL"