Changed a file name, and added copyright #422
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 Actions for PIVX | |
on: [push, pull_request] | |
jobs: | |
lint: | |
env: | |
SHELLCHECK_VERSION: v0.7.1 | |
LC_ALL: C | |
runs-on: ubuntu-18.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.6 | |
- name: Install Dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install codespell==1.13.0 | |
pip install flake8==3.8.3 | |
pip install vulture==0.29 | |
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/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-18.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: 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++ | |
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: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
run: echo "timestamp=$(date +%Y-%m-%dT%H:%M:%S%z)" >> $GITHUB_OUTPUT | |
- name: ccache cache files | |
uses: actions/cache@v3 | |
with: | |
path: .ccache | |
key: cmake-${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} | |
restore-keys: | | |
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_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-18.04 | |
host: arm-linux-gnueabihf | |
apt_get: python3 g++-arm-linux-gnueabihf | |
- name: AARCH64 | |
os: ubuntu-18.04 | |
host: aarch64-linux-gnu | |
apt_get: python3 g++-aarch64-linux-gnu | |
- name: Win64 | |
os: ubuntu-18.04 | |
host: x86_64-w64-mingw32 | |
apt_get: python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 | |
- name: 32-bit + dash | |
os: ubuntu-18.04 | |
host: i686-pc-linux-gnu | |
apt_get: g++-multilib python3-zmq | |
- name: x86_64 Linux | |
os: ubuntu-18.04 | |
host: x86_64-unknown-linux-gnu | |
apt_get: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libqrencode-dev libdbus-1-dev libharfbuzz-dev | |
dep_opts: NO_QT=1 NO_UPNP=1 NO_NATPMP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1 | |
- name: macOS 10.12 | |
os: ubuntu-18.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: Prepare Depends timestamp | |
id: depends_cache_timestamp | |
run: echo "timestamp=$(date +%Y-%m-%dT%H:%M:%S%z)" >> $GITHUB_OUTPUT | |
- 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 }}-${{ steps.depends_cache_timestamp.outputs.timestamp }} | |
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_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-18.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-18.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-18.04 | |
host: x86_64-w64-mingw32 | |
apt_get: python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 | |
unit_tests: false | |
functional_tests: false | |
goal: deploy | |
BITCOIN_CONFIG: "--with-gui=auto --enable-reduce-exports --disable-online-rust" | |
- name: x86_64 Linux [GOAL:install] [bionic] | |
id: Linux-x86_64 | |
os: ubuntu-18.04 | |
host: x86_64-unknown-linux-gnu | |
apt_get: python3-zmq qtbase5-dev qttools5-dev-tools libqt5svg5-dev libqt5charts5-dev libqrencode-dev libdbus-1-dev libharfbuzz-dev | |
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] [bionic] [no GUI no unit tests - only functional tests on legacy pre-HD wallets] | |
id: Linux-x86_64-nogui | |
os: ubuntu-18.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: x86_64 Linux [GOAL:install] [bionic] [no depends only system libs] | |
id: Linux-x86_64-nodepends | |
os: ubuntu-18.04 | |
host: x86_64-unknown-linux-gnu | |
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 | |
no_depends: 1 | |
goal: install | |
BITCOIN_CONFIG: "--enable-zmq --with-incompatible-bdb --with-gui=qt5 CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER'" | |
- name: macOS 10.12 [GOAL:deploy] [no functional tests] | |
id: macOS10.12 | |
os: ubuntu-18.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 | |
goal: deploy | |
BITCOIN_CONFIG: "--enable-gui --enable-reduce-exports --enable-werror --disable-online-rust" | |
- name: macOS 11 [GOAL:deploy] [native macOS using syslibs] | |
id: macOS11 | |
os: macos-11 | |
host: x86_64-apple-darwin20.6.0 | |
brew_install: autoconf automake ccache berkeley-db4 libtool boost miniupnpc pkg-config python@3.8 qt5 zmq libevent qrencode gmp libsodium rust librsvg | |
unit_tests: true | |
functional_tests: true | |
no_depends: 1 | |
goal: deploy | |
cc: clang | |
cxx: clang++ | |
BITCOIN_CONFIG: "--enable-zmq --enable-gui --enable-reduce-exports --enable-werror" | |
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: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
run: echo "timestamp=$(date +%Y-%m-%dT%H:%M:%S%z)" >> $GITHUB_OUTPUT | |
- name: ccache cache files | |
uses: actions/cache@v3 | |
with: | |
path: | | |
.ccache | |
.pivx-params | |
key: ${{ matrix.config.id }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} | |
restore-keys: | | |
${{ 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 | |
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 |