@@ -3,80 +3,136 @@ dist: trusty
33os : linux 
44language : minimal 
55cache :
6+   ccache : true 
67  directories :
7-   - depends/built 
8-   - depends/sdk-sources 
9-   - $HOME/.ccache 
8+     - depends/built 
9+     - depends/sdk-sources 
10+     - $HOME/.ccache 
11+ stages :
12+   - lint 
13+   - test 
1014env :
1115  global :
1216    - MAKEJOBS=-j3 
13-     - RUN_TESTS=false 
14-     - CHECK_DOC=0 
17+     - RUN_UNIT_TESTS=true 
18+     - RUN_FUNCTIONAL_TESTS=true 
19+     - RUN_BENCH=false   #  Set to true for any one job that has debug enabled, to quickly check bench is not crashing or hitting assertions
20+     - DOCKER_NAME_TAG=ubuntu:18.04 
1521    - BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID 
1622    - CCACHE_SIZE=100M 
1723    - CCACHE_TEMPDIR=/tmp/.ccache-temp 
1824    - CCACHE_COMPRESS=1 
25+     - CCACHE_DIR=$HOME/.ccache 
1926    - BASE_OUTDIR=$TRAVIS_BUILD_DIR/out 
2027    - SDK_URL=https://bitcoincore.org/depends-sources/sdks 
21-     - PYTHON_DEBUG=1 
2228    - WINEDEBUG=fixme-all 
23-   matrix :
29+     - DOCKER_PACKAGES="build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache" 
30+ before_install :
31+   - set -o errexit; source .travis/test_03_before_install.sh 
32+ install :
33+   - set -o errexit; source .travis/test_04_install.sh 
34+ before_script :
35+   - set -o errexit; source .travis/test_05_before_script.sh 
36+ script :
37+   - set -o errexit; source .travis/test_06_script.sh 
38+ after_script :
39+   - echo $TRAVIS_COMMIT_RANGE 
40+   - echo $TRAVIS_COMMIT_LOG 
41+ jobs :
42+   include :
43+ #  lint stage
44+     - stage : lint 
45+       env :
46+       sudo : false 
47+       cache : false 
48+       language : python 
49+       python : ' 3.6' 
50+       install :
51+         - set -o errexit; source .travis/lint_04_install.sh 
52+       before_script :
53+         - set -o errexit; source .travis/lint_05_before_script.sh 
54+       script :
55+         - set -o errexit; source .travis/lint_06_script.sh 
2456#  ARM
25-     - HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" CHECK_DOC=1 GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" 
57+     - stage : test 
58+       env : >- 
59+         HOST=arm-linux-gnueabihf 
60+         PACKAGES="g++-arm-linux-gnueabihf" 
61+         DEP_OPTS="NO_QT=1" 
62+         RUN_UNIT_TESTS=false 
63+         RUN_FUNCTIONAL_TESTS=false 
64+         GOAL="install" 
65+         # -Wno-psabi is to disable ABI warnings: "note: parameter passing for argument of type ... changed in GCC 7.1" 
66+         # This could be removed once the ABI change warning does not show up by default 
67+         BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports CXXFLAGS=-Wno-psabi" 
2668#  Win32
27-     - HOST=i686-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-i686 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" 
28- #  32-bit + dash
29-     - HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc python3-zmq" DEP_OPTS="NO_QT=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" 
69+     - stage : test 
70+       env : >- 
71+         HOST=i686-w64-mingw32 
72+         DPKG_ADD_ARCH="i386" 
73+         DEP_OPTS="NO_QT=1" 
74+         PACKAGES="python3 nsis g++-mingw-w64-i686 wine-binfmt wine32" 
75+         GOAL="install" 
76+         BITCOIN_CONFIG="--enable-reduce-exports" 
3077#  Win64
31-     - HOST=x86_64-w64-mingw32 DPKG_ADD_ARCH="i386" DEP_OPTS="NO_QT=1" PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine1.6 bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-reduce-exports" 
78+     - stage : test 
79+       env : >- 
80+         HOST=x86_64-w64-mingw32 
81+         DEP_OPTS="NO_QT=1" 
82+         PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64" 
83+         GOAL="install" 
84+         BITCOIN_CONFIG="--enable-reduce-exports" 
85+ #  32-bit + dash
86+     - stage : test 
87+       env : >- 
88+         HOST=i686-pc-linux-gnu 
89+         PACKAGES="g++-multilib python3-zmq" 
90+         DEP_OPTS="NO_QT=1" 
91+         GOAL="install" 
92+         BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" 
93+         CONFIG_SHELL="/bin/dash" 
3294#  x86_64 Linux (uses qt5 dev package instead of depends Qt to speed up build and avoid timeout)
33-     - HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER" 
95+     - stage : test 
96+       env : >- 
97+         HOST=x86_64-unknown-linux-gnu 
98+         PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev" 
99+         DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1" 
100+         GOAL="install" 
101+         BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\"" 
102+ #  x86_64 Linux (no depends, only system libs)
103+     - stage : test 
104+       env : >- 
105+         HOST=x86_64-unknown-linux-gnu 
106+         PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-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 libprotobuf-dev protobuf-compiler libqrencode-dev" 
107+         NO_DEPENDS=1 
108+         GOAL="install" 
109+         BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER" 
110+ #  x86_64 Linux (sanitizers)
111+     - stage : test 
112+       env : >- 
113+         HOST=x86_64-unknown-linux-gnu 
114+         PACKAGES="clang python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-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 libprotobuf-dev protobuf-compiler libqrencode-dev" 
115+         NO_DEPENDS=1 
116+         RUN_BENCH=true 
117+         RUN_FUNCTIONAL_TESTS=false # Disabled for now, can be combined with the other x86_64 linux NO_DEPENDS job when functional tests pass the sanitizers 
118+         GOAL="install" 
119+         BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER --with-sanitizers=undefined CC=clang CXX=clang++" 
34120#  x86_64 Linux, No wallet
35-     - HOST=x86_64-unknown-linux-gnu PACKAGES="python3" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" 
121+     - stage : test 
122+       env : >- 
123+         HOST=x86_64-unknown-linux-gnu 
124+         PACKAGES="python3" 
125+         DEP_OPTS="NO_WALLET=1" 
126+         GOAL="install" 
127+         BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" 
36128#  Cross-Mac
37-     - HOST=x86_64-apple-darwin11 PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" OSX_SDK=10.11 GOAL="deploy" 
129+     - stage : test 
130+       env : >- 
131+         HOST=x86_64-apple-darwin14 
132+         PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools python-dev python3-setuptools-git" 
133+         OSX_SDK=10.11 
134+         RUN_UNIT_TESTS=false 
135+         RUN_FUNCTIONAL_TESTS=false 
136+         GOAL="all deploy" 
137+         BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --enable-werror" 
38138
39- before_install :
40-     - export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g") 
41- install :
42-     - if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi 
43-     - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi 
44-     - if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi 
45- before_script :
46-     - if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then contrib/devtools/commit-script-check.sh $TRAVIS_COMMIT_RANGE; fi 
47-     - unset CC; unset CXX 
48-     - if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi 
49-     - mkdir -p depends/SDKs depends/sdk-sources 
50-     - if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then curl --location --fail $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -o depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi 
51-     - if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi 
52-     - make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS 
53- script :
54-     - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then while read LINE; do travis_retry gpg --keyserver hkp://subset.pool.sks-keyservers.net --recv-keys $LINE; done < contrib/verify-commits/trusted-keys; fi 
55-     - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then git fetch --unshallow; fi 
56-     - if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi 
57-     - export TRAVIS_COMMIT_LOG=`git log --format=fuller -1` 
58-     - if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi 
59-     - OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST 
60-     - BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib" 
61-     - depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE 
62-     - test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh 
63-     - mkdir build && cd build 
64-     - ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) 
65-     - make distdir VERSION=$HOST 
66-     - cd bitzeny-$HOST 
67-     - ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false) 
68-     - make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false ) 
69-     - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib 
70-     - export RUN_TESTS=false  #  TODO: remove this line if broken tests are fixed
71-     - if [ "$RUN_TESTS" = "true" ]; then travis_wait 30 make $MAKEJOBS check VERBOSE=1; fi 
72-     - if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude pruning,dbcrash"; fi 
73-     - if [ "$RUN_TESTS" = "true" ]; then test/functional/test_runner.py --coverage --quiet ${extended}; fi 
74- after_success :
75-     - AUTHOR=`git log -1 | grep 'Author:' | awk '{$1="";$NF="";print $0}' | sed -e 's/^[ ]*//g'` 
76-     - test -n $DISCORD_WEBHOOK_URL && echo '{"embeds":[{"title":"['$TRAVIS_JOB_NUMBER':'$HOST'] Build '$TRAVIS_BUILD_NUMBER' succeeded","type":"rich","description":"[`'${TRAVIS_COMMIT:0:7}'`](https://github.com/'$TRAVIS_REPO_SLUG'/commit/'$TRAVIS_COMMIT') '$TRAVIS_COMMIT_MESSAGE' - '$AUTHOR'","url":"https://travis-ci.org/'$TRAVIS_REPO_SLUG'/builds/'$TRAVIS_BUILD_ID'","timestamp":"'`date --utc +%FT%TZ`'","color":2932302,"footer":{"text":"Travis CI"}}]}' | curl -A 'Travis CI' -H 'Content-Type:application/json' -d @- $DISCORD_WEBHOOK_URL 
77- after_failure :
78-     - AUTHOR=`git log -1 | grep 'Author:' | awk '{$1="";$NF="";print $0}' | sed -e 's/^[ ]*//g'` 
79-     - test -n $DISCORD_WEBHOOK_URL && echo '{"embeds":[{"title":"['$TRAVIS_JOB_NUMBER':'$HOST'] Build '$TRAVIS_BUILD_NUMBER' failed","type":"rich","description":"[`'${TRAVIS_COMMIT:0:7}'`](https://github.com/'$TRAVIS_REPO_SLUG'/commit/'$TRAVIS_COMMIT') '$TRAVIS_COMMIT_MESSAGE' - '$AUTHOR'","url":"https://travis-ci.org/'$TRAVIS_REPO_SLUG'/builds/'$TRAVIS_BUILD_ID'","timestamp":"'`date --utc +%FT%TZ`'","color":13313073,"footer":{"text":"Travis CI"}}]}' | curl -A 'Travis CI' -H 'Content-Type:application/json' -d @- $DISCORD_WEBHOOK_URL 
80- after_script :
81-     - echo $TRAVIS_COMMIT_RANGE 
82-     - echo $TRAVIS_COMMIT_LOG 
0 commit comments