mirror of
https://github.com/eth-act/ere.git
synced 2026-02-19 11:54:42 -05:00
120 lines
2.9 KiB
Bash
Executable File
120 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e # Exit on error
|
|
|
|
GO_BRANCH="tamago1.25.2-zkvm-dev"
|
|
|
|
# Configuration
|
|
INSTALL_DIR="$HOME/.tamago" # that can't be empty nor "/"!
|
|
TEMP_DIR=$(mktemp -d)
|
|
GO_BRANCH="${GO_BRANCH:-master}" # Default to master, can override with env var
|
|
|
|
# Stock Go configuration
|
|
STOCK_GO_VERSION="go1.25.3"
|
|
STOCK_GO_DIR="$TEMP_DIR/stock-go"
|
|
STOCK_GO_INSTALL=false
|
|
|
|
echo "Building Go compiler..."
|
|
echo "Installation directory: $INSTALL_DIR"
|
|
echo "Version/branch: $GO_BRANCH"
|
|
echo ""
|
|
|
|
# Clean up temp directory on exit
|
|
trap "rm -rf $TEMP_DIR" EXIT
|
|
|
|
# Check if Go 1.25.3 is installed
|
|
echo "Checking for Go compiler..."
|
|
if command -v go &> /dev/null; then
|
|
CURRENT_GO_VERSION=$(go version | awk '{print $3}')
|
|
if [ "$CURRENT_GO_VERSION" = "$STOCK_GO_VERSION" ]; then
|
|
echo "Found Go $STOCK_GO_VERSION already installed"
|
|
else
|
|
echo "Found Go $CURRENT_GO_VERSION, but need $STOCK_GO_VERSION"
|
|
STOCK_GO_INSTALL=true
|
|
fi
|
|
else
|
|
echo "Go compiler not found, will install $STOCK_GO_VERSION"
|
|
STOCK_GO_INSTALL=true
|
|
fi
|
|
|
|
# Install stock Go if needed
|
|
if [ "$STOCK_GO_INSTALL" = true ]; then
|
|
echo "Installing stock Go $STOCK_GO_VERSION..."
|
|
|
|
# Detect OS and architecture
|
|
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
|
ARCH=$(uname -m)
|
|
|
|
case "$ARCH" in
|
|
x86_64)
|
|
ARCH="amd64"
|
|
;;
|
|
aarch64|arm64)
|
|
ARCH="arm64"
|
|
;;
|
|
*)
|
|
echo "Error: Unsupported architecture: $ARCH"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
GO_ARCHIVE="${STOCK_GO_VERSION}.${OS}-${ARCH}.tar.gz"
|
|
GO_URL="https://go.dev/dl/${GO_ARCHIVE}"
|
|
|
|
echo "Downloading from $GO_URL..."
|
|
cd "$TEMP_DIR"
|
|
|
|
curl -L -O "$GO_URL"
|
|
|
|
echo "Extracting Go archive..."
|
|
tar -xzf "$GO_ARCHIVE"
|
|
mv go "$STOCK_GO_DIR"
|
|
|
|
# Add stock Go to PATH
|
|
export PATH="$STOCK_GO_DIR/bin:$PATH"
|
|
export GOROOT="$STOCK_GO_DIR"
|
|
|
|
echo "Stock Go installed temporarily at $STOCK_GO_DIR"
|
|
go version
|
|
fi
|
|
|
|
# Check if git is installed
|
|
if ! command -v git &> /dev/null; then
|
|
echo "Error: git is not installed. Please install git first."
|
|
exit 1
|
|
fi
|
|
|
|
# Clone Go repository
|
|
echo "Cloning Go repository..."
|
|
cd "$TEMP_DIR"
|
|
git clone --depth 1 --branch $GO_BRANCH https://github.com/eth-act/tamago-go.git go
|
|
|
|
cd go
|
|
|
|
# Remove .git directory to save space
|
|
echo "Removing .git directory..."
|
|
rm -rf .git
|
|
|
|
# Build Go
|
|
echo "Building Go compiler..."
|
|
cd src
|
|
GOROOT_FINAL="$INSTALL_DIR" ./make.bash
|
|
|
|
# Move built Go to installation directory
|
|
echo "Installing to $INSTALL_DIR..."
|
|
cd ../..
|
|
rm -rf "$INSTALL_DIR"
|
|
mv go "$INSTALL_DIR"
|
|
|
|
echo ""
|
|
echo "Go compiler successfully built and installed to: $INSTALL_DIR"
|
|
echo ""
|
|
echo "To use this Go installation, add the following to your shell profile:"
|
|
echo ""
|
|
echo " export GOROOT=$INSTALL_DIR"
|
|
echo " export PATH=\$GOROOT/bin:\$PATH"
|
|
echo ""
|
|
echo "Then run: source ~/.bashrc (or ~/.zshrc, depending on your shell)"
|
|
echo ""
|
|
echo "Verify installation with: go version"
|