560e99636c
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
65 lines
3.9 KiB
YAML
65 lines
3.9 KiB
YAML
# 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
|
|
# replacing the "compilers" with a build name prefixed by the no-op ":"
|
|
# command. See: https://github.com/travis-ci/casher/issues/6
|
|
|
|
os: linux
|
|
language: cpp
|
|
env:
|
|
global:
|
|
- MAKEJOBS=-j3
|
|
- RUN_TESTS=false
|
|
- CCACHE_SIZE=100M
|
|
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
|
- CCACHE_COMPRESS=1
|
|
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
|
|
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
|
|
cache:
|
|
apt: true
|
|
directories:
|
|
- depends/built
|
|
- depends/sdk-sources
|
|
- $HOME/.ccache
|
|
matrix:
|
|
fast_finish: true
|
|
include:
|
|
- compiler: ": ARM"
|
|
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
|
|
- compiler: ": bitcoind"
|
|
env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER"
|
|
- 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"
|
|
- compiler: ": 32-bit + dash"
|
|
env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" USE_SHELL="/bin/dash"
|
|
- compiler: ": Cross-Mac"
|
|
env: HOST=x86_64-apple-darwin11 PACKAGES="gcc-multilib g++-multilib cmake libcap-dev libz-dev libbz2-dev" OSX_SDK=10.7 GOAL="deploy"
|
|
- compiler: ": Win64"
|
|
env: HOST=x86_64-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
|
- compiler: ": Win32"
|
|
env: HOST=i686-w64-mingw32 PACKAGES="nsis gcc-mingw-w64-i686 g++-mingw-w64-i686 binutils-mingw-w64-i686 mingw-w64-dev wine bc" RUN_TESTS=true GOAL="deploy" BITCOIN_CONFIG="--enable-gui" MAKEJOBS="-j2"
|
|
install:
|
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get update; fi
|
|
- if [ -n "$PACKAGES" ]; then travis_retry sudo apt-get install --no-upgrade -qq $PACKAGES; fi
|
|
before_script:
|
|
- unset CC; unset CXX
|
|
- mkdir -p depends/SDKs depends/sdk-sources
|
|
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then wget $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -O depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
|
|
- 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
|
|
- make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS
|
|
script:
|
|
- if [ -n "$USE_SHELL" ]; then export CONFIG_SHELL="$USE_SHELL"; fi
|
|
- 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
|
|
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then export CCACHE_READONLY=1; fi
|
|
- test -n "$USE_SHELL" && eval '"$USE_SHELL" -c "./autogen.sh"' || ./autogen.sh
|
|
- ./configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG || ( cat config.log && false)
|
|
- make distdir PACKAGE=bitcoin VERSION=$HOST
|
|
- cd bitcoin-$HOST
|
|
- ./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 )
|
|
- if [ "$RUN_TESTS" = "true" ]; then make check; fi
|
|
- if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.sh; fi
|
|
after_script:
|
|
- if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then (echo "Upload goes here. Something like: scp -r $BASE_OUTDIR server" || echo "upload failed"); fi
|