add scripts

This commit is contained in:
2025-11-08 10:28:02 -05:00
parent 718d82aabc
commit 299f39d3f2
7 changed files with 717 additions and 0 deletions

161
prepare-openwrt.sh Normal file
View File

@@ -0,0 +1,161 @@
#!/bin/bash
# Automatically prepare OpenWRT build environment.
# - Clone or update repository
# - Support selecting release/beta/snapshot versions
# - Adjust directory layout automatically if run from openwrt-build-helper
# - Update and install feeds
# - Prepare .config for build
set -e
umask 022
REPO_URL="https://github.com/openwrt/openwrt.git"
DEFAULT_DIR="openwrt"
echo "========================================"
echo " OpenWRT Build Environment Setup Script"
echo "========================================"
# --- Function: detect and normalize directory structure ---
normalize_structure() {
local current_dir=$(basename "$(pwd)")
if [ "$current_dir" == "openwrt-build-helper" ]; then
echo "[INFO] Detected helper directory structure."
mkdir -p helper
# Move everything except helper into helper/
for f in * .*; do
[[ "$f" == "." || "$f" == ".." || "$f" == "helper" ]] && continue
mv "$f" helper/ 2>/dev/null || true
done
cd ..
mv openwrt-build-helper openwrt
cd openwrt
echo "[INFO] Directory renamed to 'openwrt', helper files moved to 'openwrt/helper/'."
elif [ "$current_dir" == "openwrt" ]; then
echo "[INFO] Running directly inside openwrt build directory."
else
echo "[INFO] Not inside openwrt folder, ensuring 'openwrt' subdirectory exists."
mkdir -p openwrt
cd openwrt
fi
}
# --- Function: choose version ---
choose_version() {
echo
echo "Select OpenWRT version type:"
echo " 1) Stable release (e.g., 24.10.4)"
echo " 2) Beta (e.g., 24.10-SNAPSHOT or openwrt-24.10)"
echo " 3) Latest snapshot (master branch)"
echo -n "Enter choice [1-3, default=1]: "
read -r choice
case "$choice" in
2)
echo -n "Enter beta version (e.g. 24.10 or openwrt-24.10): "
read -r VERSION
SELECTED_TYPE="beta"
;;
3)
SELECTED_TYPE="snapshot"
VERSION="master"
;;
*)
echo -n "Enter stable version number (e.g. 24.10.4, default: latest): "
read -r VERSION
SELECTED_TYPE="stable"
;;
esac
}
# --- Start ---
normalize_structure
choose_version
REPO_DIR="$DEFAULT_DIR"
# If already inside openwrt repo, use current path
if [ -d ".git" ] && [ -f "feeds.conf.default" ]; then
REPO_DIR="."
fi
# --- Clone or update repository ---
if [ "$REPO_DIR" == "." ]; then
echo "[INFO] Existing OpenWRT repository detected. Updating..."
git fetch --tags origin
else
if [ -d "$REPO_DIR/.git" ]; then
echo "[INFO] Repository exists, updating..."
pushd "$REPO_DIR" >/dev/null
git fetch --tags origin
git pull --ff-only
popd >/dev/null
else
echo "[INFO] Cloning repository..."
git clone "$REPO_URL" "$REPO_DIR"
fi
fi
pushd "$REPO_DIR" >/dev/null
# --- Version selection logic ---
if [ "$SELECTED_TYPE" == "snapshot" ]; then
echo "[INFO] Checking out latest master (snapshot)..."
git checkout master
git pull origin master
elif [ "$SELECTED_TYPE" == "beta" ]; then
# Try both openwrt-<ver> and v<ver>-SNAPSHOT
if git rev-parse --verify "openwrt-${VERSION}" >/dev/null 2>&1; then
git checkout "openwrt-${VERSION}"
elif git rev-parse --verify "v${VERSION}-SNAPSHOT" >/dev/null 2>&1; then
git checkout "v${VERSION}-SNAPSHOT"
else
echo "[ERROR] Beta branch or tag not found for version $VERSION."
exit 1
fi
else
# Stable version
if [ -z "$VERSION" ]; then
LATEST_TAG=$(git tag -l "v*" | sort -V | tail -n 1)
echo "[INFO] No version specified, using latest stable tag: $LATEST_TAG"
VERSION="$LATEST_TAG"
else
VERSION="v${VERSION}"
fi
if git rev-parse --verify "$VERSION" >/dev/null 2>&1; then
git checkout "$VERSION"
else
echo "[ERROR] Version tag $VERSION not found."
exit 1
fi
fi
# --- Update feeds ---
echo "[INFO] Updating and installing all feeds..."
./scripts/feeds update -a
./scripts/feeds install -a
# --- Run defconfig ---
echo "[INFO] Running make defconfig..."
make defconfig
CURRENT_VERSION=$(git describe --tags 2>/dev/null || git rev-parse --abbrev-ref HEAD)
popd >/dev/null
echo
echo "========================================"
echo "✅ OpenWRT source is ready."
echo " Version: $CURRENT_VERSION"
echo "========================================"
echo
echo "👉 Next steps:"
echo " cd openwrt"
echo " make menuconfig"
echo " make -j\$(nproc) download world"
echo