# Use "required" for sudo, because we want to use the "trusty" Debian # distro, which is (currently) only available in the legacy Travis # infrastructure (i.e., if we put "sudo: false" to use the new container- # based Travis infrastructure, then "trusty" is not available). We # need the "trusty" distro because it has more recent versions of the # GNU Autotools (i.e., autogen.pl will fail if you use the regular # distro because the GNU Autotools are too old). sudo: required dist: trusty language: c # Iterate over 2 different compilers compiler: - gcc - clang # Test only linux now os: - linux addons: # For Linux, make sure we have some extra packages that we like to # build with apt: packages: - autoconf - automake - libtool - libnl-3-200 - libnl-3-dev - libnl-route-3-200 - libnl-route-3-dev - libibverbs-dev - librdmacm-dev - libhwloc-dev sources: - ubuntu-toolchain-r-test env: global: - AM_MAKEFLAGS="-j4" - LD_LIBRARY_PATH="$HOME/bogus/lib" matrix: - GCC_VERSION=default - GCC_VERSION=6 # Install dependencies for the verbs and usnic providers. Open MPI is # not currently using the verbs provider in Libfabric, so we might as # well not build it. before_install: - if [[ "GCC_VERSION" == "6" ]]; then COMPILERS="CC=gcc-6 CXX=g++-6 FC=gfortran-6"; fi - export CONFIGURE_ARGS="--prefix=$HOME/bogus $COMPILERS CPPFLAGS=-I$HOME/bogus/include LDFLAGS=-L$HOME/bogus/lib" DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_ARGS" - export DISTCHECK_CONFIGURE_FLAGS="$CONFIGURE_ARGS" - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then git clone https://github.com/ofiwg/libfabric.git ; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$GCC_VERSION" == "6" ]] ; then sudo apt-get --assume-yes install gcc-6 g++-6 gfortran-6; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then cd libfabric && ./autogen.sh && ./configure --prefix=$HOME/bogus --enable-usnic --disable-verbs $COMPILERS && make install && cd .. ; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; brew upgrade automake || true; brew upgrade libtool || true; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew tap homebrew/science || true; brew install hwloc || true; brew upgrade hwloc || true ; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]] && [[ "$GCC_VERSION" == "6" ]] ; then brew install gcc || true; brew upgrade gcc || true ; fi - mkdir -p $HOME/bogus/include $HOME/bogus/lib # Note that we use "make -k" to do the entire build, even if there was a # build error in there somewhere. This prevents us from needing to submit # to Travis, see the first error, fix that first error, submit again, ...etc. install: - m4 --version - autoconf --version - automake --version - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then libtool --version; else glibtool --version; fi - ./autogen.pl - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "gcc" ]]; then ./configure $CONFIGURE_ARGS --with-libfabric=$HOME/bogus --with-usnic --with-verbs; else ./configure $CONFIGURE_ARGS; fi - make -k # We only need to distcheck on one OS / compiler combination (this is just # a minor optimization to make the overall set of builds faster). script: - if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "gcc" ]]; then make distcheck; else make check; fi matrix: exclude: - env: GCC_VERSION=6 compiler: clang