|
| 1 | +language: generic |
| 2 | + |
| 3 | +env: |
| 4 | + global: |
| 5 | + - CACHE="$HOME/.local" |
| 6 | + - MPICH_VER="3.1.4" |
| 7 | + - MPICH_URL_HEAD="http://www.mpich.org/static/downloads/$MPICH_VER" |
| 8 | + - MPICH_URL_TAIL="mpich-${MPICH_VER}.tar.gz" |
| 9 | + - MPICH_DIR="$HOME/.local/usr/mpich" |
| 10 | + - OSX_PACKAGES="gcc cmake mpich" |
| 11 | + # homebrew bug requires MPI to be built from source, for now |
| 12 | + |
| 13 | +matrix: |
| 14 | + include: |
| 15 | + - os: osx |
| 16 | + - os: linux |
| 17 | + sudo: false |
| 18 | + cache: |
| 19 | + directories: |
| 20 | + "$CACHE" |
| 21 | + addons: |
| 22 | + apt: |
| 23 | + sources: |
| 24 | + - george-edison55-precise-backports |
| 25 | + - ubuntu-toolchain-r-test |
| 26 | + packages: |
| 27 | + - gcc-5 |
| 28 | + - gfortran-5 |
| 29 | + - cmake-data |
| 30 | + - cmake |
| 31 | + |
| 32 | +before_install: |
| 33 | + - | |
| 34 | + if [[ $TRAVIS ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]]; then |
| 35 | + brew update 2>brewupdate.err | tee brewupdate.log | head -n 1 |
| 36 | + else |
| 37 | + [[ -d "$CACHE/bin" ]] || mkdir -p "$CACHE/bin" |
| 38 | + [[ -d "$MPICH_DIR" ]] || mkdir -p "$MPICH_DIR" |
| 39 | + export PATH="$CACHE/bin:$PATH" |
| 40 | + export FC=gfortran-5 |
| 41 | + export CC=gcc-5 |
| 42 | + $FC --version |
| 43 | + $CC --version |
| 44 | + cmake --version |
| 45 | + fi |
| 46 | +
|
| 47 | +install: |
| 48 | + - | |
| 49 | + if [[ $TRAVIS ]] && [[ "X$TRAVIS_OS_NAME" = "Xosx" ]]; then |
| 50 | + for pkg in $OSX_PACKAGES; do |
| 51 | + [[ "$(brew ls --versions $pkg)" ]] || brew install $pkg |
| 52 | + brew outdated $pkg || brew upgrade $pkg |
| 53 | + done |
| 54 | + else |
| 55 | + if ! ( [[ -x "$HOME/.local/bin/mpif90" ]] && [[ -x "$HOME/.local/bin/mpicc" ]] ); then |
| 56 | + # mpich install not cached |
| 57 | + if ( [[ $TRAVIS ]] && [[ "X$TRAVIS_BRANCH" == Xbranch-1.* ]] ); then |
| 58 | + install_prerequisites/build mpich "$MPICH_VER" "$MPICH_DIR" 4 |
| 59 | + else |
| 60 | + # install_prerequisites/build is broken as of 2015.12.09 / 9d2edbb0 on master |
| 61 | + # argument parsing bug fixes haven't made it back into master yet... |
| 62 | + wget "${MPICH_URL_HEAD}/${MPICH_URL_TAIL}" |
| 63 | + mv "$MPICH_URL_TAIL" "$MPICH_DIR/.." |
| 64 | + pushd "$MPICH_DIR/.." |
| 65 | + tar -xzvf "$MPICH_URL_TAIL" |
| 66 | + cd "${MPICH_URL_TAIL%.tar.gz}" |
| 67 | + ./configure --prefix="$MPICH_DIR" |
| 68 | + make -j 4 |
| 69 | + make install |
| 70 | + popd |
| 71 | + fi |
| 72 | + for f in "$MPICH_DIR/bin/"*; do |
| 73 | + if [[ -x "$f" ]]; then |
| 74 | + ln -fs "$f" "$HOME/.local/bin/${f##*/}" && "${f##*/}" --version |
| 75 | + fi |
| 76 | + done |
| 77 | + fi |
| 78 | + fi |
| 79 | +
|
| 80 | +before_script: |
| 81 | + - mpif90 --version |
| 82 | + - export FC=mpif90 |
| 83 | + - mpicc --version |
| 84 | + - export CC=mpicc |
| 85 | + - cmake --version |
| 86 | + |
| 87 | +script: |
| 88 | + - mkdir cmake-build |
| 89 | + - cd cmake-build |
| 90 | + - cmake .. |
| 91 | + - make -j 4 |
| 92 | + - ctest --verbose |
0 commit comments