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: - ccache - 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: - ccache - libssl1.0.0 - bar - time - g++-5 - gfortran-5 - os: osx env: ARCH="x86_64" osx_image: xcode8.3 cache: ccache branches: only: - master - /^release-.*/ - /^v\d+\.\d+\.\d+$/ notifications: email: false 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 USECCACHE=1 USE_BINARYBUILDER_LIBUV=0 USE_BINARYBUILDER_LIBUNWIND=0 USE_BINARYBUILDER_LLVM=0"; echo "override ARCH=$ARCH" >> Make.user; sudo sh -c "echo 0 > /proc/sys/net/ipv6/conf/lo/disable_ipv6"; export JULIA_CPU_THREADS=4; export JULIA_TEST_MAXRSS_MB=1200; TESTSTORUN="all"; elif [ `uname` = "Darwin" ]; then brew update; brew install -v jq pv ccache; export PATH="$(brew --prefix ccache)/libexec:$PATH"; BAR="pv -i 30"; contrib/travis_fastfail.sh || exit 1; brew rm --force gcc gmp mpfr pcre2; brew install -v gcc gmp mpfr pcre2; BUILDOPTS="-j3 USECLANG=1 USECCACHE=1 VERBOSE=1 FORCE_ASSERTIONS=1"; for proj in LLVM LLVM_ASSERTS OPENBLAS SUITESPARSE OPENLIBM; do BUILDOPTS="$BUILDOPTS USE_BINARYBUILDER_${proj}=1"; done; for lib in GMP MPFR LIBUNWIND; do BUILDOPTS="$BUILDOPTS USE_SYSTEM_$lib=1"; done; spawn_DYLD_FALLBACK_LIBRARY_PATH="/usr/local/lib:/lib:/usr/lib"; export JULIA_MACOS_SPAWN="DYLD_FALLBACK_LIBRARY_PATH=\"$spawn_DYLD_FALLBACK_LIBRARY_PATH\" \$1"; export BUILDOPTS="$BUILDOPTS spawn=\$(JULIA_MACOS_SPAWN)"; export JULIA_CPU_THREADS=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 - wget http://http.debian.net/debian/pool/main/m/moreutils/moreutils_0.62.orig.tar.xz - tar -xJvf moreutils_0.62.orig.tar.xz && mv moreutils-0.62 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 release | moreutils/ts -s "%.s" - make $BUILDOPTS NO_GIT=1 prefix=/tmp/julia install | moreutils/ts -s "%.s" - make $BUILDOPTS NO_GIT=1 build-stats - du -sk /tmp/julia/* - ls -l /tmp/julia/lib - ls -l /tmp/julia/lib/julia - FILES_CHANGED=$(git diff --name-only $TRAVIS_COMMIT_RANGE -- || git ls-files) - 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 'Base.require(Main, :InteractiveUtils).versioninfo()' - pushd /tmp/julia/share/julia/test # skip tests if only files within the "doc" dir have changed - if [ $(echo "$FILES_CHANGED" | grep -cv '^doc/') -gt 0 ]; then /tmp/julia/bin/julia --check-bounds=yes runtests.jl $TESTSTORUN && /tmp/julia/bin/julia --check-bounds=yes runtests.jl LibGit2/online download; fi - popd # test that the embedding code works on our installation - mkdir /tmp/embedding-test && make check -C /tmp/julia/share/julia/test/embedding JULIA="/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 # run the LLVM tests on Linux - if [ `uname` = "Linux" ]; then pushd julia && make -C test/llvmpasses && popd; fi # run the doctests on Linux 64-bit - if [ `uname` = "Linux" ] && [ $ARCH = "x86_64" ]; then pushd julia && make -C doc doctest=true && popd; fi # uncomment the following if failures are suspected to be due to the out-of-memory killer # - dmesg after_success: - if [ `uname` = "Linux" ] && [ $ARCH = "x86_64" ]; then cd julia && make -C doc deploy; fi