name: hdf5 1.14 autotools CI # Controls when the action will run. Triggers the workflow on a call on: workflow_call: inputs: thread_safety: description: "thread-safety enable/disable" required: true type: string build_mode: description: "release vs. debug build" required: true type: string permissions: contents: read # A workflow run is made up of one or more jobs that can run sequentially or # in parallel. We just have one job, but the matrix items defined below will # run in parallel. jobs: # A workflow that builds the library and runs all the tests # Linux (Ubuntu) w/ gcc + Autotools # Autotools_build_and_test: name: "GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d" # Don't run the action if the commit message says to skip CI if: "!contains(github.event.head_commit.message, 'skip-ci')" # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # SETUP - name: Install Linux Dependencies run: | sudo apt update sudo apt-get install ninja-build doxygen graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install gcc-12 g++-12 gfortran-12 sudo apt install automake autoconf libtool libtool-bin sudo apt install libaec0 libaec-dev echo "CC=gcc-12" >> $GITHUB_ENV echo "CXX=g++-12" >> $GITHUB_ENV echo "FC=gfortran-12" >> $GITHUB_ENV # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Get Sources uses: actions/checkout@v4 # AUTOTOOLS CONFIGURE - name: Autotools Configure run: | sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" $GITHUB_WORKSPACE/configure \ --enable-build-mode=${{ inputs.build_mode }} \ --enable-deprecated-symbols \ --with-default-api-version=v114 \ --enable-shared \ --disable-parallel \ --${{ inputs.thread_safety }}-threadsafe \ --enable-cxx \ --enable-fortran \ --enable-java \ --enable-mirror-vfd \ --enable-direct-vfd \ --enable-ros3-vfd \ --with-szlib=yes shell: bash if: ${{ inputs.thread_safety == 'disable' }} - name: Autotools Configure (Thread-Safe) run: | sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" $GITHUB_WORKSPACE/configure \ --enable-build-mode=${{ inputs.build_mode }} \ --enable-shared \ --${{ inputs.thread_safety }}-threadsafe \ --disable-hl \ --disable-parallel \ --enable-mirror-vfd \ --enable-direct-vfd \ --enable-ros3-vfd \ --with-szlib=yes shell: bash if: ${{ inputs.thread_safety == 'enable' }} # BUILD - name: Autotools Build run: make -j3 working-directory: ${{ runner.workspace }}/build # RUN TESTS # NORMAL - name: Autotools Run Tests run: make check -j2 working-directory: ${{ runner.workspace }}/build if: ${{ inputs.thread_safety == 'disable' }} # THREAD-SAFE - name: Autotools Run Thread-Safe Tests run: | cd test ./ttsafe working-directory: ${{ runner.workspace }}/build if: ${{ inputs.thread_safety == 'enable' }} # INSTALL (note that this runs even when we don't run the tests) - name: Autotools Install run: make install working-directory: ${{ runner.workspace }}/build - name: Autotools Verify Install run: make check-install working-directory: ${{ runner.workspace }}/build # # The GitHub runners are inadequate for running parallel HDF5 tests, # so we catch most issues in daily testing. What we have here is just # a compile check to make sure nothing obvious is broken. # A workflow that builds the library # Parallel Linux (Ubuntu) w/ gcc + Autotools # Autotools_build_parallel: name: "Parallel GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d" # Don't run the action if the commit message says to skip CI if: "!contains(github.event.head_commit.message, 'skip-ci')" # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # SETUP - name: Install Linux Dependencies run: | sudo apt update sudo apt-get install ninja-build doxygen graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev sudo apt install gcc-12 g++-12 gfortran-12 sudo apt install automake autoconf libtool libtool-bin sudo apt install libaec0 libaec-dev sudo apt install openmpi-bin openmpi-common mpi-default-dev echo "CC=mpicc" >> $GITHUB_ENV echo "FC=mpif90" >> $GITHUB_ENV # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Get Sources uses: actions/checkout@v4 # AUTOTOOLS CONFIGURE - name: Autotools Configure run: | sh ./autogen.sh mkdir "${{ runner.workspace }}/build" cd "${{ runner.workspace }}/build" CC=mpicc $GITHUB_WORKSPACE/configure \ --enable-build-mode=${{ inputs.build_mode }} \ --enable-deprecated-symbols \ --with-default-api-version=v114 \ --enable-shared \ --enable-parallel \ --disable-cxx \ --enable-fortran \ --disable-java \ --disable-mirror-vfd \ --disable-direct-vfd \ --disable-ros3-vfd \ --with-szlib=yes shell: bash # BUILD - name: Autotools Build run: make -j3 working-directory: ${{ runner.workspace }}/build