diff --git a/.github/workflows/netcdf4_adios.yml b/.github/workflows/netcdf4_adios.yml new file mode 100644 index 000000000..d8832f2fe --- /dev/null +++ b/.github/workflows/netcdf4_adios.yml @@ -0,0 +1,237 @@ +# Test NetCDF4 and ADIOS +name: CI - NetCDF4 and ADIOS + +permissions: + contents: read + pull-requests: write + +on: + push: + branches: [ master ] + paths-ignore: + - '**/*.md' + - '**/*.txt' + - '**/*.1' + - '**/*.jpg' + - '**/*.png' + - 'docs/*' + - 'test/test_installed/*' + pull_request: + branches: [ master ] + paths-ignore: + - '**/*.md' + - '**/*.txt' + - '**/*.1' + - '**/*.jpg' + - '**/*.png' + - 'docs/*' + - 'test/test_installed/*' + +env: + LIBTOOL_VERSION: 2.5.4 + MPICH_LATEST: 4.3.2 + HDF5_VERSION: 1.14.6 + NETCDF4_VERSION: 4.9.3 + ADIOS_VERSION: 1.13.1 + +jobs: + build: + strategy: + fail-fast: false # This disables the default cancel-on-failure behavior + + runs-on: ubuntu-latest + timeout-minutes: 120 + + steps: + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4 + + - name: Install autotools + run: | + set -x + sudo apt-get update + sudo apt-get install autoconf + sudo apt-get install automake + sudo apt-get install m4 + # sudo apt-get install libtool libtool-bin + 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=/usr --silent + sudo make -s LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 + sudo make -s LIBTOOLFLAGS=--silent V=1 -j 8 distclean >> qout 2>&1 + which autoconf + autoconf --version + which automake + automake --version + which libtool + libtool --version + which m4 + m4 --version + + - name: Build and install MPICH + run: | + # MPICH versions older than 4.2.2 do not support the MPI large + # count feature. + echo "Install MPICH ${MPICH_LATEST} in ${GITHUB_WORKSPACE}/MPI" + wget -q https://www.mpich.org/static/downloads/${MPICH_LATEST}/mpich-${MPICH_LATEST}.tar.gz + gzip -dc mpich-${MPICH_LATEST}.tar.gz | tar -xf - + cd mpich-${MPICH_LATEST} + ./configure --prefix=${GITHUB_WORKSPACE}/MPICH \ + --silent \ + --enable-romio \ + --with-file-system=ufs \ + --with-device=ch3:sock \ + --enable-fortran \ + CC=gcc FC=gfortran \ + FFLAGS=-fallow-argument-mismatch \ + FCFLAGS=-fallow-argument-mismatch + make -s LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 + make -s LIBTOOLFLAGS=--silent V=1 -j 8 distclean >> qout 2>&1 + + - name: Build and install HDF5 + if: ${{ success() }} + run: | + set -x + cd ${GITHUB_WORKSPACE} + rm -rf HDF5 ; mkdir HDF5 ; cd HDF5 + curl -LO https://github.com/HDFGroup/hdf5/releases/download/hdf5_${HDF5_VERSION}/hdf5-${HDF5_VERSION}.tar.gz + tar -zxf hdf5-${HDF5_VERSION}.tar.gz + cd hdf5-${HDF5_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/HDF5 \ + --silent \ + --enable-hl \ + --enable-parallel \ + --enable-build-mode=production \ + --disable-doxygen-doc \ + --disable-doxygen-man \ + --disable-doxygen-html \ + --disable-tools \ + --disable-tests \ + --disable-fortran \ + --disable-cxx \ + CC=${GITHUB_WORKSPACE}/MPICH/bin/mpicc + make -s LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 + make -s distclean >> qout 2>&1 + + - name: Build and install NetCDF4 + if: ${{ success() }} + run: | + set -x + cd ${GITHUB_WORKSPACE} + rm -rf NetCDF ; mkdir NetCDF ; cd NetCDF + curl -LO https://github.com/Unidata/netcdf-c/archive/refs/tags/v${NETCDF4_VERSION}.tar.gz + tar -zxf v${NETCDF4_VERSION}.tar.gz + cd netcdf-c-${NETCDF4_VERSION} + ./configure --prefix=${GITHUB_WORKSPACE}/NetCDF \ + --silent \ + --disable-doxygen \ + --disable-mmap \ + --disable-dap \ + --disable-nczarr \ + --disable-nczarr-filters \ + --disable-filter-testing \ + --disable-quantize \ + --disable-byterange \ + CC=${GITHUB_WORKSPACE}/MPICH/bin/mpicc \ + CPPFLAGS="-I${GITHUB_WORKSPACE}/HDF5/include" \ + LDFLAGS="-L${GITHUB_WORKSPACE}/HDF5/lib" \ + LIBS="-lhdf5" + make -s LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 + make -s distclean >> qout 2>&1 + + - name: Build and install ADIOS + if: ${{ success() }} + run: | + cd ${GITHUB_WORKSPACE} + export PATH="${GITHUB_WORKSPACE}/MPICH/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} + mkdir build && cd build + ../configure --prefix=${GITHUB_WORKSPACE}/ADIOS \ + --silent \ + --with-mpi=${GITHUB_WORKSPACE}/MPICH \ + --disable-fortran + make -j 8 >> qout 2>&1 + make -j 8 install >> qout 2>&1 + + - name: Build PnetCDF + if: ${{ success() }} + run: | + set -x + cd ${GITHUB_WORKSPACE} + which autoconf + autoconf --version + which automake + automake --version + which libtool + libtool --version + which m4 + m4 --version + autoreconf -i + mkdir -p ${GITHUB_WORKSPACE}/pnetcdf_output + ./configure --prefix=${GITHUB_WORKSPACE}/PnetCDF \ + --enable-option-checking=fatal \ + pnc_ac_debug=yes \ + --with-netcdf4=${GITHUB_WORKSPACE}/NetCDF \ + --with-adios=${GITHUB_WORKSPACE}/ADIOS \ + --with-mpi=${GITHUB_WORKSPACE}/MPICH \ + TESTOUTDIR=${GITHUB_WORKSPACE}/pnetcdf_output + make -s LIBTOOLFLAGS=--silent V=1 -j 8 tests + + - name: Print config.log + if: ${{ always() }} + run: | + cat ${GITHUB_WORKSPACE}/config.log + + - name: make check + if: ${{ success() }} + run: | + cd ${GITHUB_WORKSPACE} + make -s LIBTOOLFLAGS=--silent V=1 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 + if: ${{ success() }} + run: | + cd ${GITHUB_WORKSPACE} + make -s LIBTOOLFLAGS=--silent V=1 ptests + + - name: make distcheck + if: ${{ success() }} + run: | + cd ${GITHUB_WORKSPACE} + make -j 8 distcheck DISTCHECK_CONFIGURE_FLAGS="--silent --with-mpi=${GITHUB_WORKSPACE}/MPICH" + + - name: make install + if: ${{ success() }} + run: | + set -x + cd ${GITHUB_WORKSPACE} + prefix_path=${GITHUB_WORKSPACE}/pnetcdf_install + echo "---- test make install prefix=${prefix_path}" + make -s LIBTOOLFLAGS=--silent V=1 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 -s LIBTOOLFLAGS=--silent V=1 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 LIBTOOLFLAGS=--silent V=1 distclean diff --git a/.github/workflows/ubuntu_openmpi_adios.yml b/.github/workflows/ubuntu_openmpi_adios.yml deleted file mode 100644 index 2f18c40ad..000000000 --- a/.github/workflows/ubuntu_openmpi_adios.yml +++ /dev/null @@ -1,196 +0,0 @@ -name: ubuntu_openmpi_adios -permissions: - contents: read - pull-requests: write - -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.8 - 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: 120 - steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # 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 LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 - make -s LIBTOOLFLAGS=--silent V=1 -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 LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 - make -s LIBTOOLFLAGS=--silent V=1 -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 LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 - make -s LIBTOOLFLAGS=--silent V=1 -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 LIBTOOLFLAGS=--silent V=1 -j 8 install > qout 2>&1 - make -s LIBTOOLFLAGS=--silent V=1 -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 8 install > qout 2>&1 - make -s LIBTOOLFLAGS=--silent V=1 -j 8 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 8 >> qout 2>&1 - make -j 8 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 \ - TESTOUTDIR=${GITHUB_WORKSPACE}/pnetcdf_output - make -s LIBTOOLFLAGS=--silent V=1 -j 8 tests - - name: Print config.log - if: ${{ always() }} - run: | - cat ${GITHUB_WORKSPACE}/config.log - - name: make check - run: | - cd ${GITHUB_WORKSPACE} - make -s LIBTOOLFLAGS=--silent V=1 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 -s LIBTOOLFLAGS=--silent V=1 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 -s LIBTOOLFLAGS=--silent V=1 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 -s LIBTOOLFLAGS=--silent V=1 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 LIBTOOLFLAGS=--silent V=1 distclean - rm -rf ${GITHUB_WORKSPACE}/pnetcdf_output - rm -rf ${GITHUB_WORKSPACE}/OPENMPI - rm -rf ${GITHUB_WORKSPACE}/pnetcdf_install - rm -rf ${GITHUB_WORKSPACE}/inst -