From 5f15d6f051255b2a915bd70555f9a60b0495c623 Mon Sep 17 00:00:00 2001 From: Elias Rohrer Date: Thu, 25 Apr 2024 14:33:47 +0200 Subject: [PATCH] Move CI downloading `bitcoind`/`electrsd` to dedicated shell script ... allowing it to be sourced locally before running `lightning-transaction-sync` tests. --- ci/ci-tests.sh | 47 ++-------------------------- contrib/download_bitcoind_electrs.sh | 46 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 45 deletions(-) create mode 100755 contrib/download_bitcoind_electrs.sh diff --git a/ci/ci-tests.sh b/ci/ci-tests.sh index b99ae820a..e095b95f2 100755 --- a/ci/ci-tests.sh +++ b/ci/ci-tests.sh @@ -3,6 +3,7 @@ set -eox pipefail RUSTC_MINOR_VERSION=$(rustc --version | awk '{ split($2,a,"."); print a[2] }') HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')" +CONTRIB_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )/../contrib" && pwd ) # Some crates require pinning to meet our MSRV even for our downstream users, # which we do here. @@ -14,50 +15,6 @@ function PIN_RELEASE_DEPS { return 0 # Don't fail the script if our rustc is higher than the last check } -# The tests of `lightning-transaction-sync` require `electrs` and `bitcoind` -# binaries. Here, we download the binaries, validate them, and export their -# location via `ELECTRS_EXE`/`BITCOIND_EXE` which will be used by the -# `electrsd`/`bitcoind` crates in our tests. -function DOWNLOAD_ELECTRS_AND_BITCOIND { - ELECTRS_DL_ENDPOINT="https://github.com/RCasatta/electrsd/releases/download/electrs_releases" - ELECTRS_VERSION="esplora_a33e97e1a1fc63fa9c20a116bb92579bbf43b254" - BITCOIND_DL_ENDPOINT="https://bitcoincore.org/bin/" - BITCOIND_VERSION="25.1" - if [[ "$HOST_PLATFORM" == *linux* ]]; then - ELECTRS_DL_FILE_NAME=electrs_linux_"$ELECTRS_VERSION".zip - ELECTRS_DL_HASH="865e26a96e8df77df01d96f2f569dcf9622fc87a8d99a9b8fe30861a4db9ddf1" - BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-linux-gnu.tar.gz - BITCOIND_DL_HASH="a978c407b497a727f0444156e397b50491ce862d1f906fef9b521415b3611c8b" - elif [[ "$HOST_PLATFORM" == *darwin* ]]; then - ELECTRS_DL_FILE_NAME=electrs_macos_"$ELECTRS_VERSION".zip - ELECTRS_DL_HASH="2d5ff149e8a2482d3658e9b386830dfc40c8fbd7c175ca7cbac58240a9505bcd" - BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-apple-darwin.tar.gz - BITCOIND_DL_HASH="1acfde0ec3128381b83e3e5f54d1c7907871d324549129592144dd12a821eff1" - else - echo -e "\n\nUnsupported platform. Exiting.." - exit 1 - fi - - DL_TMP_DIR=$(mktemp -d) - trap 'rm -rf -- "$DL_TMP_DIR"' EXIT - - pushd "$DL_TMP_DIR" - ELECTRS_DL_URL="$ELECTRS_DL_ENDPOINT"/"$ELECTRS_DL_FILE_NAME" - curl -L -o "$ELECTRS_DL_FILE_NAME" "$ELECTRS_DL_URL" - echo "$ELECTRS_DL_HASH $ELECTRS_DL_FILE_NAME"|shasum -a 256 -c - unzip "$ELECTRS_DL_FILE_NAME" - export ELECTRS_EXE="$DL_TMP_DIR"/electrs - chmod +x "$ELECTRS_EXE" - - BITCOIND_DL_URL="$BITCOIND_DL_ENDPOINT"/bitcoin-core-"$BITCOIND_VERSION"/"$BITCOIND_DL_FILE_NAME" - curl -L -o "$BITCOIND_DL_FILE_NAME" "$BITCOIND_DL_URL" - echo "$BITCOIND_DL_HASH $BITCOIND_DL_FILE_NAME"|shasum -a 256 -c - tar xzf "$BITCOIND_DL_FILE_NAME" - export BITCOIND_EXE="$DL_TMP_DIR"/bitcoin-"$BITCOIND_VERSION"/bin/bitcoind - chmod +x "$BITCOIND_EXE" - popd -} - PIN_RELEASE_DEPS # pin the release dependencies in our main workspace # Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0. @@ -94,7 +51,7 @@ if [[ "$HOST_PLATFORM" != *windows* ]]; then echo -e "\n\nBuilding and testing Transaction Sync Clients with features" pushd lightning-transaction-sync - DOWNLOAD_ELECTRS_AND_BITCOIND + source "$CONTRIB_DIR/download_bitcoind_electrs.sh" cargo test --verbose --color always --features esplora-blocking cargo check --verbose --color always --features esplora-blocking diff --git a/contrib/download_bitcoind_electrs.sh b/contrib/download_bitcoind_electrs.sh new file mode 100755 index 000000000..031323300 --- /dev/null +++ b/contrib/download_bitcoind_electrs.sh @@ -0,0 +1,46 @@ +#!/bin/bash +set -eox pipefail + +# The tests of `lightning-transaction-sync` require `electrs` and `bitcoind` +# binaries. Here, we download the binaries, validate them, and export their +# location via `ELECTRS_EXE`/`BITCOIND_EXE` which will be used by the +# `electrsd`/`bitcoind` crates in our tests. + +HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')" +ELECTRS_DL_ENDPOINT="https://github.com/RCasatta/electrsd/releases/download/electrs_releases" +ELECTRS_VERSION="esplora_a33e97e1a1fc63fa9c20a116bb92579bbf43b254" +BITCOIND_DL_ENDPOINT="https://bitcoincore.org/bin/" +BITCOIND_VERSION="25.1" +if [[ "$HOST_PLATFORM" == *linux* ]]; then + ELECTRS_DL_FILE_NAME=electrs_linux_"$ELECTRS_VERSION".zip + ELECTRS_DL_HASH="865e26a96e8df77df01d96f2f569dcf9622fc87a8d99a9b8fe30861a4db9ddf1" + BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-linux-gnu.tar.gz + BITCOIND_DL_HASH="a978c407b497a727f0444156e397b50491ce862d1f906fef9b521415b3611c8b" +elif [[ "$HOST_PLATFORM" == *darwin* ]]; then + ELECTRS_DL_FILE_NAME=electrs_macos_"$ELECTRS_VERSION".zip + ELECTRS_DL_HASH="2d5ff149e8a2482d3658e9b386830dfc40c8fbd7c175ca7cbac58240a9505bcd" + BITCOIND_DL_FILE_NAME=bitcoin-"$BITCOIND_VERSION"-x86_64-apple-darwin.tar.gz + BITCOIND_DL_HASH="1acfde0ec3128381b83e3e5f54d1c7907871d324549129592144dd12a821eff1" +else + echo "\n\nUnsupported platform: $HOST_PLATFORM Exiting.." + exit 1 +fi + +DL_TMP_DIR=$(mktemp -d) +trap 'rm -rf -- "$DL_TMP_DIR"' EXIT + +pushd "$DL_TMP_DIR" +ELECTRS_DL_URL="$ELECTRS_DL_ENDPOINT"/"$ELECTRS_DL_FILE_NAME" +curl -L -o "$ELECTRS_DL_FILE_NAME" "$ELECTRS_DL_URL" +echo "$ELECTRS_DL_HASH $ELECTRS_DL_FILE_NAME"|shasum -a 256 -c +unzip "$ELECTRS_DL_FILE_NAME" +export ELECTRS_EXE="$DL_TMP_DIR"/electrs +chmod +x "$ELECTRS_EXE" + +BITCOIND_DL_URL="$BITCOIND_DL_ENDPOINT"/bitcoin-core-"$BITCOIND_VERSION"/"$BITCOIND_DL_FILE_NAME" +curl -L -o "$BITCOIND_DL_FILE_NAME" "$BITCOIND_DL_URL" +echo "$BITCOIND_DL_HASH $BITCOIND_DL_FILE_NAME"|shasum -a 256 -c +tar xzf "$BITCOIND_DL_FILE_NAME" +export BITCOIND_EXE="$DL_TMP_DIR"/bitcoin-"$BITCOIND_VERSION"/bin/bitcoind +chmod +x "$BITCOIND_EXE" +popd -- 2.39.5