Codebase list julia / HEAD .travis.yml
HEAD

Tree @HEAD (Download .tar.gz)

.travis.yml @HEADraw · history · blame

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