From 2f905281f478944e05c5236c3168e2e73e780d69 Mon Sep 17 00:00:00 2001 From: "Hammond, Jeff R" Date: Sat, 16 Nov 2019 12:10:08 -0800 Subject: [PATCH] update MPI versions and fix Travis CI issues install autotools on macos using brew update to latest MPI release downloads add autogen.sh since mpich github releases no ship with configure stupid useless github tarballs accept automake >= 1.15 silence excessive output from Open-MPI mpi.h --- autogen.sh | 2 +- travis/build-run.sh | 4 +- travis/install-autotools.sh | 228 +++++++++++++++++++----------------- travis/install-mpi.sh | 13 +- 4 files changed, 128 insertions(+), 119 deletions(-) diff --git a/autogen.sh b/autogen.sh index f67ded0..cb6d26c 100755 --- a/autogen.sh +++ b/autogen.sh @@ -14,7 +14,7 @@ check_autotools_version() tool=$1 req_ver=$2 curr_ver=$($tool --version | head -1 | cut -f4 -d' ' | xargs echo -n) - if [ "$curr_ver" != "$req_ver" ]; then + if [ "$curr_ver" -ge "$req_ver" ]; then echo "" echo "$tool version mismatch ($req_ver) required" exit diff --git a/travis/build-run.sh b/travis/build-run.sh index 2d747e5..6df0c99 100755 --- a/travis/build-run.sh +++ b/travis/build-run.sh @@ -29,12 +29,14 @@ case "$MPI_IMPL" in mpicc --showme:command # see https://github.com/open-mpi/ompi/issues/2956 export TMPDIR=/tmp + # suppress excessive output + OMPI_NO_WARN="-Wno-unknown-attributes" ;; esac # Configure and build ./autogen.sh -./configure CC=mpicc CFLAGS="-std=c99" --disable-static --prefix=/tmp +./configure CC=mpicc CFLAGS="-std=c99 $OMPI_NO_WARN" --disable-static --prefix=/tmp make V=1 make V=1 install diff --git a/travis/install-autotools.sh b/travis/install-autotools.sh index 5bddfc0..b84ab11 100755 --- a/travis/install-autotools.sh +++ b/travis/install-autotools.sh @@ -3,120 +3,128 @@ #set -e set -x -os=`uname` TOP="$1" - MAKE_JNUM=2 - M4_VERSION=1.4.17 - LIBTOOL_VERSION=2.4.6 - AUTOCONF_VERSION=2.69 - AUTOMAKE_VERSION=1.15 +M4_VERSION=1.4.17 +LIBTOOL_VERSION=2.4.6 +AUTOCONF_VERSION=2.69 +AUTOMAKE_VERSION=1.15 - cd ${TOP} - TOOL=m4 - TDIR=${TOOL}-${M4_VERSION} - FILE=${TDIR}.tar.gz - BIN=${TOP}/bin/${TOOL} - if [ -f ${FILE} ] ; then - echo ${FILE} already exists! Using existing copy. - else - wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} - fi - if [ -d ${TDIR} ] ; then - echo ${TDIR} already exists! Using existing copy. - else - echo Unpacking ${FILE} - tar -xzf ${FILE} - fi - if [ -f ${BIN} ] ; then - echo ${BIN} already exists! Skipping build. - else - cd ${TOP}/${TDIR} - ./configure --prefix=${TOP} && make -j ${MAKE_JNUM} && make install - if [ "x$?" != "x0" ] ; then - echo FAILURE 1 - exit - fi - fi +if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - cd ${TOP} - TOOL=libtool - TDIR=${TOOL}-${LIBTOOL_VERSION} - FILE=${TDIR}.tar.gz - BIN=${TOP}/bin/${TOOL} - if [ ! -f ${FILE} ] ; then - wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} - else - echo ${FILE} already exists! Using existing copy. - fi - if [ ! -d ${TDIR} ] ; then - echo Unpacking ${FILE} - tar -xzf ${FILE} - else - echo ${TDIR} already exists! Using existing copy. - fi - if [ -f ${BIN} ] ; then - echo ${BIN} already exists! Skipping build. - else - cd ${TOP}/${TDIR} - ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install - if [ "x$?" != "x0" ] ; then - echo FAILURE 2 - exit - fi - fi + brew install m4 || brew upgrade m4 + brew install libtool || brew upgrade libtool + brew install autoconf || brew upgrade autoconf + brew install automake || brew upgrade automake - cd ${TOP} - TOOL=autoconf - TDIR=${TOOL}-${AUTOCONF_VERSION} - FILE=${TDIR}.tar.gz - BIN=${TOP}/bin/${TOOL} - if [ ! -f ${FILE} ] ; then - wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} - else - echo ${FILE} already exists! Using existing copy. - fi - if [ ! -d ${TDIR} ] ; then - echo Unpacking ${FILE} - tar -xzf ${FILE} - else - echo ${TDIR} already exists! Using existing copy. - fi - if [ -f ${BIN} ] ; then - echo ${BIN} already exists! Skipping build. - else - cd ${TOP}/${TDIR} - ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install - if [ "x$?" != "x0" ] ; then - echo FAILURE 3 - exit - fi - fi +else + MAKE_JNUM=2 - cd ${TOP} - TOOL=automake - TDIR=${TOOL}-${AUTOMAKE_VERSION} - FILE=${TDIR}.tar.gz - BIN=${TOP}/bin/${TOOL} - if [ ! -f ${FILE} ] ; then - wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} - else - echo ${FILE} already exists! Using existing copy. - fi - if [ ! -d ${TDIR} ] ; then - echo Unpacking ${FILE} - tar -xzf ${FILE} - else - echo ${TDIR} already exists! Using existing copy. - fi - if [ -f ${BIN} ] ; then - echo ${BIN} already exists! Skipping build. - else - cd ${TOP}/${TDIR} - ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install - if [ "x$?" != "x0" ] ; then - echo FAILURE 4 - exit - fi - fi + cd ${TOP} + TOOL=m4 + TDIR=${TOOL}-${M4_VERSION} + FILE=${TDIR}.tar.gz + BIN=${TOP}/bin/${TOOL} + if [ -f ${FILE} ] ; then + echo ${FILE} already exists! Using existing copy. + else + wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} + fi + if [ -d ${TDIR} ] ; then + echo ${TDIR} already exists! Using existing copy. + else + echo Unpacking ${FILE} + tar -xzf ${FILE} + fi + if [ -f ${BIN} ] ; then + echo ${BIN} already exists! Skipping build. + else + cd ${TOP}/${TDIR} + ./configure --prefix=${TOP} && make -j ${MAKE_JNUM} && make install + if [ "x$?" != "x0" ] ; then + echo FAILURE 1 + exit + fi + fi + cd ${TOP} + TOOL=libtool + TDIR=${TOOL}-${LIBTOOL_VERSION} + FILE=${TDIR}.tar.gz + BIN=${TOP}/bin/${TOOL} + if [ ! -f ${FILE} ] ; then + wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} + else + echo ${FILE} already exists! Using existing copy. + fi + if [ ! -d ${TDIR} ] ; then + echo Unpacking ${FILE} + tar -xzf ${FILE} + else + echo ${TDIR} already exists! Using existing copy. + fi + if [ -f ${BIN} ] ; then + echo ${BIN} already exists! Skipping build. + else + cd ${TOP}/${TDIR} + ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install + if [ "x$?" != "x0" ] ; then + echo FAILURE 2 + exit + fi + fi + + cd ${TOP} + TOOL=autoconf + TDIR=${TOOL}-${AUTOCONF_VERSION} + FILE=${TDIR}.tar.gz + BIN=${TOP}/bin/${TOOL} + if [ ! -f ${FILE} ] ; then + wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} + else + echo ${FILE} already exists! Using existing copy. + fi + if [ ! -d ${TDIR} ] ; then + echo Unpacking ${FILE} + tar -xzf ${FILE} + else + echo ${TDIR} already exists! Using existing copy. + fi + if [ -f ${BIN} ] ; then + echo ${BIN} already exists! Skipping build. + else + cd ${TOP}/${TDIR} + ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install + if [ "x$?" != "x0" ] ; then + echo FAILURE 3 + exit + fi + fi + + cd ${TOP} + TOOL=automake + TDIR=${TOOL}-${AUTOMAKE_VERSION} + FILE=${TDIR}.tar.gz + BIN=${TOP}/bin/${TOOL} + if [ ! -f ${FILE} ] ; then + wget http://ftp.gnu.org/gnu/${TOOL}/${FILE} + else + echo ${FILE} already exists! Using existing copy. + fi + if [ ! -d ${TDIR} ] ; then + echo Unpacking ${FILE} + tar -xzf ${FILE} + else + echo ${TDIR} already exists! Using existing copy. + fi + if [ -f ${BIN} ] ; then + echo ${BIN} already exists! Skipping build. + else + cd ${TOP}/${TDIR} + ./configure --prefix=${TOP} M4=${TOP}/bin/m4 && make -j ${MAKE_JNUM} && make install + if [ "x$?" != "x0" ] ; then + echo FAILURE 4 + exit + fi + fi +fi diff --git a/travis/install-mpi.sh b/travis/install-mpi.sh index 7c39bc1..b9e75e9 100755 --- a/travis/install-mpi.sh +++ b/travis/install-mpi.sh @@ -37,10 +37,9 @@ case "$os" in case "$MPI_IMPL" in mpich_shm|mpich_odd) if [ ! -d "$TRAVIS_ROOT/mpich" ]; then - # mpich-v3.3a2 has symbol visibility issue, see https://github.com/pmodels/mpich/issues/2471. - wget --no-check-certificate http://www.mpich.org/static/downloads/nightly/master/mpich/mpich-master-v3.3a2-452-ge0000be3f049.tar.gz - tar -xzf mpich-master-v3.3a2-452-ge0000be3f049.tar.gz - cd mpich-master-v3.3a2-452-ge0000be3f049 + wget --no-check-certificate http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz + tar -xzf mpich-3.3.2.tar.gz + cd mpich-3.3.2 mkdir build && cd build ../configure CFLAGS="-w" --prefix=$TRAVIS_ROOT/mpich --disable-fortran --disable-static make -j2 @@ -51,9 +50,9 @@ case "$os" in ;; openmpi) if [ ! -d "$TRAVIS_ROOT/open-mpi" ]; then - wget --no-check-certificate https://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.0.tar.bz2 - tar -xjf openmpi-3.0.0.tar.bz2 - cd openmpi-3.0.0 + wget --no-check-certificate https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.2.tar.bz2 + tar -xjf openmpi-4.0.2.tar.bz2 + cd openmpi-4.0.2 mkdir build && cd build ../configure CFLAGS="-w" --prefix=$TRAVIS_ROOT/open-mpi \ --without-verbs --without-fca --without-mxm --without-ucx \