#!/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