2016-02-09 23:17:09 +01:00
sudo : required
2016-04-20 22:36:52 +02:00
dist : trusty
2014-08-20 19:00:00 +02:00
os : linux
2016-05-17 23:54:41 +02:00
language : generic
cache :
directories :
- depends/built
- depends/sdk-sources
- $HOME/.ccache
2014-08-20 19:00:00 +02:00
env :
global :
- MAKEJOBS=-j3
- RUN_TESTS=false
2016-02-01 16:32:51 +01:00
- CHECK_DOC=0
2015-03-05 17:49:06 +01:00
- BOOST_TEST_RANDOM=1$TRAVIS_BUILD_ID
2014-08-20 19:00:00 +02:00
- CCACHE_SIZE=100M
- CCACHE_TEMPDIR=/tmp/.ccache-temp
- CCACHE_COMPRESS=1
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
2016-06-20 14:57:39 +02:00
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
2015-04-28 22:51:46 +02:00
- PYTHON_DEBUG=1
2015-05-04 17:05:25 +02:00
- WINEDEBUG=fixme-all
2016-05-17 23:54:41 +02:00
matrix :
# ARM
- 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"
# Win32
2016-08-17 21:40:20 +02:00
- 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"
2016-05-17 23:54:41 +02:00
# 32-bit + dash
2016-08-17 21:40:20 +02:00
- 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"
2016-05-17 23:54:41 +02:00
# Win64
2016-08-17 21:40:20 +02:00
- 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"
2016-05-17 23:54:41 +02:00
# bitcoind
2016-08-17 21:40:20 +02:00
- HOST=x86_64-unknown-linux-gnu PACKAGES="bc python3-zmq" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports CPPFLAGS=-DDEBUG_LOCKORDER"
2016-05-17 23:54:41 +02:00
# No wallet
2017-03-15 01:46:41 +01:00
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3 xvfb" DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
2016-05-17 23:54:41 +02:00
# Cross-Mac
2016-09-22 13:07:11 +02:00
- 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"
2016-05-17 23:54:41 +02:00
2016-04-20 22:36:52 +02:00
before_install :
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
2014-08-20 19:00:00 +02:00
install :
2015-09-02 17:39:23 +02:00
- if [ -n "$PPA" ]; then travis_retry sudo add-apt-repository "$PPA" -y; fi
2016-04-20 22:36:52 +02:00
- if [ -n "$DPKG_ADD_ARCH" ]; then sudo dpkg --add-architecture "$DPKG_ADD_ARCH" ; fi
2014-08-20 19:00:00 +02:00
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
2014-11-13 00:35:18 +01:00
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES; fi
2014-08-20 19:00:00 +02:00
before_script :
- unset CC; unset CXX
2016-02-01 17:57:45 +01:00
- if [ "$CHECK_DOC" = 1 ]; then contrib/devtools/check-doc.py; fi
2014-09-03 20:14:01 +02:00
- mkdir -p depends/SDKs depends/sdk-sources
2016-02-09 23:15:25 +01:00
- 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
2014-09-03 20:14:01 +02:00
- 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
travis: attempt to fix unlikely build issue
This is a long chain of errors, and there are likely other changes that could
be made to cope in other places along that chain.
If depends don't build successfully, don't bother trying again for the sake of
better logging. That's likely to hurt more than help. In this case, qt build
failed, and on the second attempt, it appeared to be successful. However, due
to a bad object from an internal gcc error on the first build, the resulting
lib was unusable. This caused bitcoin-qt to not be built, and tests and
packaging which expected bitcoin-qt to be there failed.
The root cause:
Mingw is especially crashy when using -jX, likely compounded by low-memory
environments. I've seen multiple problems with this combo in Gitian as well.
In this case:
i686-w64-mingw32-g++: internal compiler error: Killed (program cc1plus)
...
make[3]: *** [.obj/release/qdrawhelper.o] Error 4
The workaround:
Bump Travis down to using -j2 by default. Additionaly, enable --with-gui for
the windows builds. This will cause configure to fail if qt is not working
while also testing the config flag.
Other failures which may be worth revisiting separately:
- If a depends package fails, maybe remove the workdir so that it doesn't taint
subsequent runs
- See if there's anything repeatable about the ICE when building qt
2014-11-12 23:35:14 +01:00
- make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS
2017-03-15 01:46:41 +01:00
# Start xvfb if needed, as documented at https://docs.travis-ci.com/user/gui-and-headless-browsers/#Using-xvfb-to-Run-Tests-That-Require-a-GUI
- if [ "$RUN_TESTS" = "true" -a "${DEP_OPTS#*NO_QT=1}" = "$DEP_OPTS" ]; then export DISPLAY=:99.0; /sbin/start-stop-daemon --start --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac; fi
2014-08-20 19:00:00 +02:00
script :
2017-03-07 17:57:23 +01:00
- 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
2017-02-28 14:07:00 +01:00
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then git fetch --unshallow; fi
- if [ "$CHECK_DOC" = 1 -a "$TRAVIS_REPO_SLUG" = "bitcoin/bitcoin" -a "$TRAVIS_PULL_REQUEST" = "false" ]; then contrib/verify-commits/verify-commits.sh; fi
2016-04-03 14:39:48 +02:00
- export TRAVIS_COMMIT_LOG=`git log --format=fuller -1`
2014-10-03 23:34:34 +02:00
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
2014-08-20 19:00:00 +02:00
- OUTDIR=$BASE_OUTDIR/$TRAVIS_PULL_REQUEST/$TRAVIS_JOB_NUMBER-$HOST
- BITCOIN_CONFIG_ALL="--disable-dependency-tracking --prefix=$TRAVIS_BUILD_DIR/depends/$HOST --bindir=$OUTDIR/bin --libdir=$OUTDIR/lib"
- depends/$HOST/native/bin/ccache --max-size=$CCACHE_SIZE
2014-10-03 23:34:34 +02:00
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
2016-06-02 01:24:29 +02:00
- mkdir build && cd build
2016-12-21 13:55:56 +01:00
- ../configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- make distdir VERSION=$HOST
- cd bitcoin-$HOST
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
2014-08-20 19:00:00 +02:00
- make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false )
2014-09-01 22:12:16 +02:00
- export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib
2016-05-17 23:54:41 +02:00
- if [ "$RUN_TESTS" = "true" ]; then make $MAKEJOBS check VERBOSE=1; fi
2017-03-21 21:05:42 +01:00
- if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then extended="--extended --exclude pruning"; fi
- if [ "$RUN_TESTS" = "true" ]; then test/functional/test_runner.py --coverage ${extended}; fi
2014-08-20 19:00:00 +02:00
after_script :
2016-04-05 12:49:53 +02:00
- echo $TRAVIS_COMMIT_RANGE
2016-04-03 14:39:48 +02:00
- echo $TRAVIS_COMMIT_LOG