Skip to content

Commit

Permalink
Add cygwin CI and update yaml files for consistency and accuracy (#4131)
Browse files Browse the repository at this point in the history
* Add cygwin CI

* add cygwin packages

* Correct option names

* Cleanup yaml file and synch look and feel

* Synch CI look and feel and correct path issues

* Upgrade oneapi version

* pwsh needs env: for vars

* No continuation char for pwsh

* restore correct pwsh step

* Run subset of tests for cygwin workflow

* Remove space chars in regex

* restore full tests
  • Loading branch information
byrnHDF authored Mar 14, 2024
1 parent 782c0e5 commit 112f445
Show file tree
Hide file tree
Showing 18 changed files with 399 additions and 164 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ jobs:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Get Sources
uses: actions/[email protected]

- name: Install Linux dependencies
- name: Install Dependencies
shell: bash
run: |
sudo apt update
Expand All @@ -28,6 +29,7 @@ jobs:
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
shell: bash
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
Expand Down Expand Up @@ -74,7 +76,6 @@ jobs:
LDFLAGS="-L/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib \
-L/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib"
# BUILD
- name: Autotools Build
shell: bash
env:
Expand All @@ -84,8 +85,6 @@ jobs:
make -j3
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
# NORMAL
- name: Autotools Run Tests
env:
NPROCS: 2
Expand All @@ -94,7 +93,6 @@ jobs:
make check -j
working-directory: ${{ runner.workspace }}/build

# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
env:
NPROCS: 2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ jobs:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Get Sources
uses: actions/[email protected]

- name: Install Linux dependencies
- name: Install Dependencies
shell: bash
run: |
sudo apt update
Expand All @@ -28,6 +29,7 @@ jobs:
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
shell: bash
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
Expand Down Expand Up @@ -56,7 +58,7 @@ jobs:
make
make install
- name: CMake Configure with aocc
- name: CMake Configure
shell: bash
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
Expand All @@ -77,14 +79,12 @@ jobs:
$GITHUB_WORKSPACE
#cat src/libhdf5.settings
# BUILD
- name: CMake Build
shell: bash
run: |
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
shell: bash
run: |
Expand Down
10 changes: 9 additions & 1 deletion .github/workflows/autotools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ jobs:

call-release-auto-aocc:
name: "Autotools aocc Workflows"
uses: ./.github/workflows/aocc-ompi-auto.yml
uses: ./.github/workflows/aocc-auto.yml
with:
build_mode: "production"

call-release-auto-cygwin:
name: "Autotools Cygwin Workflows"
uses: ./.github/workflows/cygwin-auto.yml
with:
build_mode: "production"


11 changes: 9 additions & 2 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,14 @@ jobs:
build_mode: "Release"

call-release-cmake-aocc:
name: "CMake nvhpc Workflows"
uses: ./.github/workflows/aocc-ompi-cmake.yml
name: "CMake aocc Workflows"
uses: ./.github/workflows/aocc-cmake.yml
with:
build_mode: "Release"

call-release-cmake-cygwin:
name: "CMake Cygwin Workflows"
uses: ./.github/workflows/cygwin-cmake.yml
with:
build_mode: "Release"

62 changes: 62 additions & 0 deletions .github/workflows/cygwin-auto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: hdf5 dev autotools cygwin

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

permissions:
contents: read

jobs:
cygwin_build_and_test:
name: "cygwin ${{ inputs.build_mode }}"
runs-on: windows-latest
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf input
- name: Get Sources
uses: actions/[email protected]

- name: Install Cygwin
uses: cygwin/cygwin-install-action@master
with:
packages: autoconf automake make gcc-fortran libtool zlib-devel m4 flex bison perl

- name: Autotools Configure
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
sh ./autogen.sh
mkdir build
cd build
../configure \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-shared \
--enable-fortran
- name: Autotools Build
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
cd build
make -j3
- name: Autotools Run Tests
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
cd build
# make check -j ---- cache test fails

- name: Autotools Install
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
cd build
make install
63 changes: 63 additions & 0 deletions .github/workflows/cygwin-cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: hdf5 dev CMake cygwin

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

permissions:
contents: read

jobs:
cygwin_build_and_test:
name: "cygwin-${{ inputs.build_mode }}"
runs-on: windows-latest
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf input
- name: Get Sources
uses: actions/[email protected]

- name: Install Cygwin
uses: cygwin/cygwin-install-action@master
with:
packages: cmake gcc-fortran make ninja zlib-devel flex bison perl

- name: CMake Configure
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
mkdir build
cd build
cmake -C ../config/cmake/cacheinit.cmake \
-G Ninja \
--log-level=VERBOSE \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF \
-DHDF5_BUILD_CPP_LIB:BOOL=OFF \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF5_BUILD_FORTRAN:BOOL=ON \
-DHDF5_BUILD_JAVA:BOOL=OFF \
..
- name: CMake Build
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
cd build
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
- name: CMake Run Tests
shell: C:\cygwin\bin\bash.exe -eo pipefail -o igncr '{0}'
run: |
export PATH=/usr/bin:$PATH
cd build
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
# ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -R "FORTRAN|H5TEST"
83 changes: 36 additions & 47 deletions .github/workflows/intel-auto.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: hdf5 dev autotools icx CI
name: hdf5 dev autotools icx

on:
workflow_call:
Expand All @@ -12,49 +12,33 @@ permissions:
contents: read

jobs:
Intel_build_and_test:
name: "Intel ${{ inputs.build_mode }}"
intel_oneapi_linux:
name: "linux-oneapi ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- name: Get Sources
uses: actions/[email protected]

- name: Install Dependencies
shell: bash
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
sudo apt-get install doxygen graphviz
sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
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: Install oneAPI (Linux)
uses: fortran-lang/setup-fortran@v1
id: setup-fortran
with:
compiler: intel
version: '2024.0'

- name: Autotools Configure
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
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"
Expand All @@ -63,37 +47,42 @@ jobs:
--enable-shared \
--disable-fortran
# BUILD
- name: Autotools Build
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
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
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
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
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
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
shell: bash
env:
FC: ${{ steps.setup-fortran.outputs.fc }}
CC: ${{ steps.setup-fortran.outputs.cc }}
CXX: ${{ steps.setup-fortran.outputs.cxx }}
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
Loading

0 comments on commit 112f445

Please sign in to comment.