@@ -4,41 +4,43 @@ on: [push, pull_request]
44env :
55 CI : " ON"
66 BUILD_DIR : _build
7- CMAKE_OPTIONS : >-
8- -DCMAKE_BUILD_TYPE=Debug
9- -DFYPP_FLAGS='-DTRAVIS'
7+ INSTALL_DIR : _install
108
119jobs :
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