diff --git a/.github/workflows/ubuntu_openmpi_adios.yml b/.github/workflows/ubuntu_openmpi_adios.yml new file mode 100644 index 0000000000..ec8221fe00 --- /dev/null +++ b/.github/workflows/ubuntu_openmpi_adios.yml @@ -0,0 +1,230 @@ +name: ubuntu_openmpi_adios + +on: + push: + branches: master + paths-ignore: + - '**/*.md' + - '**/*.txt' + - '**/*.1' + - 'docs/*' + - 'test/test_installed/*' + pull_request: + branches: master + paths-ignore: + - '**/*.md' + - '**/*.txt' + - '**/*.1' + - 'docs/*' + - 'test/test_installed/*' + +env: + OPENMPI_VERSION: 5.0.2 + AUTOCONF_VERSION: 2.71 + AUTOMAKE_VERSION: 1.17 + LIBTOOL_VERSION: 2.5.4 + M4_VERSION: 1.4.19 + ADIOS_VERSION: 1.13.1 + +jobs: + build: + runs-on: ubuntu-latest + timeout-minutes: 90 + steps: + - uses: actions/checkout@v4 + - name: Set up dependencies + run: | + sudo apt-get update + # install gfortran + version=12 + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y gcc-${version} gfortran-${version} + sudo update-alternatives \ + --install /usr/bin/gcc gcc /usr/bin/gcc-${version} 100 \ + --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${version} \ + --slave /usr/bin/gcov gcov /usr/bin/gcov-${version} + echo "---- gcc/gfortran version ------------------------------" + which gcc + which gfortran + gcc --version + gfortran --version + - name: Clean up git untracked files + run: | + git clean -fx + - name: Build GNU autotools + run: | + export PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/bin:${PATH}" + export LD_LIBRARY_PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/lib:${LD_LIBRARY_PATH}" + cd ${GITHUB_WORKSPACE} + wget -q https://ftp.gnu.org/gnu/m4/m4-${M4_VERSION}.tar.gz + gzip -dc m4-${M4_VERSION}.tar.gz | tar -xf - + cd m4-${M4_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/AUTOTOOLS \ + --silent + make -s -j 8 install > qout 2>&1 + make -s -j 8 distclean >> qout 2>&1 + cd ${GITHUB_WORKSPACE} + wget -q https://ftp.gnu.org/gnu/autoconf/autoconf-${AUTOCONF_VERSION}.tar.gz + gzip -dc autoconf-${AUTOCONF_VERSION}.tar.gz | tar -xf - + cd autoconf-${AUTOCONF_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/AUTOTOOLS \ + --silent + make -s -j 8 install > qout 2>&1 + make -s -j 8 distclean >> qout 2>&1 + cd ${GITHUB_WORKSPACE} + wget -q https://ftp.gnu.org/gnu/automake/automake-${AUTOMAKE_VERSION}.tar.gz + gzip -dc automake-${AUTOMAKE_VERSION}.tar.gz | tar -xf - + cd automake-${AUTOMAKE_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/AUTOTOOLS \ + --silent + make -s -j 8 install > qout 2>&1 + make -s -j 8 distclean >> qout 2>&1 + cd ${GITHUB_WORKSPACE} + wget -q https://ftp.gnu.org/gnu/libtool/libtool-${LIBTOOL_VERSION}.tar.gz + gzip -dc libtool-${LIBTOOL_VERSION}.tar.gz | tar -xf - + cd libtool-${LIBTOOL_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/AUTOTOOLS \ + --silent + make -s -j 8 install > qout 2>&1 + make -s -j 8 distclean >> qout 2>&1 + - name: Build OPENMPI + run: | + cd ${GITHUB_WORKSPACE} + echo "Install OPENMPI ${OPENMPI_VERSION} in ${GITHUB_WORKSPACE}/OPENMPI" + rm -rf OPENMPI ; mkdir OPENMPI ; cd OPENMPI + VER_MAJOR=${OPENMPI_VERSION%.*} + wget -q https://download.open-mpi.org/release/open-mpi/v${VER_MAJOR}/openmpi-${OPENMPI_VERSION}.tar.gz + gzip -dc openmpi-${OPENMPI_VERSION}.tar.gz | tar -xf - + cd openmpi-${OPENMPI_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/OPENMPI \ + --silent \ + --with-io-romio-flags="--with-file-system=ufs" \ + CC=gcc \ + FC=gfortran \ + FCFLAGS=-fallow-argument-mismatch + make -s LIBTOOLFLAGS=--silent V=1 -j 4 install > qout 2>&1 + make -s -j 4 distclean >> qout 2>&1 + - name: Build ADIOS + run: | + cd ${GITHUB_WORKSPACE} + export PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/bin:${GITHUB_WORKSPACE}/OPENMPI/bin:${PATH}" + wget -q https://users.nccs.gov/~pnorbert/adios-${ADIOS_VERSION}.tar.gz + gzip -dc adios-${ADIOS_VERSION}.tar.gz | tar -xf - + cd adios-${ADIOS_VERSION} + #autoreconf -i + mkdir build && cd build + ../configure --prefix=${GITHUB_WORKSPACE}/ADIOS \ + --with-mpi=${GITHUB_WORKSPACE}/OPENMPI \ + --disable-fortran + make -j 4 >> qout 2>&1 + make -j 4 install >> qout 2>&1 + - name: Build PnetCDF + run: | + cd ${GITHUB_WORKSPACE} + export PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/bin:${PATH}" + export LD_LIBRARY_PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/lib:${LD_LIBRARY_PATH}" + m4 --version + autoconf --version + automake --version + libtool --version + autoreconf -i + mkdir -p pnetcdf_output + ./configure --prefix=${GITHUB_WORKSPACE}/PnetCDF \ + --enable-option-checking=fatal \ + pnc_ac_debug=yes \ + --enable-burst_buffering \ + --enable-subfiling \ + --enable-thread-safe \ + --with-pthread \ + --with-mpi=${GITHUB_WORKSPACE}/OPENMPI \ + --with-adios=${GITHUB_WORKSPACE}/ADIOS \ + MIMIC_LUSTRE=yes \ + TESTOUTDIR=${GITHUB_WORKSPACE}/pnetcdf_output + make -j 8 tests + - name: Print config.log + if: ${{ always() }} + run: | + cat ${GITHUB_WORKSPACE}/config.log + - name: make check + run: | + cd ${GITHUB_WORKSPACE} + make check + - name: Print test log files + if: ${{ always() }} + run: | + cd ${GITHUB_WORKSPACE} + fname=`find src test examples benchmarks -type f -name "*.log"` + for f in $fname ; do \ + bname=`basename $f` ; \ + if test "x$bname" != xconfig.log ; then \ + echo "-------- dump $f ----------------------------" ; \ + cat $f ; \ + fi ; \ + done + - name: make ptests + run: | + cd ${GITHUB_WORKSPACE} + make ptests + - name: Build PnetCDF (default configuration) + run: | + cd ${GITHUB_WORKSPACE} + export PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/bin:${PATH}" + export LD_LIBRARY_PATH="${GITHUB_WORKSPACE}/AUTOTOOLS/lib:${LD_LIBRARY_PATH}" + make distclean + mkdir -p pnetcdf_output + ./configure --prefix=${GITHUB_WORKSPACE}/PnetCDF \ + --with-mpi=${GITHUB_WORKSPACE}/OPENMPI \ + --with-adios=${GITHUB_WORKSPACE}/ADIOS \ + TESTOUTDIR=${GITHUB_WORKSPACE}/pnetcdf_output + make -j 8 tests + - name: Print config.log (default configuration) + if: ${{ always() }} + run: | + cat ${GITHUB_WORKSPACE}/config.log + - name: make check (default configuration) + run: | + cd ${GITHUB_WORKSPACE} + make check + - name: Print test log files (default configuration) + if: ${{ always() }} + run: | + cd ${GITHUB_WORKSPACE} + fname=`find src test examples benchmarks -type f -name "*.log"` + for f in $fname ; do \ + bname=`basename $f` ; \ + if test "x$bname" != xconfig.log ; then \ + echo "-------- dump $f ----------------------------" ; \ + cat $f ; \ + fi ; \ + done + - name: make ptests (default configuration) + run: | + cd ${GITHUB_WORKSPACE} + make ptests + - name: make distcheck + run: | + cd ${GITHUB_WORKSPACE} + make -j 8 distcheck DISTCHECK_CONFIGURE_FLAGS="--silent --with-mpi=${GITHUB_WORKSPACE}/OPENMPI" + - name: make install + run: | + cd ${GITHUB_WORKSPACE} + prefix_path=${GITHUB_WORKSPACE}/pnetcdf_install + echo "---- test make install prefix=${prefix_path}" + make install prefix=${prefix_path} + test/tst_install.sh ${prefix_path} + prefix_path="/pnetcdf_install" + destdir_path=${GITHUB_WORKSPACE}/inst + echo "---- test make install prefix=${prefix_path} DESTDIR=${destdir_path}" + make install prefix=${prefix_path} DESTDIR=${destdir_path} + test/tst_install.sh ${prefix_path} ${destdir_path} + - name: Cleanup + if: ${{ always() }} + run: | + cd ${GITHUB_WORKSPACE} + make -s distclean + rm -rf ${GITHUB_WORKSPACE}/pnetcdf_output + rm -rf ${GITHUB_WORKSPACE}/OPENMPI + rm -rf ${GITHUB_WORKSPACE}/pnetcdf_install + rm -rf ${GITHUB_WORKSPACE}/inst + diff --git a/test/adios/parallel_run.sh b/test/adios/parallel_run.sh index a6602f77cc..6104c2a92a 100755 --- a/test/adios/parallel_run.sh +++ b/test/adios/parallel_run.sh @@ -81,5 +81,6 @@ for i in ${check_PROGRAMS} ; do fi done done + done done