Skip to content

Commit 9be1379

Browse files
authored
Merge pull request #45 from Goddard-Fortran-Ecosystem/feature/update-to-pfunit-4.14
2 parents 6f5586c + 209afe6 commit 9be1379

File tree

5 files changed

+90
-34
lines changed

5 files changed

+90
-34
lines changed

.github/workflows/main.yml

Lines changed: 71 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
os: [ubuntu-22.04, ubuntu-24.04, macos-14, macos-15]
1919
compiler: [gfortran-12, gfortran-13, gfortran-14, gfortran-15]
2020
# gfortran-10 and -11 are only on ubuntu-22.04
21-
# gfortran-13 and -14 and -15 are not on ubuntu-22.04
21+
# gfortran-13, -14, and -15 are not on ubuntu-22.04
2222
# gfortran-15 is only on macos
2323
include:
2424
- os: ubuntu-22.04
@@ -60,7 +60,7 @@ jobs:
6060
cmake --version
6161
6262
- name: Checkout
63-
uses: actions/checkout@v4
63+
uses: actions/checkout@v5
6464
with:
6565
fetch-depth: 1
6666
submodules: true
@@ -126,7 +126,7 @@ jobs:
126126
name: Intel Fortran
127127
steps:
128128
- name: Checkout
129-
uses: actions/checkout@v4
129+
uses: actions/checkout@v5
130130
with:
131131
fetch-depth: 1
132132
submodules: true
@@ -187,52 +187,92 @@ jobs:
187187
path: |
188188
build/**/*.log
189189
190-
Nvidia:
191-
runs-on: ubuntu-22.04
192-
container: nvcr.io/nvidia/nvhpc:24.7-devel-cuda12.5-ubuntu22.04
190+
# NOTE: This is weird because the NVHPC image is so large (~8GB) that
191+
# we have to do some tricks to get it to run in GitHub Actions.
192+
Nvidia-Build-Only:
193+
runs-on: ubuntu-24.04
193194
env:
194195
FC: nvfortran
196+
NVHPC_IMAGE: nvcr.io/nvidia/nvhpc:25.7-devel-cuda12.9-ubuntu24.04
195197

196-
name: Nvidia HPC
197198
steps:
198-
- name: Versions
199+
# Reclaim lots of space
200+
- name: Free disk space
201+
uses: jlumbroso/free-disk-space@v1.3.1
202+
with:
203+
tool-cache: true
204+
android: true
205+
dotnet: true
206+
haskell: true
207+
large-packages: true
208+
swap-storage: true
209+
210+
# Move /var/lib/docker onto the larger ephemeral disk (do this before any docker pulls)
211+
- name: Maximize build space (move Docker storage)
212+
uses: easimon/maximize-build-space@v10
213+
with:
214+
root-reserve-mb: 4096
215+
remove-dotnet: 'true'
216+
remove-android: 'true'
217+
remove-haskell: 'true'
218+
remove-codeql: 'true'
219+
build-mount-path: '/var/lib/docker'
220+
221+
- name: Reset Docker daemon & prune
199222
run: |
200-
${FC} --version
201-
cmake --version
223+
sudo systemctl restart docker
224+
docker system prune -af || true
202225
203226
- name: Checkout
204-
uses: actions/checkout@v4
227+
uses: actions/checkout@v5
205228
with:
206229
fetch-depth: 1
207230
submodules: true
208231

209-
- name: Set all directories as git safe
210-
run: |
211-
git config --global --add safe.directory '*'
232+
- name: Pull NVHPC image
233+
run: docker pull "$NVHPC_IMAGE"
212234

213-
- name: Add python-is-python3 package
235+
# Run everything inside the NVHPC container
236+
- name: Build (inside NVHPC)
214237
run: |
215-
apt-get update
216-
apt-get install -y python-is-python3
238+
docker run --rm \
239+
-v "$GITHUB_WORKSPACE:/workspace" \
240+
-w /workspace \
241+
-e FC="$FC" \
242+
"$NVHPC_IMAGE" \
243+
bash -lc '
244+
set -euo pipefail
217245
218-
- name: Build and Install GFE
219-
run: |
220-
cmake -B build -DSKIP_OPENMP=ON -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install -DSKIP_ROBUST=YES
221-
cmake --build build --parallel 4 --target install
222-
cmake -B build -DSKIP_OPENMP=ON -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install -DSKIP_ROBUST=YES
223-
cmake --build build --parallel 4 --target install
246+
echo "== Versions =="
247+
${FC} --version || true
224248
225-
- name: Build and Run Tests target
226-
run: |
227-
cmake --build build --parallel 4 --target build-tests
228-
cmake --build build --parallel 4 --target tests || ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
249+
# Base NVHPC images are minimal; install what you need
250+
apt-get update
251+
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
252+
cmake git python-is-python3 ca-certificates pkg-config make
229253
230-
- name: Run Ctest
231-
run: ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
254+
cmake --version
255+
256+
echo "== Git safe.directory =="
257+
git config --global --add safe.directory "*"
258+
259+
echo "== Build pFUnit =="
260+
cmake -B build -DSKIP_OPENMP=ON -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install -DSKIP_ROBUST=YES
261+
cmake --build build --parallel 4 --target install
262+
cmake -B build -DSKIP_OPENMP=ON -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_PREFIX_PATH=../install -DSKIP_ROBUST=YES
263+
cmake --build build --parallel 4 --target install
264+
265+
echo "== Build Tests (CURRENTLY TURNED OFF DUE TO PFUNIT ISSUES) =="
266+
#cmake --build build --parallel 4 --target build-tests
267+
#cmake --build build --parallel 4 --target tests || ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
268+
269+
echo "== Run Tests (CURRENTLY TURNED OFF DUE TO PFUNIT ISSUES) =="
270+
#ctest --test-dir build --parallel 1 --output-on-failure --repeat until-pass:4
271+
'
232272
233273
- name: Archive log files on failure
234-
uses: actions/upload-artifact@v4
235274
if: failure()
275+
uses: actions/upload-artifact@v4
236276
with:
237277
name: logfiles-Nvidia
238278
path: |
@@ -259,7 +299,7 @@ jobs:
259299
cmake --version
260300
261301
- name: Checkout
262-
uses: actions/checkout@v4
302+
uses: actions/checkout@v5
263303
with:
264304
fetch-depth: 1
265305
submodules: true

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.24)
22
project (GFE
3-
VERSION 1.20.0
3+
VERSION 1.21.0
44
LANGUAGES Fortran
55
)
66
cmake_policy(SET CMP0074 NEW)

ChangeLog.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
55

66
## [Unreleased]
77

8+
## [1.21.0] - 2025-10-14
9+
10+
### Changed
11+
12+
- Update pFUnit to v4.14.0
13+
- Add an enclosing `<testsuites>` element an xml version/encoding element in the funit xml output. Makes the output readable by more CI systems (Jenkins, GitLab-CI).
14+
- Change CMake from using `PARENT_SCOPE` to `CACHE INTERNAL` as it seems in some setups using
15+
pFUnit via `FetchContent` the former does not work as expected.
16+
- Update some `COMMENT` lines in functions with double-quotes to avoid warnings
17+
- Fix parser on Windows for paths with different drive letters
18+
- Updates for CMake versions newer than 3.30.
19+
- Update NVHPC CI (build only)
20+
- Fix CMake for LLVM Flang
21+
- Update object library dependency handling
22+
- Update NVHPC CI build
23+
824
## [1.20.0] - 2025-09-30
925

1026
### Changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ This repo is intended to be a single fixture for the [Goddard Fortran Ecosystem]
99
| gFTL | v1.16.0 |
1010
| gFTL-shared | v1.11.0 |
1111
| fArgParse | v1.10.0 |
12-
| pFUnit | v4.13.0 |
12+
| pFUnit | v4.14.0 |
1313
| yaFyaml | v1.6.0 |
1414
| pFlogger | v1.17.0 |
1515

0 commit comments

Comments
 (0)