Skip to content

Commit

Permalink
Sync CMake changes from hdf5 (HDFGroup#457)
Browse files Browse the repository at this point in the history
* Update CI yaml

* Change filters to WARNING

* Add oneAPI warning changes and remove CDASH_LOCAL

* Correct CI config

* Use correct vars for jpeg

* No java on mingw

* Skip dumper VD and VG tests

* Sync latest changes for presets
  • Loading branch information
byrnHDF authored Nov 20, 2023
1 parent 9cc959a commit e70534a
Show file tree
Hide file tree
Showing 65 changed files with 1,289 additions and 1,292 deletions.
72 changes: 72 additions & 0 deletions .github/workflows/autotools.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: hdf5 dev autools CI

# Controls when the action will run. Triggers the workflow on push or pull request
on:
workflow_call:

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:
call-workflow-xdr-autotools:
name: "Autotools XDR Workflows"
uses: ./.github/workflows/main-auto.yml
with:
xdr: enable
netcdf: enable
shared: enable
build_mode: "production"

call-system-xdr-autotools:
name: "Autotools System XDR Workflows"
uses: ./.github/workflows/main-auto.yml
with:
xdr: disable
netcdf: enable
shared: enable
build_mode: "production"

call-debug-netcdf-autotools:
name: "Autotools Debug NetCDF Workflows"
uses: ./.github/workflows/main-auto.yml
with:
xdr: enable
netcdf: enable
shared: enable
build_mode: "debug"

call-release-netcdf-autotools:
name: "Autotools Release NetCDF Workflows"
uses: ./.github/workflows/main-auto.yml
with:
xdr: enable
netcdf: enable
shared: enable
build_mode: "production"

call-debug-static-autotools:
name: "Autotools Debug Static Workflows"
uses: ./.github/workflows/main-auto.yml
with:
netcdf: disable
xdr: enable
shared: disable
build_mode: "debug"

call-release-static-autotools:
name: "Autotools Release Static Workflows"
uses: ./.github/workflows/main-auto.yml
with:
netcdf: disable
xdr: enable
shared: disable
build_mode: "production"

call-release-auto-intel:
name: "Autotools Intel Workflows"
uses: ./.github/workflows/intel-auto.yml
with:
build_mode: "production"
10 changes: 7 additions & 3 deletions .github/workflows/cmake-ctest.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: hdf4 dev ctest runs

# Controls when the action will run. Triggers the workflow on a schedule
# Controls when the action will run. Triggers the workflow on a call
on:
workflow_call:
inputs:
Expand Down Expand Up @@ -181,8 +181,12 @@ jobs:

# symlinks the compiler executables to a common location
- name: Setup GNU Fortran
uses: modflowpy/install-gfortran-action@v1

uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: gcc
version: 12

- name: Run ctest (MacOS)
id: run-ctest
run: |
Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: hdf5 dev cmake CI

# Controls when the action will run. Triggers the workflow on push or pull request
on:
workflow_call:

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:
call-workflow-nonetcdf-cmake:
name: "CMake Release NetCDF Off Workflows"
uses: ./.github/workflows/main-cmake.yml
with:
netcdf: false
shared: true
build_mode: "Release"

call-debug-netcdf-cmake:
name: "CMake Debug NetCDF Workflows"
uses: ./.github/workflows/main-cmake.yml
with:
netcdf: true
shared: true
build_mode: "Debug"

call-release-netcdf-cmake:
name: "CMake Release NetCDF Workflows"
uses: ./.github/workflows/main-cmake.yml
with:
netcdf: true
shared: true
build_mode: "Release"

call-debug-static-cmake:
name: "CMake Debug Workflows"
uses: ./.github/workflows/main-cmake.yml
with:
netcdf: false
shared: false
build_mode: "Debug"

call-release-static-cmake:
name: "CMake Release Workflows"
uses: ./.github/workflows/main-cmake.yml
with:
netcdf: false
shared: false
build_mode: "Release"

call-release-cmake-intel:
name: "CMake Intel Workflows"
uses: ./.github/workflows/intel-cmake.yml
with:
build_mode: "Release"
99 changes: 99 additions & 0 deletions .github/workflows/intel-auto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: hdf5 dev autotools icx CI

on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
Intel_build_and_test:
name: "Intel ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
- name: Add oneAPI to apt
shell: bash
run: |
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo add-apt-repository -y "deb https://apt.repos.intel.com/oneapi all main"
- name: Install oneAPI dpcpp and fortran compiler
shell: bash
run: |
sudo apt update
sudo apt install -y intel-oneapi-compiler-dpcpp-cpp
sudo apt install -y intel-oneapi-compiler-fortran
sudo apt install -y intel-oneapi-mpi-devel
echo "CC=icx" >> $GITHUB_ENV
echo "CXX=icpx" >> $GITHUB_ENV
echo "FC=ifx" >> $GITHUB_ENV
- name: Install oneAPI MKL library
shell: bash
run: |
sudo apt install -y intel-oneapi-mkl-devel
- name: Autotools Configure
shell: bash
run: |
source /opt/intel/oneapi/setvars.sh
export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
$GITHUB_WORKSPACE/configure \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-netcdf \
--enable-shared \
--enable-hdf4-xdr \
--disable-fortran
# BUILD
- name: Autotools Build
run: |
source /opt/intel/oneapi/setvars.sh
export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
make -j3
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
# NORMAL
- name: Autotools Run Tests
run: |
source /opt/intel/oneapi/setvars.sh
export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
export SYCL_DEVICE_FILTER=opencl.cpu
make check -j2
working-directory: ${{ runner.workspace }}/build

# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
run: |
source /opt/intel/oneapi/setvars.sh
export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
export SYCL_DEVICE_FILTER=opencl.cpu
make install
working-directory: ${{ runner.workspace }}/build

# - name: Autotools Verify Install
# run: |
# source /opt/intel/oneapi/setvars.sh
# export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
# export SYCL_DEVICE_FILTER=opencl.cpu
# make check-install
# working-directory: ${{ runner.workspace }}/build
126 changes: 126 additions & 0 deletions .github/workflows/intel-cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: hdf5 dev CMake icx CI

# Controls when the action will run. Triggers the workflow on a call
on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
# Linux (Ubuntu) w/ gcc + CMake
#
Intel_oneapi_linux:
name: "ubuntu-oneapi ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# Only CMake need ninja-build, but we just install it unilaterally
# libssl, etc. are needed for the ros3 VFD
- 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
- name: add oneAPI to env
uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: intel
version: '2023.2'

- name: CMake Configure with oneapi
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DCMAKE_TOOLCHAIN_FILE=config/toolchain/intel.cmake \
-DJPEG_USE_LOCALCONTENT=OFF \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF5_BUILD_FORTRAN=OFF \
$GITHUB_WORKSPACE
# BUILD
- name: CMake Build
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
working-directory: ${{ runner.workspace }}/build

Intel_oneapi_windows:
name: "windows-oneapi ${{ inputs.build_mode }}"
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- name: Install Dependencies (Windows)
run: choco install ninja

- name: add oneAPI to env
uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: intel
version: '2023.2'

- name: CMake Configure with oneapi
shell: pwsh
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
mkdir "${{ runner.workspace }}/build"
Set-Location -Path "${{ runner.workspace }}\\build"
cmake -C ${{ github.workspace }}/config/cmake/cacheinit.cmake -G Ninja -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} -DHDF5_BUILD_FORTRAN=OFF -DJPEG_USE_LOCALCONTENT=OFF -DLIBAEC_USE_LOCALCONTENT=OFF -DZLIB_USE_LOCALCONTENT=OFF ${{ github.workspace }}
# BUILD
- name: CMake Build
shell: pwsh
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
shell: pwsh
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
run: |
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -E HDP-dumpv
working-directory: ${{ runner.workspace }}/build
Loading

0 comments on commit e70534a

Please sign in to comment.