1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
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
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";
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 tap staticfloat/julia > /dev/null;
brew rm --force $(brew deps --HEAD julia);
brew install -v ccache gcc gmp mpfr pcre2 staticfloat/julia/openblas-julia staticfloat/julia/suite-sparse-julia staticfloat/juliadeps/libgfortran;
BUILDOPTS="-j3 USECLANG=1 USECCACHE=1 BINARYBUILDER_TRIPLET=x86_64-apple-darwin14 BINARYBUILDER_LLVM_ASSERTS=1";
BUILDOPTS="$BUILDOPTS USE_BINARYBUILDER_LLVM=1 LLVM_CONFIG=$TRAVIS_BUILD_DIR/usr/tools/llvm-config LLVM_SIZE=$TRAVIS_BUILD_DIR/usr/tools/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 SUITESPARSE BLAS LAPACK GMP MPFR LIBUNWIND; do
BUILDOPTS="$BUILDOPTS USE_SYSTEM_$lib=1";
done;
export LDFLAGS="-L$(brew --prefix openblas-julia)/lib -L$(brew --prefix suite-sparse-julia)/lib";
spawn_DYLD_FALLBACK_LIBRARY_PATH="/usr/local/lib:/lib:/usr/lib";
spawn_DYLD_FALLBACK_LIBRARY_PATH+=":$(brew --prefix openblas-julia)/lib";
spawn_DYLD_FALLBACK_LIBRARY_PATH+=":$(brew --prefix suite-sparse-julia)/lib";
export JULIA_MACOS_SPAWN="DYLD_FALLBACK_LIBRARY_PATH=\"$spawn_DYLD_FALLBACK_LIBRARY_PATH\" \$1";
export BUILDOPTS="$BUILDOPTS spawn=\$(JULIA_MACOS_SPAWN)";
make $BUILDOPTS -C contrib -f repackage_system_suitesparse4.make;
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 Pkg/pkg 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 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
|