Skip to content

Commit 3301768

Browse files
committed
Update GitHub workflows
1 parent 465c6a3 commit 3301768

File tree

1 file changed

+64
-67
lines changed

1 file changed

+64
-67
lines changed

.github/workflows/build.yml

Lines changed: 64 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,43 @@ on: [push, pull_request]
44
env:
55
CI: "ON"
66
BUILD_DIR: _build
7-
CMAKE_OPTIONS: >-
8-
-DCMAKE_BUILD_TYPE=Debug
9-
-DFYPP_FLAGS='-DTRAVIS'
7+
INSTALL_DIR: _install
108

119
jobs:
10+
1211
gcc-build:
12+
1313
runs-on: ${{ matrix.os }}
14+
15+
defaults:
16+
run:
17+
shell: bash -l {0}
18+
1419
strategy:
1520
fail-fast: false
1621
matrix:
1722
os: [ubuntu-latest]
18-
mpi: [nompi, openmpi]
23+
mpi: [nompi, mpich]
1924
socket: [nosocket, socket]
2025
config: [Debug]
21-
version: [11]
2226

2327
steps:
2428
- name: Checkout code
25-
uses: actions/checkout@v3
29+
uses: actions/checkout@v4
2630

27-
- uses: actions/setup-python@v4
31+
- uses: actions/setup-python@v5
2832
with:
2933
python-version: '3.x'
3034

35+
- name: Set up miniforge
36+
uses: conda-incubator/setup-miniconda@v3
37+
with:
38+
miniforge-version: latest
39+
auto-activate-base: true
40+
activate-environment: ""
41+
3142
- name: Install GCC (Linux)
32-
if: ${{ contains(matrix.os, 'ubuntu') }}
33-
run: |
34-
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
35-
sudo apt-get update
36-
sudo apt-get install -y gcc-${{ matrix.version}} gfortran-${{ matrix.version }} g++-${{ matrix.version }}
37-
sudo update-alternatives \
38-
--install /usr/bin/gcc gcc /usr/bin/gcc-${{ matrix.version }} 100 \
39-
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${{ matrix.version }} \
40-
--slave /usr/bin/g++ g++ /usr/bin/g++-${{ matrix.version }} \
41-
--slave /usr/bin/gcov gcov /usr/bin/gcov-${{ matrix.version }}
43+
run: mamba install c-compiler cxx-compiler fortran-compiler
4244

4345
- name: Enable MPI build
4446
if: contains(matrix.mpi, 'openmpi') || contains(matrix.mpi, 'mpich')
@@ -56,73 +58,72 @@ jobs:
5658
if: contains(matrix.socket, 'nosocket')
5759
run: echo "WITH_SOCKETS=false" >> $GITHUB_ENV
5860

59-
- name: Set Compiler (Linux)
60-
if: contains(matrix.os, 'ubuntu')
61+
- name: Set Compiler
6162
run: |
62-
echo "FC=gfortran" >> $GITHUB_ENV
63-
echo "CC=gcc" >> $GITHUB_ENV
63+
echo "FC=${CONDA_PREFIX}/bin/gfortran" >> $GITHUB_ENV
64+
echo "CC=${CONDA_PREFIX}/bin/gcc" >> $GITHUB_ENV
6465
6566
- name: Install HDF5
66-
if: contains(matrix.os, 'ubuntu')
67-
run: |
68-
sudo apt-get update
69-
sudo apt-get install hdf5-tools libhdf5-dev libhdf5-103
67+
run: mamba install hdf5
7068

71-
- name: Install OpenMPI (Linux)
72-
if: contains(matrix.os, 'ubuntu') && contains(matrix.mpi, 'openmpi')
69+
- name: Set HDF5 search paths
7370
run: |
74-
sudo apt-get update
75-
sudo apt-get install libopenmpi-dev
76-
echo "CMAKE_OPTIONS=${CMAKE_OPTIONS}" >> $GITHUB_ENV
71+
echo "CMAKE_PREFIX_PATH=${CONDA_PREFIX}/" >> $GITHUB_ENV
7772
78-
- name: Install cmake
79-
run: pip3 install cmake ninja fypp numpy h5py
73+
- name: Install OpenMPI
74+
if: contains(matrix.mpi, 'openmpi')
75+
run: mamba install openmpi openmpi-mpifort
76+
77+
- name: Install MPICH
78+
if: contains(matrix.mpi, 'mpich')
79+
run: mamba install mpich mpich-mpifort
80+
81+
- name: Install BLAS
82+
run: mamba install openblas libopenblas
83+
84+
- name: Install requirements (conda)
85+
run: mamba install cmake fypp numpy h5py
8086

8187
- name: Configure build
82-
run: >-
83-
cmake -B _build -G Ninja
84-
-DCMAKE_INSTALL_PREFIX=${PWD}/_install
85-
${CMAKE_OPTIONS}
86-
-DWITH_MPI=${WITH_MPI}
87-
-DWITH_SOCKETS=${WITH_SOCKETS}
88+
run: |
89+
cmake -B ${BUILD_DIR} -DWITH_MPI=${WITH_MPI} -DWITH_SOCKETS=${WITH_SOCKETS} \
90+
-DCMAKE_INSTALL_PREFIX=${PWD}/${BUILD_DIR}/${INSTALL_DIR} \
91+
-DCMAKE_BUILD_TYPE=${{ matrix.config }} .
8892
8993
- name: Build project
9094
run: cmake --build ${BUILD_DIR}
9195

9296
- name: Run regression tests
9397
run: |
9498
pushd ${BUILD_DIR}
95-
ctest -j 2 --output-on-failure
99+
ctest -j2 --output-on-failure
96100
popd
97101
98102
- name: Install project
99-
run: |
100-
cmake --install ${BUILD_DIR}
103+
run: cmake --install ${BUILD_DIR}
101104

102105
intel-build:
106+
103107
runs-on: ${{ matrix.os }}
108+
104109
strategy:
105110
fail-fast: false
106111
matrix:
107112
os: [ubuntu-latest]
108113
mpi: [nompi]
109114
socket: [nosocket, socket]
110-
fc: [ifx]
111-
cc: [icx]
115+
config: [RelWithDebInfo]
116+
112117
env:
113-
FC: ${{ matrix.fc }}
114-
CC: ${{ matrix.cc }}
115-
WITH_MPI: false
116-
CMAKE_OPTIONS: >-
117-
-DCMAKE_BUILD_TYPE=RelWithDebInfo
118-
-DFYPP_FLAGS='-DTRAVIS'
118+
FC: ifx
119+
CC: icx
119120

120121
steps:
121122
- name: Checkout code
122-
uses: actions/checkout@v3
123+
uses: actions/checkout@v4
123124

124125
- name: Setup Python
125-
uses: actions/setup-python@v4
126+
uses: actions/setup-python@v5
126127
with:
127128
python-version: 3.x
128129

@@ -138,27 +139,26 @@ jobs:
138139
run: |
139140
source /opt/intel/oneapi/setvars.sh
140141
printenv >> ${GITHUB_ENV}
141-
echo "FC=ifx" >> ${GITHUB_ENV}
142-
echo "CC=icx" >> ${GITHUB_ENV}
142+
echo "FC=${FC}" >> ${GITHUB_ENV}
143+
echo "F9X=${FC}" >> ${GITHUB_ENV}
144+
echo "CC=${CC}" >> ${GITHUB_ENV}
145+
echo "CXX=${CC}" >> ${GITHUB_ENV}
143146
144147
- name: Install HDF5
145-
if: contains(matrix.os, 'ubuntu')
146148
run: |
147149
wget https://support.hdfgroup.org/releases/hdf5/v1_14/v1_14_4/downloads/hdf5-1.14.4-3.tar.gz
148150
tar xfz hdf5-1.14.4-3.tar.gz
149151
cd hdf5-1.14.4-3/
150-
CC=icx CXX=icx FC=ifx F9X=ifx ./configure --prefix=${PWD}/hdf5 --enable-fortran --enable-shared
151-
make -j -l2
152+
./configure --prefix=${PWD}/hdf5 --enable-fortran --enable-shared
153+
make -j2
152154
make install
153155
export HDF5_ROOT=${PWD}/hdf5
154156
cd ../../
155157
printenv >> $GITHUB_ENV
156158
157159
- name: Disable MPI build
158160
if: contains(matrix.mpi, 'nompi')
159-
run: |
160-
echo "WITH_MPI=false" >> $GITHUB_ENV
161-
echo "FC=ifx" >> $GITHUB_ENV
161+
run: echo "WITH_MPI=false" >> $GITHUB_ENV
162162

163163
- name: Enable socket build
164164
if: contains(matrix.socket, 'socket')
@@ -174,12 +174,10 @@ jobs:
174174
pip3 install cmake ninja fypp numpy h5py
175175
176176
- name: Configure build
177-
run: >-
178-
cmake -B _build -G Ninja
179-
-DCMAKE_INSTALL_PREFIX=${PWD}/_install
180-
${CMAKE_OPTIONS}
181-
-DWITH_MPI=${WITH_MPI}
182-
-DWITH_SOCKETS=${WITH_SOCKETS}
177+
run: |
178+
cmake -B ${BUILD_DIR} -DWITH_MPI=${WITH_MPI} -DWITH_SOCKETS=${WITH_SOCKETS} \
179+
-DCMAKE_INSTALL_PREFIX=${PWD}/${BUILD_DIR}/${INSTALL_DIR} \
180+
-DCMAKE_BUILD_TYPE=${{ matrix.config }} .
183181
184182
- name: Build project
185183
run: cmake --build ${BUILD_DIR}
@@ -191,5 +189,4 @@ jobs:
191189
popd
192190
193191
- name: Install project
194-
run: |
195-
cmake --install ${BUILD_DIR}
192+
run: cmake --install ${BUILD_DIR}

0 commit comments

Comments
 (0)