From db5f887c18039aa002ceceb240ec041a4dd9d9a4 Mon Sep 17 00:00:00 2001 From: Matthew Larson Date: Mon, 16 Dec 2024 15:25:48 -0600 Subject: [PATCH] Add Ubuntu 22/24 to CI --- .github/workflows/main.yml | 215 ++++++++++++------------------------- 1 file changed, 71 insertions(+), 144 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f3d8a77f..7dc58f0b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,13 +27,25 @@ env: BUCKET_NAME: hsdstest jobs: - build_and_test_with_autotools: + build_and_test: strategy: fail-fast: false matrix: - os: [ubuntu-latest] - python-version: ["3.10"] - hdf5-branch: ["hdf5_1_14"] + os: [ubuntu-22.04, ubuntu-latest] + build_system: ["autotools", "cmake"] + python-version: ["3.10", "3.11", "3.12"] + hdf5-branch: ["hdf5_1_14", "develop"] + compiler: ["gcc-11", "gcc-12", "gcc-13"] + exclude: + # Ubuntu 22.04 runner does not have gcc-13 + - os: ubuntu-22.04 + compiler: "gcc-13" + # Ubuntu 24.04 runner does not have gcc-11 + - os: ubuntu-latest + compiler: "gcc-11" + # hdf5 2.0.0+ does not support autotools + - hdf5-branch: "develop" + build_system: "autotools" runs-on: ${{matrix.os}} steps: @@ -50,6 +62,7 @@ jobs: sudo apt-get install libyajl-dev - name: Get Autotools Dependencies + if: matrix.build_system == 'autotools' run: | sudo apt update sudo apt install automake autoconf libtool libtool-bin @@ -59,32 +72,78 @@ jobs: with: path: ${{github.workspace}}/vol-rest - - name: Autotools Configure + Build HDF5 + - name: CMake Configure + Build HDF5 + if: matrix.build_system == 'cmake' + run: | + mkdir ${{github.workspace}}/hdf5/build + cd ./build + cmake \ + -DHDF5_BUILD_HL_LIB=ON \ + -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ + -DHDF5_TEST_API=ON \ + -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \ + -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \ + -DCMAKE_C_COMPILER=${{matrix.compiler}} \ + .. + make + make install + shell: bash + working-directory: ${{github.workspace}}/hdf5 + + - name: Autotools Configure + Build HDF5 + if: matrix.build_system == 'autotools' run: | ./autogen.sh ./configure --prefix=${{github.workspace}}/hdf5install \ --enable-hl --disable-threadsafe \ - --enable-build-mode=production --enable-shared + --enable-build-mode=production --enable-shared \ + CC=${{matrix.compiler}} make make install shell: bash working-directory: ${{github.workspace}}/hdf5 + - name: CMake Configure REST VOL + if: matrix.build_system == 'cmake' + run: | + mkdir ./build + cd ./build + CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \ + -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \ + -DCMAKE_C_COMPILER=${{matrix.compiler}} \ + .. + shell: bash + working-directory: ${{github.workspace}}/vol-rest + - name: Autotools Configure REST VOL + if: matrix.build_system == 'autotools' run: | ./autogen.sh mkdir ${{github.workspace}}/vol-rest/install - CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure --prefix=${{github.workspace}}/vol-rest/install --with-hdf5=${{github.workspace}}/hdf5install + CFLAGS="-D_POSIX_C_SOURCE=200809L" ./configure \ + --prefix=${{github.workspace}}/vol-rest/install \ + --with-hdf5=${{github.workspace}}/hdf5install \ + CC=${{matrix.compiler}} shell: bash working-directory: ${{github.workspace}}/vol-rest - - name: Build + Install REST VOL + - name: Build + Install REST VOL (Autotools) + if: matrix.build_system == 'autotools' run: | make -j make install shell: bash working-directory: ${{github.workspace}}/vol-rest/ + - name: Build + Install REST VOL (CMake) + if: matrix.build_system == 'cmake' + run: | + make -j + make install + shell: bash + working-directory: ${{github.workspace}}/vol-rest/build/ + - uses: actions/checkout@v4 with: repository: HDFGroup/hsds @@ -126,7 +185,6 @@ jobs: pip install requests==2.31.0 - name: Start HSDS - if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}} run: | cd ${{github.workspace}}/hsds mkdir ${{github.workspace}}/hsdsdata && @@ -140,149 +198,18 @@ jobs: working-directory: ${{github.workspace}}/hsds - name: Test HSDS - if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}} run: | python tests/integ/setup_test.py working-directory: ${{github.workspace}}/hsds - - name: Test REST VOL + - name: Test REST VOL (Autotools) + if: matrix.build_system == 'autotools' working-directory: ${{github.workspace}}/vol-rest/ run: | HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/install/lib HDF5_VOL_CONNECTOR=REST ./test/test_rest_vol - - name: Show HSDS Logs on Fail - if: ${{failure()}} - working-directory: ${{github.workspace}}/hsds - run: | - cat hs.log - - build_and_test_with_cmake: - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - python-version: ["3.10"] - hdf5-branch: ["hdf5_1_14", "develop"] - - runs-on: ${{matrix.os}} - steps: - - uses: actions/checkout@v4 - with: - repository: HDFGroup/hdf5 - ref: ${{matrix.hdf5-branch}} - path: ${{github.workspace}}/hdf5 - - - name: Get REST VOL dependencies - run: | - sudo apt-get update - sudo apt-get install libcurl4-openssl-dev - sudo apt-get install libyajl-dev - - - name: Get REST VOL - uses: actions/checkout@v4 - with: - path: ${{github.workspace}}/vol-rest - - - name: CMake Configure + Build HDF5 - run: | - mkdir ${{github.workspace}}/hdf5/build - cd ./build - cmake \ - -DHDF5_BUILD_HL_LIB=ON \ - -DBUILD_SHARED_LIBS=ON -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ - -DHDF5_TEST_API=ON \ - -DHDF5_ENABLE_Z_LIB_SUPPORT=OFF \ - -DCMAKE_BUILD_TYPE=RelWithDebInfo -DHDF5_ENABLE_THREADSAFE=OFF \ - -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/hdf5install \ - .. - make - make install - shell: bash - working-directory: ${{github.workspace}}/hdf5 - - - name: CMake Configure REST VOL - run: | - mkdir ./build - cd ./build - CFLAGS="-D_POSIX_C_SOURCE=200809L" cmake -G "Unix Makefiles" -DHDF5_ROOT=${{github.workspace}}/hdf5install \ - -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/vol-rest/install \ - .. - shell: bash - working-directory: ${{github.workspace}}/vol-rest - - - name: Build + Install REST VOL - run: | - make -j - make install - shell: bash - working-directory: ${{github.workspace}}/vol-rest/build - - - uses: actions/checkout@v4 - with: - repository: HDFGroup/hsds - path: ${{github.workspace}}/hsds - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - - name: Install HSDS dependencies - shell: bash - run: | - python -m pip install --upgrade pip - python -m pip install pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - - - name: Install HSDS package - shell: bash - run: | - cd ${{github.workspace}}/hsds - pip install -e . - - - name: Run HSDS unit tests - shell: bash - run: | - cd ${{github.workspace}}/hsds - pytest - - - name: Install valgrind - run: | - sudo apt update - sudo apt install valgrind - working-directory: ${{ github.workspace }} - - # Requests 2.32.0 breaks requests-unixsocket, used by HSDS for socket connections - - name: Fix requests version - run: | - pip install requests==2.31.0 - - - name: Start HSDS - if: ${{ matrix.endpoint != 'http://127.0.0.1:5101'}} - run: | - cd ${{github.workspace}}/hsds - mkdir ${{github.workspace}}/hsdsdata && - mkdir ${{github.workspace}}/hsdsdata/hsdstest && - cp admin/config/groups.default admin/config/groups.txt && - cp admin/config/passwd.default admin/config/passwd.txt && - cp admin/config/groups.default admin/config/groups.txt && - cp admin/config/passwd.default admin/config/passwd.txt - ROOT_DIR=${{github.workspace}}/hsdadata ./runall.sh --no-docker 1 & - sleep 10 - working-directory: ${{github.workspace}}/hsds - - - name: Test HSDS - if: ${{matrix.endpoint != 'http://127.0.0.1:5101'}} - run: | - python tests/integ/setup_test.py - working-directory: ${{github.workspace}}/hsds - - - name: Set HDF5 Plugin path - run: | - echo "HDF5_PLUGIN_PATH=${{github.workspace}}/vol-rest/build/bin/" >> $GITHUB_ENV - echo "HDF5_VOL_CONNECTOR=REST" >> $GITHUB_ENV - - - name: Test REST VOL + - name: Test REST VOL (CMake) + if: matrix.build_system == 'cmmake' working-directory: ${{github.workspace}}/vol-rest/build/ run: | valgrind --leak-check=full -s ctest -R "test_rest_vol" -VV