Files
openwrt-build-helper/update-go-path.sh

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