language: cpp sudo: required dist: trusty matrix: include: - os: linux env: ARCH="i686" compiler: "g++-5 -m32" addons: apt: sources: - ubuntu-toolchain-r-test packages: - libssl1.0.0 - bar - time - binutils - gcc-5 - g++-5 - gcc-5-multilib - g++-5-multilib - make:i386 - libssl-dev:i386 - gfortran-5 - gfortran-5-multilib - os: linux env: ARCH="x86_64" compiler: "g++-5 -m64" addons: apt: sources: - ubuntu-toolchain-r-test packages: - libssl1.0.0 - bar - time - g++-5 - gfortran-5 - os: osx env: ARCH="x86_64" osx_image: xcode8 cache: directories: - $TRAVIS_BUILD_DIR/deps/srccache - $TRAVIS_BUILD_DIR/deps/scratch - $TRAVIS_BUILD_DIR/deps/usr-staging branches: only: - master - /^release-.*/ - /^v\d+\.\d+\.\d+$/ notifications: email: false irc: channels: - "chat.freenode.net#julia-notifications" on_success: change on_failure: always webhooks: urls: - http://status.julialang.org/put/travis - http://julia.mit.edu:8000/travis-hook before_install: - make check-whitespace - if [ `uname` = "Linux" ]; then contrib/travis_fastfail.sh || exit 1; mkdir -p $HOME/bin; ln -s /usr/bin/gcc-5 $HOME/bin/gcc; ln -s /usr/bin/g++-5 $HOME/bin/g++; ln -s /usr/bin/gfortran-5 $HOME/bin/gfortran; ln -s /usr/bin/gcc-5 $HOME/bin/x86_64-linux-gnu-gcc; ln -s /usr/bin/g++-5 $HOME/bin/x86_64-linux-gnu-g++; gcc --version; BAR="bar -i 30"; BUILDOPTS="-j5 VERBOSE=1 FORCE_ASSERTIONS=1 LLVM_ASSERTIONS=1"; echo "override ARCH=$ARCH" >> Make.user; sudo sh -c "echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6"; export JULIA_CPU_CORES=4; export JULIA_TEST_MAXRSS_MB=1200; TESTSTORUN="all"; elif [ `uname` = "Darwin" ]; then brew update; brew install -v jq pv; BAR="pv -i 30"; contrib/travis_fastfail.sh || exit 1; brew tap staticfloat/julia; brew rm --force $(brew deps --HEAD julia); brew install -v --only-dependencies --HEAD julia; brew install -v staticfloat/juliadeps/libgfortran llvm39-julia; BUILDOPTS="-j3 USECLANG=1 LLVM_CONFIG=$(brew --prefix llvm39-julia)/bin/llvm-config LLVM_SIZE=$(brew --prefix llvm39-julia)/bin/llvm-size"; BUILDOPTS="$BUILDOPTS VERBOSE=1 USE_BLAS64=0 SUITESPARSE_INC=-I$(brew --prefix suite-sparse-julia)/include FORCE_ASSERTIONS=1"; BUILDOPTS="$BUILDOPTS LIBBLAS=-lopenblas LIBBLASNAME=libopenblas LIBLAPACK=-lopenblas LIBLAPACKNAME=libopenblas"; for lib in LLVM SUITESPARSE ARPACK BLAS LAPACK GMP MPFR PCRE LIBUNWIND; do BUILDOPTS="$BUILDOPTS USE_SYSTEM_$lib=1"; done; export LDFLAGS="-L$(brew --prefix openblas-julia)/lib -L$(brew --prefix suite-sparse-julia)/lib"; export DYLD_FALLBACK_LIBRARY_PATH="/usr/local/lib:/lib:/usr/lib:$(brew --prefix openblas-julia)/lib:$(brew --prefix suite-sparse-julia)/lib:$(brew --prefix arpack-julia)/lib"; export JULIA_MACOS_SPAWN="DYLD_FALLBACK_LIBRARY_PATH=\"$DYLD_FALLBACK_LIBRARY_PATH\" \$1"; export BUILDOPTS="$BUILDOPTS spawn=\$(JULIA_MACOS_SPAWN)"; make $BUILDOPTS -C contrib -f repackage_system_suitesparse4.make; export JULIA_CPU_CORES=2; export JULIA_TEST_MAXRSS_MB=600; TESTSTORUN="all --skip linalg/triangular subarray"; fi # TODO: re enable these if possible without timing out - echo "override JULIA_CPU_TARGET=generic;native" >> Make.user - git clone -q git://git.kitenet.net/moreutils script: - echo BUILDOPTS=$BUILDOPTS - export BUILDOPTS # compile / install dependencies - contrib/download_cmake.sh - make -C moreutils mispipe - make $BUILDOPTS -C base version_git.jl.phony # capture the log, but only print it if `make deps` fails # try to show the end of the log first, because this log might be very long (> 4MB) # and thus be truncated by travis - moreutils/mispipe "make \$BUILDOPTS NO_GIT=1 -C deps 2> deps-err.log" "$BAR" > deps.log || { echo "-- deps build log stderr tail 100 --------------------------------------"; tail -n 100 deps-err.log; echo "-- deps build log stdout tail 100 --------------------------------------"; tail -n 100 deps.log; echo "-- deps build log stderr all -------------------------------------------"; cat deps-err.log; echo "-- deps build log stdout all -------------------------------------------"; cat deps.log; echo "-- end of deps build log -----------------------------------------------"; false; } # compile / install Julia - make $BUILDOPTS NO_GIT=1 prefix=/tmp/julia install | moreutils/ts -s "%.s" - make $BUILDOPTS NO_GIT=1 build-stats - du -sk /tmp/julia/* - if [ `uname` = "Darwin" ]; then for name in suitesparseconfig spqr umfpack colamd cholmod amd suitesparse_wrapper; do install -pm755 usr/lib/lib${name}*.dylib* /tmp/julia/lib/julia/; done; fi - cd .. && mv julia julia2 # run tests - /tmp/julia/bin/julia --sysimage-native-code=no -e 'true' && /tmp/julia/bin/julia-debug --sysimage-native-code=no -e 'true' - /tmp/julia/bin/julia -e 'versioninfo()' - pushd /tmp/julia/share/julia/test - /tmp/julia/bin/julia --check-bounds=yes runtests.jl $TESTSTORUN && /tmp/julia/bin/julia --check-bounds=yes runtests.jl libgit2-online download pkg - popd # test that the embedding code works on our installation - mkdir /tmp/embedding-test && make check -C /tmp/julia/share/doc/julia/examples/embedding \ JULIA="DYLD_FALLBACK_LIBRARY_PATH='$DYLD_FALLBACK_LIBRARY_PATH' /tmp/julia/bin/julia" \ BIN=/tmp/embedding-test \ "$(cd julia2 && make print-CC)" # restore initial state and prepare for travis caching - mv julia2 julia && rm -f julia/deps/scratch/libgit2-*/CMakeFiles/CMakeOutput.log # uncomment the following if failures are suspected to be due to the out-of-memory killer # - dmesg after_success: - cd julia && make -C doc deploy