From e0a46a338d49117b0dd1e553b0ce6c1eec4e2392 Mon Sep 17 00:00:00 2001 From: DaniPopes <57450786+DaniPopes@users.noreply.github.com> Date: Sat, 25 Feb 2023 15:12:29 +0100 Subject: [PATCH] ci: improve install script --- .github/scripts/install_test_binaries.sh | 95 ++++++++++++++---------- 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/.github/scripts/install_test_binaries.sh b/.github/scripts/install_test_binaries.sh index 5be69375..ed996294 100755 --- a/.github/scripts/install_test_binaries.sh +++ b/.github/scripts/install_test_binaries.sh @@ -1,52 +1,67 @@ #!/usr/bin/env bash # Installs Solc and Geth binaries +# Note: intended for use only with CI (x86_64 Ubuntu, MacOS or Windows) set -e GETH_BUILD=${GETH_BUILD:-"1.11.2-73b01f40"} SOLC_VERSION=${SOLC_VERSION:-"0.8.19"} -DIR="$HOME/bin" -mkdir -p "$DIR" -cd "$DIR" -export PATH="$DIR:$PATH" -if [ "$GITHUB_PATH" ]; then - echo "$DIR" >> "$GITHUB_PATH" - echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" -fi +BIN_DIR=${BIN_DIR:-"$HOME/bin"} +BIN_DIR=$(realpath "$BIN_DIR") -echo "Installing Geth" PLATFORM="$(uname -s | awk '{print tolower($0)}')" -case "$PLATFORM" in - linux|darwin) - GETH_ARCHIVE_NAME="geth-$PLATFORM-amd64-$GETH_BUILD" - curl "https://gethstore.blob.core.windows.net/builds/$GETH_ARCHIVE_NAME.tar.gz" | tar -xzvf - - mv -f "$GETH_ARCHIVE_NAME/geth" ./ - rm -rf "$GETH_ARCHIVE_NAME" - chmod +x geth - ;; - *) - GETH_ARCHIVE_NAME="geth-windows-amd64-$GETH_BUILD" - zip="$GETH_ARCHIVE_NAME.zip" - curl -o "$zip" "https://gethstore.blob.core.windows.net/builds/$zip" - unzip "$zip" - mv -f "$GETH_ARCHIVE_NAME/geth.exe" ./ - rm -rf "$GETH_ARCHIVE_NAME" "$zip" - ;; -esac - -geth version - -echo "Installing Solc" -cargo install --locked svm-rs -# install only if it doesn't exist already -if command -v solc; then - if [ -z "$(solc --version | grep "$SOLC_VERSION" || true)" ]; then - svm install "$SOLC_VERSION" - fi - svm use "$SOLC_VERSION" +if [ "$PLATFORM" != "linux" ] && [ "$PLATFORM" != "darwin" ]; then + EXT=".exe" fi -solc --version +main() { + mkdir -p "$BIN_DIR" + cd "$BIN_DIR" + export PATH="$BIN_DIR:$PATH" + if [ "$GITHUB_PATH" ]; then + echo "$BIN_DIR" >> "$GITHUB_PATH" + fi -which geth -which solc + install_geth & + install_solc & + wait + + echo "Installed Geth:" + geth version + echo "" + echo "Installed Solc:" + solc --version +} + +install_geth() { + case "$PLATFORM" in + linux|darwin) + GETH_ARCHIVE_NAME="geth-$PLATFORM-amd64-$GETH_BUILD" + curl "https://gethstore.blob.core.windows.net/builds/$GETH_ARCHIVE_NAME.tar.gz" | tar -xzvf - + mv -f "$GETH_ARCHIVE_NAME/geth" ./ + rm -rf "$GETH_ARCHIVE_NAME" + chmod +x geth + ;; + *) + GETH_ARCHIVE_NAME="geth-windows-amd64-$GETH_BUILD" + zip="$GETH_ARCHIVE_NAME.zip" + curl -o "$zip" "https://gethstore.blob.core.windows.net/builds/$zip" + unzip "$zip" + mv -f "$GETH_ARCHIVE_NAME/geth.exe" ./ + rm -rf "$GETH_ARCHIVE_NAME" "$zip" + ;; + esac +} + +install_solc() { + case "$PLATFORM" in + linux) SOLC_NAME="solc-static-linux";; + darwin) SOLC_NAME="solc-macos";; + *) SOLC_NAME="solc-windows.exe";; + esac + wget -q "https://github.com/ethereum/solidity/releases/download/v$SOLC_VERSION/$SOLC_NAME" + mv -f "$SOLC_NAME" "solc$EXT" + chmod +x "solc$EXT" +} + +main