| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #!/bin/bash
- # This script install foundry and the solidity compiler required to build the
- # ethereum contracts. Foundry itself provides a mechanism to install solc, but
- # it doesn't work with certain firewall configurations.
- set -euo pipefail
- # check if foundry.toml exists
- if [ ! -f foundry.toml ]; then
- echo "foundry.toml not found. Please call from the ethereum directory." >& 2
- exit 1
- fi
- # Read compiler version from foundry.toml
- SOLC_VERSION=$(grep solc_version foundry.toml | cut -d'=' -f2 | tr -d '" ') || true
- if [ -z "$SOLC_VERSION" ]; then
- echo "solc_version not found in foundry.toml." >& 2
- exit 1
- fi
- main() {
- OS=$(uname -s)
- case "$OS" in
- Darwin)
- install_mac
- ;;
- Linux)
- install_linux
- ;;
- *)
- echo "Unsupported OS: $OS"
- exit 1
- ;;
- esac
- }
- function install_mac() {
- if ! command -v brew > /dev/null; then
- echo "brew is unavailable. Please install: https://brew.sh"
- fi
- if ! brew list libusb > /dev/null 2>&1; then
- echo "Installing libusb"
- brew install libusb
- fi
- if ! command -v foundryup > /dev/null; then
- # In the latest github actions runner, XDG_CONFIG_HOME is set to ${HOME}/.config,
- # so we unset it to ensure foundryup is installed to ${HOME}/.foundry/bin
- curl -L https://foundry.paradigm.xyz --silent | XDG_CONFIG_HOME= bash
- XDG_CONFIG_HOME= "$HOME/.foundry/bin/foundryup"
- fi
- INSTALL_DIR="$HOME/.svm/$SOLC_VERSION"
- mkdir -p "$INSTALL_DIR"
- SOLC_PATH="$INSTALL_DIR/solc-$SOLC_VERSION"
- if [ ! -f "$SOLC_PATH" ]; then
- echo "Installing solc-$SOLC_VERSION"
- curl -L --silent "https://github.com/ethereum/solidity/releases/download/v$SOLC_VERSION/solc-macos" > "$SOLC_PATH"
- chmod +x "$SOLC_PATH"
- echo "Installed $SOLC_PATH"
- else
- echo "Solidity compiler found: $SOLC_PATH"
- fi
- }
- function install_linux() {
- if ! command -v foundryup > /dev/null; then
- # In the latest github actions runner, XDG_CONFIG_HOME is set to ${HOME}/.config,
- # so we unset it to ensure foundryup is installed to ${HOME}/.foundry/bin
- curl -L https://foundry.paradigm.xyz --silent | XDG_CONFIG_HOME= bash
- XDG_CONFIG_HOME= "$HOME/.foundry/bin/foundryup"
- fi
- INSTALL_DIR="$HOME/.svm/$SOLC_VERSION"
- mkdir -p "$INSTALL_DIR"
- SOLC_PATH="$INSTALL_DIR/solc-$SOLC_VERSION"
- if [ ! -f "$SOLC_PATH" ]; then
- echo "Installing solc-$SOLC_VERSION"
- curl -L --silent "https://github.com/ethereum/solidity/releases/download/v$SOLC_VERSION/solc-static-linux" > "$SOLC_PATH"
- chmod +x "$SOLC_PATH"
- echo "Installed $SOLC_PATH"
- else
- echo "Solidity compiler found: $SOLC_PATH"
- fi
- }
- main "$@"; exit
|