75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Automatically detect Go installation and update .config for OpenWRT
|
|
# Author: Zhe Yuan
|
|
|
|
set -e
|
|
umask 022
|
|
|
|
CONFIG_FILE=".config"
|
|
|
|
echo "========================================"
|
|
echo " Go Path Auto Updater for OpenWRT"
|
|
echo "========================================"
|
|
|
|
# --- Check for .config file ---
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "[ERROR] No .config file found in current directory!"
|
|
echo "Please run this script inside your OpenWRT build root."
|
|
exit 1
|
|
fi
|
|
|
|
# --- Detect available Go installations ---
|
|
GO_DIRS=(/usr/lib/go-*/)
|
|
if [ ${#GO_DIRS[@]} -eq 0 ]; then
|
|
echo "[ERROR] No Go installation found under /usr/lib/go-*"
|
|
echo "Please install Go using: sudo apt install golang -y"
|
|
exit 1
|
|
fi
|
|
|
|
# --- Extract version numbers ---
|
|
GO_VERSIONS=()
|
|
for dir in "${GO_DIRS[@]}"; do
|
|
ver=$(basename "$dir" | sed -E 's/^go-([0-9]+\.[0-9]+).*$/\1/')
|
|
GO_VERSIONS+=("$ver")
|
|
done
|
|
|
|
# --- Sort versions and pick the latest ---
|
|
IFS=$'\n' sorted=($(sort -V <<<"${GO_VERSIONS[*]}"))
|
|
LATEST_VER="${sorted[-1]}"
|
|
LATEST_PATH="/usr/lib/go-${LATEST_VER}/"
|
|
|
|
echo "[INFO] Found Go versions: ${GO_VERSIONS[*]}"
|
|
echo "[INFO] Using latest Go version: $LATEST_VER"
|
|
echo "[INFO] Path: $LATEST_PATH"
|
|
|
|
# --- Check if multiple versions exist ---
|
|
if [ ${#GO_VERSIONS[@]} -gt 1 ]; then
|
|
echo "[WARN] Multiple Go versions detected!"
|
|
echo "If you prefer to use an older version, modify manually:"
|
|
echo " CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"/usr/lib/go-X.XX/\""
|
|
echo
|
|
fi
|
|
|
|
# --- Update .config ---
|
|
if grep -q '^CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=' "$CONFIG_FILE"; then
|
|
echo "[INFO] Updating existing CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT..."
|
|
sed -i "s|^CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=.*|CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"${LATEST_PATH}\"|" "$CONFIG_FILE"
|
|
else
|
|
echo "[INFO] Adding CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT..."
|
|
echo "CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"${LATEST_PATH}\"" >> "$CONFIG_FILE"
|
|
fi
|
|
|
|
# --- Verify result ---
|
|
echo
|
|
echo "[SUCCESS] Go path updated in .config:"
|
|
grep 'CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT' "$CONFIG_FILE"
|
|
|
|
echo
|
|
echo "========================================"
|
|
echo "✅ Go path update complete!"
|
|
echo "========================================"
|
|
echo
|
|
echo "👉 If you wish to override manually, edit .config and change:"
|
|
echo " CONFIG_GOLANG_EXTERNAL_BOOTSTRAP_ROOT=\"/usr/lib/go-X.XX/\""
|
|
echo
|