Skip to content

Shield Staking

Shield Staking #3314

Workflow file for this run

name: CI Actions for PIVX
on: [push, pull_request]
jobs:
lint:
env:
SHELLCHECK_VERSION: v0.7.1
LC_ALL: C
runs-on: ubuntu-20.04
defaults:
run:
shell: bash
steps:
- name: Checkout Repo
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Initialize Python
uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install codespell==2.2.5
pip install flake8==5.0.4
pip install mypy==1.4.1
pip install vulture==2.6
pip install yq
curl -sL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/
- name: Set TRAVIS_BRANCH workaround env variable
if: github.event_name == 'pull_request'
run: echo "TRAVIS_BRANCH=${{ github.base_ref }}" >> $GITHUB_ENV
- name: Lint
run: |
export PATH="/tmp/shellcheck-${SHELLCHECK_VERSION}:${PATH}"
echo $PATH
git checkout -qf -B master refs/remotes/origin/master
git checkout -qf $GITHUB_SHA
test/lint/git-subtree-check.sh src/secp256k1
test/lint/git-subtree-check.sh src/univalue
test/lint/git-subtree-check.sh src/leveldb
test/lint/git-subtree-check.sh src/crc32c
test/lint/git-subtree-check.sh src/chiabls
test/lint/git-subtree-check.sh src/immer
test/lint/check-doc.py
test/lint/logprint-scanner.py
test/lint/lint-all.sh
if [ "${{ github.event_name }}" = "pull_request" ]; then
COMMIT_RANGE="${{ github.base_ref }}..HEAD"
test/lint/commit-script-check.sh $COMMIT_RANGE
fi
cmake:
name: CMake-${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
needs: lint
continue-on-error: true
env:
APT_BASE: ccache
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_SIZE: 500M
CCACHE_COMPRESS: 1
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
config:
- name: Linux
os: ubuntu-20.04
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
cc: gcc
cxx: g++
- name: Linux-latest
os: ubuntu-latest
packages: python3-zmq qttools5-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
cc: gcc
cxx: g++
- name: macOS
os: macos-11
packages: llvm@13 python3 autoconf automake berkeley-db@4 libtool boost miniupnpc libnatpmp pkg-config qt5 zmq libevent qrencode gmp libsodium rust
cc: $(brew --prefix llvm@13)/bin/clang
cxx: $(brew --prefix llvm@13)/bin/clang++
- name: macOS-latest
os: macos-latest
packages: llvm@13 python3 autoconf automake berkeley-db@4 libtool boost miniupnpc libnatpmp pkg-config qt5 zmq libevent qrencode gmp libsodium rust
cc: $(brew --prefix llvm@13)/bin/clang
cxx: $(brew --prefix llvm@13)/bin/clang++
steps:
- name: Get Source
uses: actions/checkout@v3
- name: Setup Environment
run: |
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
sudo apt-add-repository "ppa:ondrej/php" -y
sudo apt-get --yes update
sudo apt-get install --no-install-recommends --no-upgrade -qq "$APT_BASE" ${{ matrix.config.packages }}
fi
if [[ ${{ matrix.config.os }} = macos* ]]; then
brew install "$APT_BASE" ${{ matrix.config.packages }}
fi
- name: ccache cache files
uses: actions/cache@v3
with:
path: .ccache
key: ${{ runner.os }}-cmake-${{ matrix.config.name }}-ccache
restore-keys: ${{ runner.os }}-cmake-${{ matrix.config.name }}-ccache
- name: build
run: |
CC=${{ matrix.config.cc }}
CXX=${{ matrix.config.cxx }}
if [[ ${{ matrix.config.os }} = macos* ]]; then
export CPPFLAGS="-I/usr/local/Cellar/gmp/6.2.1/include"
export LDFLAGS="-L/usr/local/Cellar/gmp/6.2.1/lib"
fi
export CC
export CXX
mkdir -p ${{ github.workspace }}/cmake-build-debug && cd ${{ github.workspace }}/cmake-build-debug
cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" ${{ github.workspace }}
cmake --build ${{ github.workspace }}/cmake-build-debug --target all -- -j 2
build_native_wallet:
name: Native-${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
needs: lint
env:
APT_BASE: ccache
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_SIZE: 500M
CCACHE_COMPRESS: 1
PARAMS_DIR: ${{ github.workspace }}/.pivx-params
WINEDEBUG: fixme-all
BOOST_TEST_RANDOM: 1 # random seed based on the current time
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
config:
- name: x64-Linux
id: Linux-x86_64-nodepends
os: ubuntu-20.04
apt_get: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
unit_tests: true
functional_tests: true
goal: install
BITCOIN_CONFIG: "--enable-zmq --enable-debug --with-incompatible-bdb --with-gui=qt5 CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER'"
- name: x64-Linux-latest
id: Linux-x86_64-nodepends-latest
os: ubuntu-latest
apt_get: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libqrencode-dev libgmp-dev libsodium-dev cargo
unit_tests: true
functional_tests: true
goal: install
BITCOIN_CONFIG: "--enable-zmq --enable-debug --with-incompatible-bdb --with-gui=qt5 CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER'"
- name: x64-macOS
id: macOS-nodepends
os: macos-11
brew_install: autoconf automake ccache berkeley-db@4 libtool boost miniupnpc libnatpmp pkg-config python@3.8 qt5 zmq libevent qrencode gmp libsodium rust librsvg
unit_tests: true
functional_tests: true
goal: deploy
cc: clang
cxx: clang++
BITCOIN_CONFIG: "--enable-zmq --enable-gui --enable-reduce-exports --enable-werror --enable-debug"
- name: x64-macOS-latest
id: macOS-nodepends-latest
os: macos-latest
brew_install: autoconf automake ccache berkeley-db@4 libtool boost miniupnpc libnatpmp pkg-config python@3.8 qt5 zmq libevent qrencode gmp libsodium rust librsvg
unit_tests: true
functional_tests: true
goal: deploy
cc: clang
cxx: clang++
BITCOIN_CONFIG: "--enable-zmq --enable-gui --enable-reduce-exports --enable-werror --enable-debug"
steps:
- name: Get Source
uses: actions/checkout@v3
- name: Setup Environment
run: |
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
sudo apt-add-repository "ppa:ondrej/php" -y
sudo apt-get --yes update
sudo apt-get install --no-install-recommends --no-upgrade -qq "$APT_BASE" ${{ matrix.config.apt_get }}
fi
if [[ ${{ matrix.config.os }} = macos* ]]; then
brew install ${{ matrix.config.brew_install }}
pip3.8 install ds_store mac_alias
fi
- name: ccache cache files
uses: actions/cache@v3
with:
path: |
.ccache
.pivx-params
key: ${{ runner.os }}-${{ matrix.config.id }}-native-ccache
restore-keys: ${{ runner.os }}-${{ matrix.config.id }}-native-ccache
- name: Build Syslib Wallet
run: |
export LC_ALL=C.UTF-8
echo $CCACHE_DIR
echo $PARAMS_DIR
PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
# Add llvm-symbolizer directory to PATH. Needed to get symbolized stack traces from the sanitizers.
PATH=$PATH:/usr/lib/llvm-6.0/bin/
export PATH
if [[ ${{ matrix.config.os }} = macos* ]]; then
CC=${{ matrix.config.cc }}
CXX=${{ matrix.config.cxx }}
export CC
export CXX
fi
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
OUTDIR_PATH="$GITHUB_WORKSPACE/$GITHUB_RUN_NUMBER"
BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$GITHUB_WORKSPACE --bindir=$OUTDIR_PATH/bin --libdir=$OUTDIR_PATH/lib"
fi
if [ "${{ matrix.config.unit_tests }}" = "true" ] || [ "${{ matrix.config.functional_tests }}" = "true" ]; then
mkdir -p $PARAMS_DIR
PARAMS_FLAGS="--with-params-dir=$PARAMS_DIR"
fi
echo ::group::Autogen
./autogen.sh
echo ::endgroup::
echo ::group::Configure
./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL ${{ matrix.config.BITCOIN_CONFIG }} $PARAMS_FLAGS || ( cat config.log && false)
echo ::endgroup
echo ::group::Build
make -j2 ${{ matrix.config.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.config.goal }} V=1 ; false )
echo ::endgroup::
if [ "${{ matrix.config.unit_tests }}" = "true" ] || [ "${{ matrix.config.functional_tests }}" = "true" ]; then
echo ::group::Params
./params/install-params.sh $PARAMS_DIR
echo ::endgroup::
fi
if [ "${{ matrix.config.unit_tests }}" = "true" ]; then
echo ::group::Unit-Tests
make -j2 check VERBOSE=1
echo ::endgroup::
fi
if [ "${{ matrix.config.functional_tests }}" = "true" ]; then
echo ::group::Functional-Tests
test/functional/test_runner.py --combinedlogslen=4000 ${{ matrix.config.test_runner_extra }}
echo ::endgroup::
fi
build_depends:
name: Depends-${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
needs: lint
env:
APT_BASE: ccache
SDK_URL: https://bitcoincore.org/depends-sources/sdks
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
config:
- name: ARM 32-bit
os: ubuntu-20.04
host: arm-linux-gnueabihf
apt_get: python3 g++-arm-linux-gnueabihf
- name: AARCH64
os: ubuntu-20.04
host: aarch64-linux-gnu
apt_get: python3 g++-aarch64-linux-gnu
- name: Win64
os: ubuntu-20.04
host: x86_64-w64-mingw32
apt_get: python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64
- name: 32-bit + dash
os: ubuntu-20.04
host: i686-pc-linux-gnu
apt_get: g++-multilib python3-zmq
- name: x86_64 Linux
os: ubuntu-20.04
host: x86_64-unknown-linux-gnu
apt_get: python3-zmq
dep_opts: DEBUG=1
- name: macOS 10.12
os: ubuntu-20.04
host: x86_64-apple-darwin16
apt_get: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python3-dev python3-setuptools
XCODE_VERSION: 11.3.1
XCODE_BUILD_ID: 11C505
steps:
- name: Get Source
uses: actions/checkout@v3
- name: Setup Environment
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends --no-upgrade -qq "$APT_BASE" ${{ matrix.config.apt_get }}
- name: depends cache files
uses: actions/cache@v3
with:
path: |
depends/built
depends/sdk-sources
depends/${{ matrix.config.host }}
key: ${{ runner.os }}-depends-${{ matrix.config.host }}
restore-keys: ${{ runner.os }}-depends-${{ matrix.config.host }}
- name: Build Depends
run: |
export LC_ALL=C.UTF-8
PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
# Add llvm-symbolizer directory to PATH. Needed to get symbolized stack traces from the sanitizers.
PATH=$PATH:/usr/lib/llvm-6.0/bin/
export PATH
mkdir -p depends/SDKs depends/sdk-sources
OSX_SDK_BASENAME="Xcode-${{ matrix.config.XCODE_VERSION }}-${{ matrix.config.XCODE_BUILD_ID }}-extracted-SDK-with-libcxx-headers.tar.gz"
OSX_SDK_PATH="depends/sdk-sources/${OSX_SDK_BASENAME}"
if [ -n "${{ matrix.config.XCODE_VERSION }}" ] && [ ! -f "$OSX_SDK_PATH" ]; then
curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
fi
if [ -n "${{ matrix.config.XCODE_VERSION }}" ] && [ -f "$OSX_SDK_PATH" ]; then
tar -C "depends/SDKs" -xf "$OSX_SDK_PATH"
fi
if [[ ${{ matrix.config.host }} = *-mingw32 ]]; then
BIN=$(which ${{ matrix.config.host }}-g++-posix)
sudo update-alternatives --set ${{ matrix.config.host }}-g++ $BIN
fi
if [ -z "${{ matrix.config.no_depends }}" ]; then
make -j2 -C depends HOST=${{ matrix.config.host }} ${{ matrix.config.dep_opts }}
fi
build_depends_wallet:
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
needs: [lint, build_depends]
env:
APT_BASE: ccache
CCACHE_DIR: ${{ github.workspace }}/.ccache
CCACHE_SIZE: 500M
CCACHE_COMPRESS: 1
PARAMS_DIR: ${{ github.workspace }}/.pivx-params
WINEDEBUG: fixme-all
BOOST_TEST_RANDOM: 1 # random seed based on the current time
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
config:
- name: ARM 32-bit [GOAL:install] [no unit or functional tests]
id: ARM32
os: ubuntu-20.04
host: arm-linux-gnueabihf
apt_get: python3 g++-arm-linux-gnueabihf
unit_tests: false
functional_tests: false
goal: install
# -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1"
# This could be removed once the ABI change warning does not show up by default
BITCOIN_CONFIG: "--with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --disable-online-rust CXXFLAGS=-Wno-psabi"
- name: AARCH64 [GOAL:install] [no unit or functional tests]
id: ARM64
os: ubuntu-20.04
host: aarch64-linux-gnu
apt_get: python3 g++-aarch64-linux-gnu
unit_tests: false
functional_tests: false
goal: install
BITCOIN_CONFIG: "--with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --disable-online-rust"
- name: Win64 [GOAL:deploy] [no unit or functional tests]
id: Win64
os: ubuntu-20.04
host: x86_64-w64-mingw32
apt_get: python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64
unit_tests: false
functional_tests: false
symbol_check: true
goal: deploy
BITCOIN_CONFIG: "--with-gui=auto --enable-reduce-exports --disable-online-rust"
- name: x86_64 Linux [GOAL:install]
id: Linux-x86_64
os: ubuntu-20.04
host: x86_64-unknown-linux-gnu
apt_get: python3-zmq
unit_tests: true
functional_tests: true
goal: install
test_runner_extra: "--coverage --all --exclude feature_dbcrash"
BITCOIN_CONFIG: "--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --disable-online-rust"
- name: x86_64 Linux [GOAL:install] [no GUI, no unit tests, only functional tests on legacy pre-HD wallets]
id: Linux-x86_64-nogui
os: ubuntu-20.04
host: x86_64-unknown-linux-gnu
apt_get: python3-zmq
unit_tests: false
functional_tests: true
goal: install
test_runner_extra: "--legacywallet"
BITCOIN_CONFIG: "--enable-zmq --with-gui=no --enable-glibc-back-compat --enable-reduce-exports --disable-online-rust"
- name: macOS 10.12 [GOAL:deploy] [no unit or functional tests]
id: macOS10.12
os: ubuntu-20.04
host: x86_64-apple-darwin16
apt_get: cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python3-dev python3-setuptools
XCODE_VERSION: 11.3.1
XCODE_BUILD_ID: 11C505
unit_tests: false
functional_tests: false
symbol_check: true
goal: deploy
BITCOIN_CONFIG: "--enable-gui --enable-reduce-exports --enable-werror --disable-online-rust"
steps:
- name: Get Source
uses: actions/checkout@v3
- name: Setup Environment
run: |
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
sudo apt-add-repository "ppa:ondrej/php" -y
sudo apt-get --yes update
sudo apt-get install --no-install-recommends --no-upgrade -qq "$APT_BASE" ${{ matrix.config.apt_get }}
fi
if [[ ${{ matrix.config.os }} = macos* ]]; then
brew install ${{ matrix.config.brew_install }}
pip3.8 install ds_store mac_alias
fi
- name: depends cache files
if: matrix.config.no_depends != 1
uses: actions/cache@v3
with:
path: |
depends/built
depends/sdk-sources
depends/${{ matrix.config.host }}
key: ${{ runner.os }}-depends-${{ matrix.config.host }}
restore-keys: ${{ runner.os }}-depends-${{ matrix.config.host }}
- name: ccache cache files
uses: actions/cache@v3
with:
path: |
.ccache
.pivx-params
key: ${{ runner.os }}-depbuild-${{ matrix.config.id }}-ccache
restore-keys: ${{ runner.os }}-depbuilt-${{ matrix.config.id }}-ccache
- name: Build Wallet
run: |
export LC_ALL=C.UTF-8
echo $CCACHE_DIR
echo $PARAMS_DIR
PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
# Add llvm-symbolizer directory to PATH. Needed to get symbolized stack traces from the sanitizers.
PATH=$PATH:/usr/lib/llvm-6.0/bin/
export PATH
mkdir -p depends/SDKs depends/sdk-sources
OSX_SDK_BASENAME="Xcode-${{ matrix.config.XCODE_VERSION }}-${{ matrix.config.XCODE_BUILD_ID }}-extracted-SDK-with-libcxx-headers.tar.gz"
OSX_SDK_PATH="depends/sdk-sources/${OSX_SDK_BASENAME}"
if [ -n "${{ matrix.config.XCODE_VERSION }}" ] && [ ! -f "$OSX_SDK_PATH" ]; then
curl --location --fail "${SDK_URL}/${OSX_SDK_BASENAME}" -o "$OSX_SDK_PATH"
fi
if [ -n "${{ matrix.config.XCODE_VERSION }}" ] && [ -f "$OSX_SDK_PATH" ]; then
tar -C "depends/SDKs" -xf "$OSX_SDK_PATH"
fi
if [[ ${{ matrix.config.host }} = *-mingw32 ]]; then
BIN=$(which ${{ matrix.config.host }}-g++-posix)
sudo update-alternatives --set ${{ matrix.config.host }}-g++ $BIN
sudo update-binfmts --import /usr/share/binfmts/wine
fi
if [[ ${{ matrix.config.os }} = macos* ]]; then
CC=${{ matrix.config.cc }}
CXX=${{ matrix.config.cxx }}
export CC
export CXX
fi
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
OUTDIR_PATH="$GITHUB_WORKSPACE/$GITHUB_RUN_NUMBER-${{ matrix.config.host }}"
BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$GITHUB_WORKSPACE/depends/${{ matrix.config.host }} --bindir=$OUTDIR_PATH/bin --libdir=$OUTDIR_PATH/lib"
fi
if [ "${{ matrix.config.unit_tests }}" = "true" ] || [ "${{ matrix.config.functional_tests }}" = "true" ]; then
mkdir -p $PARAMS_DIR
PARAMS_FLAGS="--with-params-dir=$PARAMS_DIR"
fi
echo ::group::Autogen
./autogen.sh
echo ::endgroup::
mkdir build && cd build
echo ::group::Configure
../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL ${{ matrix.config.BITCOIN_CONFIG }} $PARAMS_FLAGS || ( cat config.log && false)
echo ::endgroup::
echo ::group::Distdir
make distdir VERSION=${{ matrix.config.host }}
echo ::endgroup::
cd pivx-${{ matrix.config.host }}
echo ::group::Configure
./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL ${{ matrix.config.BITCOIN_CONFIG }} $PARAMS_FLAGS || ( cat config.log && false)
echo ::endgroup
echo ::group::Build
make -j2 ${{ matrix.config.goal }} || ( echo "Build failure. Verbose build follows." && make ${{ matrix.config.goal }} V=1 ; false )
echo ::endgroup::
if [ "${{ matrix.config.unit_tests }}" = "true" ] || [ "${{ matrix.config.functional_tests }}" = "true" ]; then
echo ::group::Params
./params/install-params.sh $PARAMS_DIR
echo ::endgroup::
fi
echo ::group::Security-Check
make -j2 -C src check-security
echo ::endgroup::
if [ "${{matrix.config.symbol_check }}" = "true" ]; then
echo ::group::Symbol-Check
make -j2 -C src check-symbols
echo ::endgroup::
fi
if [ "${{ matrix.config.unit_tests }}" = "true" ]; then
echo ::group::Unit-Tests
if [[ ${{ matrix.config.os }} = ubuntu* ]]; then
LD_LIBRARY_PATH=$GITHUB_WORKSPACE/depends/"${{ matrix.config.host }}"/lib make -j2 check VERBOSE=1
else
make -j2 check VERBOSE=1
fi
echo ::endgroup::
fi
if [ "${{ matrix.config.functional_tests }}" = "true" ]; then
echo ::group::Functional-Tests
test/functional/test_runner.py --combinedlogslen=4000 ${{ matrix.config.test_runner_extra }}
echo ::endgroup::
fi