summaryrefslogtreecommitdiffstats
path: root/.github/workflows/main-auto.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/main-auto.yml')
-rw-r--r--.github/workflows/main-auto.yml182
1 files changed, 182 insertions, 0 deletions
diff --git a/.github/workflows/main-auto.yml b/.github/workflows/main-auto.yml
new file mode 100644
index 0000000..3ad0399
--- /dev/null
+++ b/.github/workflows/main-auto.yml
@@ -0,0 +1,182 @@
+name: hdf5 dev 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