discv5: fix potential infinite loop in randomNodes #1494
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
target: | |
- os: linux | |
cpu: amd64 | |
- os: linux | |
cpu: i386 | |
- os: macos | |
cpu: amd64 | |
- os: windows | |
cpu: amd64 | |
#- os: windows | |
#cpu: i386 | |
branch: [version-1-6, devel] | |
include: | |
- target: | |
os: linux | |
builder: ubuntu-20.04 | |
shell: bash | |
- target: | |
os: macos | |
builder: macos-11 | |
shell: bash | |
- target: | |
os: windows | |
builder: windows-2019 | |
shell: msys2 {0} | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
name: '${{ matrix.target.os }}-${{ matrix.target.cpu }} (Nim ${{ matrix.branch }})' | |
runs-on: ${{ matrix.builder }} | |
continue-on-error: ${{ matrix.branch == 'devel' }} | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install build dependencies (Linux i386) | |
if: runner.os == 'Linux' && matrix.target.cpu == 'i386' | |
run: | | |
sudo dpkg --add-architecture i386 | |
sudo apt-fast update -qq | |
sudo DEBIAN_FRONTEND='noninteractive' apt-fast install \ | |
--no-install-recommends -yq gcc-multilib g++-multilib \ | |
libz-dev:i386 libbz2-dev:i386 liblz4-dev:i386 libssl-dev:i386 | |
mkdir -p external/bin | |
cat << EOF > external/bin/gcc | |
#!/bin/bash | |
exec $(which gcc) -m32 "\$@" | |
EOF | |
cat << EOF > external/bin/g++ | |
#!/bin/bash | |
exec $(which g++) -m32 "\$@" | |
EOF | |
chmod 755 external/bin/gcc external/bin/g++ | |
echo '${{ github.workspace }}/external/bin' >> $GITHUB_PATH | |
- name: 'Install dependencies (macOS)' | |
if: runner.os == 'macOS' && matrix.branch == 'devel' | |
run: | | |
brew install [email protected] | |
ln -s $(brew --prefix)/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib/ | |
ln -s $(brew --prefix)/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib/ | |
- name: Restore rocksdb from cache (Macos) | |
if: runner.os != 'Windows' | |
id: rocksdb-cache | |
uses: actions/cache@v3 | |
with: | |
path: rocks-db-cache-${{ matrix.target.cpu }} | |
key: 'rocksdb-v1-${{ matrix.target.os }}-${{ matrix.target.cpu }}' | |
- name: Build and install rocksdb (Linux i386) | |
# no librocksdb-dev:i386 | |
if: runner.os == 'Linux' && matrix.target.cpu == 'i386' | |
run: | | |
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_rocksdb.sh | |
bash build_rocksdb.sh rocks-db-cache-${{ matrix.target.cpu }} | |
- name: Install rocksdb (Linux amd64) | |
# mysterious illegal instruction error if we build our own librocksdb | |
if: runner.os == 'Linux' && matrix.target.cpu == 'amd64' | |
run: | | |
sudo apt-get -q update | |
sudo apt-get install -y librocksdb-dev | |
- name: Build and install lmdb (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
LMDBVER="0.9.22" | |
curl -L "https://github.com/LMDB/lmdb/archive/LMDB_$LMDBVER.tar.gz" -o "LMDB_$LMDBVER.tar.gz" | |
tar xzf "LMDB_$LMDBVER.tar.gz" | |
cd "lmdb-LMDB_$LMDBVER/libraries/liblmdb" | |
make -j2 | |
sed -i 's| liblmdb.a||' Makefile | |
sudo make prefix=/usr install | |
- name: Build and install rocksdb (Macos) | |
if: runner.os == 'Macos' | |
run: | | |
HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 brew install ccache | |
echo "/usr/local/opt/ccache/libexec" >> $GITHUB_PATH | |
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_rocksdb.sh | |
bash build_rocksdb.sh rocks-db-cache-${{ matrix.target.cpu }} | |
- name: Build and install lmdb (Macos) | |
if: runner.os == 'Macos' | |
run: | | |
LMDBVER="0.9.22" | |
curl -L "https://github.com/LMDB/lmdb/archive/LMDB_$LMDBVER.tar.gz" -o "LMDB_$LMDBVER.tar.gz" | |
tar xzf "LMDB_$LMDBVER.tar.gz" | |
cd "lmdb-LMDB_$LMDBVER/libraries/liblmdb" | |
make -j2 | |
sudo cp -a liblmdb.so /usr/local/lib/liblmdb.dylib | |
- name: MSYS2 (Windows i386) | |
if: runner.os == 'Windows' && matrix.target.cpu == 'i386' | |
uses: msys2/setup-msys2@v2 | |
with: | |
path-type: inherit | |
msystem: MINGW32 | |
install: >- | |
base-devel | |
git | |
mingw-w64-i686-toolchain | |
- name: MSYS2 (Windows amd64) | |
if: runner.os == 'Windows' && matrix.target.cpu == 'amd64' | |
uses: msys2/setup-msys2@v2 | |
with: | |
path-type: inherit | |
install: >- | |
base-devel | |
git | |
mingw-w64-x86_64-toolchain | |
- name: Restore Nim DLLs dependencies (Windows) from cache | |
if: runner.os == 'Windows' | |
id: windows-dlls-cache | |
uses: actions/cache@v3 | |
with: | |
path: external/dlls-${{ matrix.target.cpu }} | |
key: 'dlls-${{ matrix.target.cpu }}' | |
- name: Install DLLs dependencies (Windows) | |
if: > | |
steps.windows-dlls-cache.outputs.cache-hit != 'true' && | |
runner.os == 'Windows' | |
run: | | |
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then | |
ROCKSDBSUB=x64 | |
SQLITE_URL="https://www.sqlite.org/2018/sqlite-dll-win64-x64-3240000.zip" | |
SQLITE_DLL="sqlite3_64.dll" | |
else | |
ROCKSDBSUB=x86 | |
SQLITE_URL="https://www.sqlite.org/2018/sqlite-dll-win32-x86-3240000.zip" | |
SQLITE_DLL="sqlite3_32.dll" | |
fi | |
DLLPATH=external/dlls-${{ matrix.target.cpu }} | |
mkdir -p external | |
curl -L "https://nim-lang.org/download/windeps.zip" -o external/windeps.zip | |
7z x -y external/windeps.zip -o"$DLLPATH" | |
# ROCKSDB | |
curl -L "https://github.com/status-im/nimbus-deps/releases/download/nimbus-deps/nimbus-deps.zip" -o external/nimbus-deps.zip | |
7z x -y external/nimbus-deps.zip | |
cp "./$ROCKSDBSUB/librocksdb.dll" "$DLLPATH/librocksdb.dll" | |
# SQLITE | |
curl -L "$SQLITE_URL" -o external/sqlite-dll.zip | |
7z x -y external/sqlite-dll.zip | |
cp ./sqlite3.dll "$DLLPATH/$SQLITE_DLL" | |
# LMDB | |
LMDBVER="0.9.22" | |
LMDB_PATH="lmdb-LMDB_$LMDBVER/libraries/liblmdb" | |
curl -L "https://github.com/LMDB/lmdb/archive/LMDB_$LMDBVER.tar.gz" -o "LMDB_$LMDBVER.tar.gz" | |
tar xzf "LMDB_$LMDBVER.tar.gz" | |
cd "$LMDB_PATH" | |
gcc -march=native -O3 -pipe -shared -o lmdb.dll mdb.c midl.c -lntdll | |
cd ../../.. | |
cp "$LMDB_PATH/lmdb.dll" "$DLLPATH/lmdb.dll" | |
- name: Path to cached dependencies (Windows) | |
if: > | |
runner.os == 'Windows' | |
run: | | |
echo '${{ github.workspace }}'"/external/dlls-${{ matrix.target.cpu }}" >> $GITHUB_PATH | |
- name: Derive environment variables | |
run: | | |
if [[ '${{ matrix.target.cpu }}' == 'amd64' ]]; then | |
PLATFORM=x64 | |
else | |
PLATFORM=x86 | |
fi | |
echo "PLATFORM=$PLATFORM" >> $GITHUB_ENV | |
ncpu= | |
MAKE_CMD="make" | |
case '${{ runner.os }}' in | |
'Linux') | |
ncpu=$(nproc) | |
;; | |
'macOS') | |
ncpu=$(sysctl -n hw.ncpu) | |
;; | |
'Windows') | |
ncpu=$NUMBER_OF_PROCESSORS | |
MAKE_CMD="mingw32-make" | |
;; | |
esac | |
[[ -z "$ncpu" || $ncpu -le 0 ]] && ncpu=1 | |
echo "ncpu=$ncpu" >> $GITHUB_ENV | |
echo "MAKE_CMD=${MAKE_CMD}" >> $GITHUB_ENV | |
- name: Build Nim and Nimble | |
run: | | |
curl -O -L -s -S https://raw.githubusercontent.com/status-im/nimbus-build-system/master/scripts/build_nim.sh | |
env MAKE="${MAKE_CMD} -j${ncpu}" ARCH_OVERRIDE=${PLATFORM} NIM_COMMIT=${{ matrix.branch }} \ | |
QUICK_AND_DIRTY_COMPILER=1 QUICK_AND_DIRTY_NIMBLE=1 CC=gcc \ | |
bash build_nim.sh nim csources dist/nimble NimBinaries | |
echo '${{ github.workspace }}/nim/bin' >> $GITHUB_PATH | |
- name: Run tests | |
run: | | |
export PLATFORM="${{ matrix.target.os }}-${{ matrix.target.cpu }}" | |
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib" | |
nim --version | |
nimble --version | |
nimble install -y | |
nimble test | |
nimble build_dcli | |
nimble build_fuzzers |