diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000000000..e9f648b0a37e2e --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,252 @@ +# Copyright (c) 2020 The Wagerr developers +version: 2.1 +jobs: + lint_all: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + parallelism: 4 + environment: + HOST: x86_64-linux-gnu + JOBS: 4 + steps: + - run: + command: | + apt-get -y update + apt-get -y install python-pip + git clone --depth 1 https://github.com/wagerr/wagerr . + source .circleci/lint_04_install.sh + source .ciricleci/lint_05_before_script.sh + # LevelDB + git remote add -f leveldb https://github.com/bitcoin-core/leveldb.git + # secp256k1 + git remote add -f secp256k1 https://github.com/bitcoin-core/secp256k1.git + # ctaes + git remote add -f ctaes https://github.com/bitcoin-core/ctaes + # univalue + git remote add -f univalue https://github.com/jgarzik/univalue + git rm -rf src/leveldb + git rm -rf src/secp256k1 + git rm -rf src/crypto/ctaes + git rm -rf src/univalue + git add . + git config --global user.email "lint@dev.null" + git config --global user.name "Lint Check" + git commit -m "Set up for subtrees" + # leveldb + git subtree add --prefix src/leveldb leveldb bitcoin-fork --squash + # secp256k1 + git subtree add --prefix src/secp256k1 secp256k1 master --squash + # ctaes + git subtree add --prefix src/crypto/ctaes ctaes master --squash + # univalue + git subtree add --prefix src/univalue univalue 9f0b9975925b202ab130714e5422f8dd8bf40ac3 --squash + # snap + source .circleci/lint_06_script.sh + x86_64_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: x86_64-linux-gnu + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 gcc-8 g++-8 libpython3.6-dev python3-distutils + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + update-alternatives --install /usr/bin/${HOST}-gcc ${HOST}-gcc /usr/bin/${HOST}-gcc-8 100 + update-alternatives --install /usr/bin/${HOST}-g++ ${HOST}-g++ /usr/bin/${HOST}-g++-8 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++ + make -j${JOBS} + git clone http://github.com/wagerr/wagerr_hash + cd wagerr_hash + python3 setup.py install + cd - + test/functional/test_runner.py + x86_64_focal: + docker: + - image: circleci/buildpack-deps:focal + user: root + environment: + HOST: x86_64-linux-gnu + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 gcc-8 g++-8 libpython3.9-dev python3-distutils + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + update-alternatives --install /usr/bin/${HOST}-gcc ${HOST}-gcc /usr/bin/${HOST}-gcc-8 100 + update-alternatives --install /usr/bin/${HOST}-g++ ${HOST}-g++ /usr/bin/${HOST}-g++-8 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++ + make -j${JOBS} + i686_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: i686-linux-gnu + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 g++-8-multilib gcc-8-multilib gcc-8 g++-8 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++ + make -j${JOBS} + arm32_bionic: + docker: + - image: ioncoin/gitian:latest + user: root + environment: + HOST: arm-linux-gnueabihf + JOBS: 4 + HOST_LDFLAGS: "-static-libstdc++" + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 gcc-8 g++-8 g++-8-arm-linux-gnueabihf gcc-8-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-8-multilib gcc-8-multilib + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + update-alternatives --install /usr/bin/${HOST}-gcc ${HOST}-gcc /usr/bin/${HOST}-gcc-8 100 + update-alternatives --install /usr/bin/${HOST}-g++ ${HOST}-g++ /usr/bin/${HOST}-g++-8 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends//${HOST} --enable-glibc-back-compat --enable-reduce-exports --disable-ccache --disable-maintainer-mode --disable-dependency-tracking CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" LDFLAGS="${HOST_LDFLAGS}" + make -j${JOBS} + arm64_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: aarch64-linux-gnu + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 gcc-8 g++-8 g++-8-aarch64-linux-gnu gcc-8-aarch64-linux-gnu binutils-aarch64-linux-gnu g++-8-multilib gcc-8-multilib + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 100 + update-alternatives --install /usr/bin/${HOST}-gcc ${HOST}-gcc /usr/bin/${HOST}-gcc-8 100 + update-alternatives --install /usr/bin/${HOST}-g++ ${HOST}-g++ /usr/bin/${HOST}-g++-8 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-glibc-back-compat --enable-reduce-exports + make -j${JOBS} + win32_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: i686-w64-mingw32 + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 mingw-w64 g++-mingw-w64 g++-multilib gcc-multilib + update-alternatives --install /usr/bin/i686-w64-mingw32-gcc i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix 100 + update-alternatives --install /usr/bin/i686-w64-mingw32-g++ i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-reduce-exports + make -j${JOBS} + win64_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: x86_64-w64-mingw32 + JOBS: 4 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 mingw-w64 g++-mingw-w64 g++-multilib gcc-multilib + update-alternatives --install /usr/bin/x86_64-w64-mingw32-gcc x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix 100 + update-alternatives --install /usr/bin/x86_64-w64-mingw32-g++ x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix 100 + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-reduce-exports + make -j${JOBS} + mac_bionic: + docker: + - image: circleci/buildpack-deps:18.04 + user: root + environment: + HOST: x86_64-apple-darwin16 + JOBS: 4 + OSX_SDK: 10.11 + steps: + - checkout + - run: + command: | + git submodule update --init --recursive + apt-get -y update + apt-get -y install pkg-config autoconf libtool automake bsdmainutils ca-certificates python3 cmake libxkbcommon0 librsvg2-bin libtiff-tools imagemagick libcap-dev libz-dev libbz2-dev python3-dev python3-setuptools fonts-tuffy g++-8-multilib gcc-8-multilib + wget https://github.com/gitianuser/MacOSX-SDKs/releases/download/MacOSX10.11.sdk/MacOSX10.11.sdk.tar.xz + mkdir -p `pwd`/depends/SDKs + echo "Extracting Mac SDK" + tar -C `pwd`/depends/SDKs -xJf ./MacOSX10.11.sdk.tar.xz + make -j${JOBS} -C depends HOST=${HOST} + ./autogen.sh + ./configure --host=${HOST} --prefix=`pwd`/depends/${HOST} --enable-reduce-exports --enable-werror --disable-ccache --disable-maintainer-mode --disable-dependency-tracking --disable-bench --disable-gui-tests + + make -j${JOBS} +workflows: + version: 2.1 + FullCheck: + jobs: + - lint_all + - x86_64_bionic: + requires: + - lint_all + - i686_bionic: + requires: + - lint_all + - x86_64_focal: + requires: + - lint_all + - arm32_bionic: + requires: + - lint_all + - arm64_bionic: + requires: + - lint_all + - win32_bionic: + requires: + - lint_all + - win64_bionic: + requires: + - lint_all + - mac_bionic: + requires: + - lint_all \ No newline at end of file diff --git a/.circleci/lint_04_install.sh b/.circleci/lint_04_install.sh new file mode 100755 index 00000000000000..2f7d7ff19f91cb --- /dev/null +++ b/.circleci/lint_04_install.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2018 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C + +pip2 install codespell==1.13.0 +pip2 install flake8==3.5.0 +pip2 install vulture==0.29 + +SHELLCHECK_VERSION=v0.6.0 +curl -s "https://storage.googleapis.com/shellcheck/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | tar --xz -xf - --directory /tmp/ +export PATH="/tmp/shellcheck-${SHELLCHECK_VERSION}:${PATH}" diff --git a/.circleci/lint_05_before_script.sh b/.circleci/lint_05_before_script.sh new file mode 100755 index 00000000000000..28bcbb47f74898 --- /dev/null +++ b/.circleci/lint_05_before_script.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2018 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C + +git fetch --unshallow diff --git a/.circleci/lint_06_script.sh b/.circleci/lint_06_script.sh new file mode 100755 index 00000000000000..066cb041555ed5 --- /dev/null +++ b/.circleci/lint_06_script.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# +# Copyright (c) 2018 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +export LC_ALL=C + +contrib/devtools/git-subtree-check.sh src/leveldb +contrib/devtools/git-subtree-check.sh src/secp256k1 +contrib/devtools/git-subtree-check.sh src/crypto/ctaes +contrib/devtools/git-subtree-check.sh src/univalue +contrib/devtools/lint-whitespace.sh \ No newline at end of file