|
1 | 1 | language: cpp |
| 2 | +sudo: required |
| 3 | +dist: trusty |
2 | 4 |
|
3 | | -branches: |
4 | | - except: |
5 | | - - axel |
| 5 | +cache: |
| 6 | + apt: true |
| 7 | + directories: |
| 8 | + - $HOME/.cache/spack |
| 9 | + pip: true |
6 | 10 |
|
7 | | -compiler: |
8 | | - - gcc |
9 | | - - clang |
| 11 | +addons: |
| 12 | + apt: |
| 13 | + sources: |
| 14 | + - ubuntu-toolchain-r-test |
| 15 | + packages: &common_deps |
| 16 | + - gfortran |
| 17 | + - libcppunit-dev |
10 | 18 |
|
11 | 19 | env: |
12 | 20 | global: |
13 | | - - BUILD=~/buildTmp |
14 | | - - SRC=$TRAVIS_BUILD_DIR |
15 | | - matrix: |
16 | | - - SPLASHPARALLEL=ON SPLASHMPI=ON |
17 | | - - SPLASHPARALLEL=OFF SPLASHMPI=ON |
18 | | - - SPLASHPARALLEL=OFF SPLASHMPI=OFF |
| 21 | + - BUILD: ~/buildTmp |
| 22 | + - CXXFLAGS: "-Wall -Wextra -Woverloaded-virtual -Wshadow" |
| 23 | + - SPACK_ROOT: $HOME/.cache/spack |
| 24 | + - PATH: $PATH:$HOME/.cache/spack/bin |
| 25 | + |
| 26 | +matrix: |
| 27 | + include: |
| 28 | + # GCC 4.8.5 |
| 29 | + - env: |
| 30 | + - SPLASHPARALLEL=ON SPLASHMPI=ON |
| 31 | + compiler: gcc |
| 32 | + addons: &mpi_deps |
| 33 | + apt: |
| 34 | + packages: |
| 35 | + - *common_deps |
| 36 | + - libopenmpi-dev |
| 37 | + - openmpi-bin |
| 38 | + - env: |
| 39 | + - SPLASHPARALLEL=OFF SPLASHMPI=ON |
| 40 | + compiler: gcc |
| 41 | + addons: *mpi_deps |
| 42 | + - env: |
| 43 | + - SPLASHPARALLEL=OFF SPLASHMPI=OFF |
| 44 | + compiler: gcc |
| 45 | + # Clang 5.0.0 |
| 46 | + - env: |
| 47 | + - SPLASHPARALLEL=ON SPLASHMPI=ON |
| 48 | + compiler: clang |
| 49 | + addons: *mpi_deps |
| 50 | + - env: |
| 51 | + - SPLASHPARALLEL=OFF SPLASHMPI=ON |
| 52 | + compiler: clang |
| 53 | + addons: *mpi_deps |
| 54 | + |
| 55 | + - env: |
| 56 | + - SPLASHPARALLEL=OFF SPLASHMPI=OFF |
| 57 | + compiler: clang |
| 58 | + |
| 59 | +install: |
| 60 | + - SPACK_FOUND=$(which spack >/dev/null && { echo 0; } || { echo 1; }) |
| 61 | + - if [ $SPACK_FOUND -ne 0 ]; then |
| 62 | + mkdir -p $SPACK_ROOT && |
| 63 | + git clone --depth 50 https://github.com/spack/spack.git $SPACK_ROOT && |
| 64 | + cp $TRAVIS_BUILD_DIR/.travis/spack/*.yaml |
| 65 | + $SPACK_ROOT/etc/spack/ && |
| 66 | + spack bootstrap; |
| 67 | + fi |
| 68 | + - source /etc/profile && |
| 69 | + source $SPACK_ROOT/share/spack/setup-env.sh |
| 70 | + - COMPILERSPEC="%$CC" |
| 71 | + - travis_wait spack install |
| 72 | + cmake@3.10.0~openssl~ncurses |
| 73 | + $COMPILERSPEC |
| 74 | + - spack load cmake@3.10.0 $COMPILERSPEC |
| 75 | + - if [ $SPLASHMPI == "ON" ]; then |
| 76 | + travis_wait spack install |
| 77 | + openmpi@1.6.5 |
| 78 | + $COMPILERSPEC && |
| 79 | + spack load openmpi@1.6.5 $COMPILERSPEC; |
| 80 | + fi |
| 81 | + - if [ $SPLASHPARALLEL == "ON" ]; then |
| 82 | + travis_wait spack install |
| 83 | + hdf5@1.8.12+mpi ^openmpi@1.6.5 |
| 84 | + $COMPILERSPEC && |
| 85 | + spack load hdf5@1.8.12+mpi ^openmpi@1.6.5 $COMPILERSPEC && |
| 86 | + spack load zlib $COMPILERSPEC && |
| 87 | + pip install urllib3[secure] --user && |
| 88 | + pip install h5py --user; |
| 89 | + else |
| 90 | + travis_wait spack install |
| 91 | + hdf5@1.8.12~mpi |
| 92 | + $COMPILERSPEC && |
| 93 | + spack load hdf5@1.8.12~mpi $COMPILERSPEC && |
| 94 | + spack load zlib $COMPILERSPEC && |
| 95 | + pip install urllib3[secure] --user && |
| 96 | + pip install h5py --user; |
| 97 | + fi |
| 98 | + - spack clean -a |
19 | 99 |
|
20 | 100 | script: |
21 | | - - cd $BUILD |
22 | | -# compile libSplash and install |
23 | | - - CXXFLAGS="-Werror" cmake -DCMAKE_BUILD_TYPE=Debug -DTOOLS_MPI=$SPLASHMPI $SRC |
| 101 | + - mkdir -p $HOME/build |
| 102 | + - cd $HOME/build |
| 103 | + - CXXFLAGS=$CXXFLAGS CXX=$CXX CC=$CC |
| 104 | + cmake |
| 105 | + -DCMAKE_BUILD_TYPE=Debug |
| 106 | + -DSplash_USE_MPI=$SPLASHMPI |
| 107 | + -DSplash_USE_PARALLEL=$SPLASHPARALLEL |
| 108 | + -DSplash_HAVE_TESTS=ON |
| 109 | + -DCMAKE_INSTALL_PREFIX=$HOME/splash-test-install |
| 110 | + $TRAVIS_BUILD_DIR |
| 111 | + - make -j 2 |
| 112 | + - CTEST_OUTPUT_ON_FAILURE=1 make test |
| 113 | + - make install |
24 | 114 | - make package |
25 | | - - sudo dpkg -i libsplash*.deb |
26 | | - - ls -hal /usr/share/pyshared/ |
27 | | - - rm -rf $BUILD/* |
28 | | -# compile examples/ |
29 | | - - CXXFLAGS="-Werror" cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_MPI=$SPLASHMPI $SRC/examples |
30 | | - - make |
31 | | - - rm -rf $BUILD/* |
32 | | -# compile and run tests/ |
33 | | - - CXXFLAGS="-Werror" cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_MPI=$SPLASHMPI $SRC/tests |
34 | | - - make |
35 | | -# run tests |
36 | | - - $SRC/tests/run_tests $BUILD |
37 | | - - $SRC/tests/run_parallel_tests $BUILD |
| 115 | + # - dpkg -i libsplash*.deb |
38 | 116 |
|
39 | | -before_script: |
40 | | - - uname -r |
41 | | - - lsb_release -a |
42 | | - - echo "$SRC" |
43 | | - - ls -hal $SRC |
44 | | - - ls -hal /usr/include |
45 | | -# PPA providing hdf5 >= 1.8.6 and OpenMPI >= 1.5.1 |
46 | | -# -> remove legacy hdf5 and mpi packages/deps from travis |
47 | | - - sudo apt-get remove -qq libhdf5* |
48 | | - - sudo apt-get remove -qq libopenmpi* openmpi-bin || { echo "OpenMPI not installed"; } |
49 | | - - echo "yes" | sudo add-apt-repository ppa:james-page/openmpi |
50 | | - - echo "yes" | sudo add-apt-repository ppa:axel-huebl/libsplash |
51 | | - - sudo apt-get update -qq |
52 | | - - sudo apt-cache policy |
53 | | - - sudo apt-cache policy libhdf5-serial-dev |
54 | | - - sudo apt-cache policy libopenmpi-dev |
55 | | - - if [ "$SPLASHMPI" == "ON" ]; then export APTMPI="libopenmpi-dev openmpi-bin"; fi |
56 | | - - if [ "$SPLASHPARALLEL" == "ON" ]; then export APTHDF5="libhdf5-openmpi-7 libhdf5-openmpi-dev"; else export APTHDF5="libhdf5-serial-dev"; fi |
57 | | - - sudo dpkg --get-selections |
58 | | - - sudo apt-get install -qq -f libcppunit-dev |
59 | | - - sudo apt-get install -qq -f libboost-program-options-dev |
60 | | - - sudo apt-get -t o=LP-PPA-james-page-openmpi install -q -f $APTMPI |
61 | | - - sudo apt-get -t o=LP-PPA-axel-huebl-libsplash install -q -f $APTHDF5 |
62 | | - - sudo apt-get install python-numpy cython |
63 | | - - sudo -H pip install --upgrade pip |
64 | | -# numpy and cython should be already satisfied |
65 | | - - export HDF5_DIR=/usr |
66 | | - - export C_INCLUDE_PATH=/usr/lib/openmpi/include |
67 | | - - pip install --user h5py |
68 | | - - python -c "import numpy; print(numpy.version.version)" |
69 | | - - python -c "import h5py; print(h5py.version.version)" |
70 | | - - mkdir -p $BUILD ~/lib |
|
0 commit comments