2014-08-20 19:00:00 +02:00
# errata:
# - A travis bug causes caches to trample eachother when using the same
# compiler key (which we don't use anyway). This is worked around for now by
2014-10-10 05:23:44 +02:00
# replacing the "compilers" with a build name prefixed by the no-op ":"
2015-11-30 13:23:00 +01:00
# command. See: https://github.com/travis-ci/travis-ci/issues/4393
2016-02-09 23:17:09 +01:00
# - sudo/dist/group are set so as to get Blue Box VMs, necessary for [loopback]
# IPv6 support
2016-03-17 01:53:23 +01:00
sudo : false
2016-04-20 22:36:55 +02:00
dist : trusty
2014-08-20 19:00:00 +02:00
os : linux
language : cpp
2016-01-12 12:01:45 +01:00
compiler : gcc
2014-08-20 19:00:00 +02:00
env :
global :
- MAKEJOBS=-j3
- RUN_TESTS=false
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-01-27 13:15:35 +01:00
- SDK_URL=https://dash.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
2014-08-20 19:00:00 +02:00
cache :
apt : true
2016-03-17 01:53:23 +01:00
ccache : true
2014-08-20 19:00:00 +02:00
directories :
2016-03-17 01:53:23 +01:00
- depends/built
- depends/sdk-sources
2014-08-20 19:00:00 +02:00
matrix :
fast_finish : true
include :
2014-10-10 05:23:44 +02:00
- compiler : ": ARM"
2016-03-17 01:53:23 +01:00
env : HOST=arm-linux-gnueabihf DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
addons :
apt :
packages :
- g++-arm-linux-gnueabihf
2014-12-05 10:45:29 +01:00
- compiler : ": Win32"
2016-03-17 01:53:23 +01:00
env : HOST=i686-w64-mingw32 RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" MAKEJOBS="-j2" WINE=true
addons :
apt :
packages :
- nsis
- gcc-mingw-w64-i686
- g++-mingw-w64-i686
- binutils-mingw-w64-i686
- mingw-w64-dev
- wine
- bc
2014-10-10 05:23:44 +02:00
- compiler : ": 32-bit + dash"
2016-03-17 01:53:23 +01:00
env : HOST=i686-pc-linux-gnu RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++" USE_SHELL="/bin/dash" PYZMQ=true
addons :
apt :
packages :
- g++-multilib
- bc
- python-pip
2014-10-10 05:23:44 +02:00
- compiler : ": Win64"
2016-03-17 01:53:23 +01:00
env : HOST=x86_64-w64-mingw32 RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" MAKEJOBS="-j2" WINE=true
addons :
apt :
packages :
- nsis
- gcc-mingw-w64-x86-64
- g++-mingw-w64-x86-64
- binutils-mingw-w64-x86-64
- mingw-w64-dev
- wine
- bc
2016-02-02 16:28:56 +01:00
- compiler : ": dashd"
2016-03-17 01:53:23 +01:00
env : HOST=x86_64-unknown-linux-gnu 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" PYZMQ=true
addons :
apt :
packages :
- bc
- python-pip
2016-02-23 10:37:21 +01:00
# - compiler: ": No wallet"
# env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports"
2014-10-10 05:23:44 +02:00
- compiler : ": Cross-Mac"
2016-03-17 01:53:23 +01:00
env : HOST=x86_64-apple-darwin11 BITCOIN_CONFIG="--enable-reduce-exports" OSX_SDK=10.9 GOAL="deploy"
addons :
apt :
packages :
- cmake
- libcap-dev
- libbz2-dev
2016-01-12 12:01:45 +01:00
exclude :
- compiler : gcc
2016-03-06 20:14:26 +01:00
before_install :
- git clone https://github.com/dashpay/dash_hash
2016-04-20 22:36:55 +02:00
- export PATH=$(echo $PATH | tr ':' "\n" | sed '/\/opt\/python/d' | tr "\n" ":" | sed "s|::|:|g")
2014-08-20 19:00:00 +02:00
install :
2016-03-17 01:53:23 +01:00
- cd dash_hash && python setup.py install --user && cd ..
- if [ "$PYZMQ" = "true" ]; then pip install pyzmq --user ; fi
2014-08-20 19:00:00 +02:00
before_script :
- unset CC; unset CXX
2014-09-03 20:14:01 +02:00
- mkdir -p depends/SDKs depends/sdk-sources
2016-02-09 23:17:09 +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
2014-08-20 19:00:00 +02:00
script :
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
2014-08-20 19:00:00 +02:00
- ./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
2015-04-05 23:56:58 +02:00
- make distdir PACKAGE=dash VERSION=$HOST
- cd dash-$HOST
2014-08-20 19:00:00 +02:00
- ./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
- 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-03-17 01:53:23 +01:00
- if [ "$RUN_TESTS" = "true" -a "$WINE" != "true" ]; then make check; fi
- if [ "$RUN_TESTS" = "true" -a "$WINE" = "true" ]; then wine src/test/test_dash.exe && wine src/qt/test/test_dash-qt.exe ; fi
2015-10-11 07:41:19 +02:00
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.py --coverage; fi
2014-08-20 19:00:00 +02:00
after_script :
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then (echo "Upload goes here. Something like: scp -r $BASE_OUTDIR server" || echo "upload failed"); fi