From 303be3c342e8a268478bfd4f79274eb2a0042967 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Sun, 13 Sep 2026 14:46:40 -0700 Subject: [PATCH 01/12] README: Update parallel build instructions for Caffeine `-DASSERT_MULTI_IMAGE -DASSERT_PARALLEL_CALLBACKS` are necessary to avoid linker conflicts caused by different Assert build configurations in libjulienne vs libcaffeine. Add a note clarifying that fpm `--link-flag` alone is insufficient on Linux. --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e1b65b6e4..852e96182 100644 --- a/README.md +++ b/README.md @@ -200,7 +200,7 @@ With `fpm` versions older than 0.13.0, replace `flang` with `flang-new` below. Compiler/Runtime |Tested Versions|Run Type|Example build/test commands (parallel examples use 2 images) ------------------|---------------|--------|------------------------------------------------------------ -LLVM/[Caffeine] |22 |parallel|`fpm test --compiler flang --flag "-O3 -DHAVE_MULTI_IMAGE_SUPPORT -fcoarray" --link-flag "-lcaffeine -lgasnet-smp-seq -L/lib"` +LLVM/[Caffeine] |22 |parallel|`fpm test --compiler flang --flag "-O3 -DHAVE_MULTI_IMAGE_SUPPORT -fcoarray -DASSERT_MULTI_IMAGE -DASSERT_PARALLEL_CALLBACKS" --link-flag "-lcaffeine -lgasnet-smp-seq -L/lib"` (\*) LLVM |20-22 |serial |`fpm test --compiler flang --flag -O3` LLVM |19 (+) |serial |`fpm test --compiler flang --flag "-O3 -mmlir -allow-assumed-rank"` GCC/[OpenCoarrays]|14-15 |parallel|`fpm test --compiler caf --runner "cafrun -n 2" --profile release` @@ -211,8 +211,11 @@ Intel |2025.2-2026.0 |parallel|`FOR_COARRAY_NUM_IMAGES=2 fpm test - LFortran |0.61-0.63 |serial |`fpm test --compiler lfortran --flag "--cpp --realloc-lhs-arrays --separate-compilation"` NAG |7.2 (-) |parallel|`NAGFORTRAN_NUM_IMAGES=2 fpm test --compiler nagfor --flag "-O4 -fpp -coarray"` -(+) Support for LLVM flang version 19 is deprecated, and may be removed in a future release. -(-) Using NAG on macOS requires an `fpm` installation containing [PR 1312](https://github.com/fortran-lang/fpm/pull/1312) +> (\*) Additional linker options might be required depending on platform. +On Linux, it may be necessary to prepend `-Wl,--start-group` to `--link-flag`, or manually add the libraries +to fpm.toml. +> (+) Support for LLVM flang version 19 is deprecated, and may be removed in a future release. +> (-) Using NAG on macOS requires an `fpm` installation containing [PR 1312](https://github.com/fortran-lang/fpm/pull/1312) The test output reports a test as skipped if there is a known issue that blocks the tested feature with the chosen compiler version or platform. Due to a From 9b8a13e98c9b888744de8f783eefdf947527f023 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 08:41:12 -0700 Subject: [PATCH 02/12] Rename source file using assert to .F90 --- src/julienne/{julienne_assert_s.f90 => julienne_assert_s.F90} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/julienne/{julienne_assert_s.f90 => julienne_assert_s.F90} (100%) diff --git a/src/julienne/julienne_assert_s.f90 b/src/julienne/julienne_assert_s.F90 similarity index 100% rename from src/julienne/julienne_assert_s.f90 rename to src/julienne/julienne_assert_s.F90 From 81ff9d1cb71ac1f869e23139e51802b4f88a853f Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 08:42:19 -0700 Subject: [PATCH 03/12] Rename remaining source files to .F90 extension for uniformity --- src/julienne/{julienne_assert_m.f90 => julienne_assert_m.F90} | 0 src/julienne/{julienne_bin_m.f90 => julienne_bin_m.F90} | 0 .../{julienne_command_line_m.f90 => julienne_command_line_m.F90} | 0 src/julienne/{julienne_file_m.f90 => julienne_file_m.F90} | 0 .../{julienne_github_ci_m.f90 => julienne_github_ci_m.F90} | 0 .../{julienne_github_ci_s.f90 => julienne_github_ci_s.F90} | 0 ...nne_test_description_m.f90 => julienne_test_description_m.F90} | 0 .../{julienne_test_fixture_m.f90 => julienne_test_fixture_m.F90} | 0 .../{julienne_test_harness_m.f90 => julienne_test_harness_m.F90} | 0 .../{julienne_test_result_m.f90 => julienne_test_result_m.F90} | 0 .../{julienne_test_suite_m.f90 => julienne_test_suite_m.F90} | 0 11 files changed, 0 insertions(+), 0 deletions(-) rename src/julienne/{julienne_assert_m.f90 => julienne_assert_m.F90} (100%) rename src/julienne/{julienne_bin_m.f90 => julienne_bin_m.F90} (100%) rename src/julienne/{julienne_command_line_m.f90 => julienne_command_line_m.F90} (100%) rename src/julienne/{julienne_file_m.f90 => julienne_file_m.F90} (100%) rename src/julienne/{julienne_github_ci_m.f90 => julienne_github_ci_m.F90} (100%) rename src/julienne/{julienne_github_ci_s.f90 => julienne_github_ci_s.F90} (100%) rename src/julienne/{julienne_test_description_m.f90 => julienne_test_description_m.F90} (100%) rename src/julienne/{julienne_test_fixture_m.f90 => julienne_test_fixture_m.F90} (100%) rename src/julienne/{julienne_test_harness_m.f90 => julienne_test_harness_m.F90} (100%) rename src/julienne/{julienne_test_result_m.f90 => julienne_test_result_m.F90} (100%) rename src/julienne/{julienne_test_suite_m.f90 => julienne_test_suite_m.F90} (100%) diff --git a/src/julienne/julienne_assert_m.f90 b/src/julienne/julienne_assert_m.F90 similarity index 100% rename from src/julienne/julienne_assert_m.f90 rename to src/julienne/julienne_assert_m.F90 diff --git a/src/julienne/julienne_bin_m.f90 b/src/julienne/julienne_bin_m.F90 similarity index 100% rename from src/julienne/julienne_bin_m.f90 rename to src/julienne/julienne_bin_m.F90 diff --git a/src/julienne/julienne_command_line_m.f90 b/src/julienne/julienne_command_line_m.F90 similarity index 100% rename from src/julienne/julienne_command_line_m.f90 rename to src/julienne/julienne_command_line_m.F90 diff --git a/src/julienne/julienne_file_m.f90 b/src/julienne/julienne_file_m.F90 similarity index 100% rename from src/julienne/julienne_file_m.f90 rename to src/julienne/julienne_file_m.F90 diff --git a/src/julienne/julienne_github_ci_m.f90 b/src/julienne/julienne_github_ci_m.F90 similarity index 100% rename from src/julienne/julienne_github_ci_m.f90 rename to src/julienne/julienne_github_ci_m.F90 diff --git a/src/julienne/julienne_github_ci_s.f90 b/src/julienne/julienne_github_ci_s.F90 similarity index 100% rename from src/julienne/julienne_github_ci_s.f90 rename to src/julienne/julienne_github_ci_s.F90 diff --git a/src/julienne/julienne_test_description_m.f90 b/src/julienne/julienne_test_description_m.F90 similarity index 100% rename from src/julienne/julienne_test_description_m.f90 rename to src/julienne/julienne_test_description_m.F90 diff --git a/src/julienne/julienne_test_fixture_m.f90 b/src/julienne/julienne_test_fixture_m.F90 similarity index 100% rename from src/julienne/julienne_test_fixture_m.f90 rename to src/julienne/julienne_test_fixture_m.F90 diff --git a/src/julienne/julienne_test_harness_m.f90 b/src/julienne/julienne_test_harness_m.F90 similarity index 100% rename from src/julienne/julienne_test_harness_m.f90 rename to src/julienne/julienne_test_harness_m.F90 diff --git a/src/julienne/julienne_test_result_m.f90 b/src/julienne/julienne_test_result_m.F90 similarity index 100% rename from src/julienne/julienne_test_result_m.f90 rename to src/julienne/julienne_test_result_m.F90 diff --git a/src/julienne/julienne_test_suite_m.f90 b/src/julienne/julienne_test_suite_m.F90 similarity index 100% rename from src/julienne/julienne_test_suite_m.f90 rename to src/julienne/julienne_test_suite_m.F90 From db33657f91d871be8685cc194a15e336ab943c62 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 09:14:00 -0700 Subject: [PATCH 04/12] Rename example/demo source files to .F90 for consistency --- demo/src/{specimen_m.f90 => specimen_m.F90} | 0 demo/src/{widget_m.f90 => widget_m.F90} | 0 demo/test/{driver.f90 => driver.F90} | 0 demo/test/{specimen_test_m.f90 => specimen_test_m.F90} | 0 demo/test/{widget_test_m.f90 => widget_test_m.F90} | 0 ...mand-line-argument.f90 => check-for-command-line-argument.F90} | 0 ...ommand-line-flag-value.f90 => get-command-line-flag-value.F90} | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename demo/src/{specimen_m.f90 => specimen_m.F90} (100%) rename demo/src/{widget_m.f90 => widget_m.F90} (100%) rename demo/test/{driver.f90 => driver.F90} (100%) rename demo/test/{specimen_test_m.f90 => specimen_test_m.F90} (100%) rename demo/test/{widget_test_m.f90 => widget_test_m.F90} (100%) rename example/command-line-parsing/{check-for-command-line-argument.f90 => check-for-command-line-argument.F90} (100%) rename example/command-line-parsing/{get-command-line-flag-value.f90 => get-command-line-flag-value.F90} (100%) diff --git a/demo/src/specimen_m.f90 b/demo/src/specimen_m.F90 similarity index 100% rename from demo/src/specimen_m.f90 rename to demo/src/specimen_m.F90 diff --git a/demo/src/widget_m.f90 b/demo/src/widget_m.F90 similarity index 100% rename from demo/src/widget_m.f90 rename to demo/src/widget_m.F90 diff --git a/demo/test/driver.f90 b/demo/test/driver.F90 similarity index 100% rename from demo/test/driver.f90 rename to demo/test/driver.F90 diff --git a/demo/test/specimen_test_m.f90 b/demo/test/specimen_test_m.F90 similarity index 100% rename from demo/test/specimen_test_m.f90 rename to demo/test/specimen_test_m.F90 diff --git a/demo/test/widget_test_m.f90 b/demo/test/widget_test_m.F90 similarity index 100% rename from demo/test/widget_test_m.f90 rename to demo/test/widget_test_m.F90 diff --git a/example/command-line-parsing/check-for-command-line-argument.f90 b/example/command-line-parsing/check-for-command-line-argument.F90 similarity index 100% rename from example/command-line-parsing/check-for-command-line-argument.f90 rename to example/command-line-parsing/check-for-command-line-argument.F90 diff --git a/example/command-line-parsing/get-command-line-flag-value.f90 b/example/command-line-parsing/get-command-line-flag-value.F90 similarity index 100% rename from example/command-line-parsing/get-command-line-flag-value.f90 rename to example/command-line-parsing/get-command-line-flag-value.F90 From 86d9e08a46b5b4e0d88bb4e71ef355d43ec2f714 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 08:47:27 -0700 Subject: [PATCH 05/12] README: Update documentation -fpp/-cpp options should no longer be required for Intel and NAG --- .github/workflows/build.yml | 4 ++-- README.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcc88a047..f98e8fda3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -248,12 +248,12 @@ jobs: echo "FPM_FC=ifx" >> "$GITHUB_ENV" if [[ "$COMPILER_VERSION" = "latest-coarray" ]] ; then echo "FOR_COARRAY_NUM_IMAGES=4" >> "$GITHUB_ENV" - echo "FFLAGS=-coarray -fpp -g -traceback $FFLAGS" >> "$GITHUB_ENV" + echo "FFLAGS=-coarray -g -traceback $FFLAGS" >> "$GITHUB_ENV" #echo "FOR_COARRAY_MPI_VERBOSE=1" >> "$GITHUB_ENV" #echo "FOR_COARRAY_DEBUG_STARTUP=1" >> "$GITHUB_ENV" else # issue #162: ifx coarray support is usually disabled because it hides runtime failures - echo "FFLAGS=-DHAVE_MULTI_IMAGE_SUPPORT=0 -fpp -g -traceback $FFLAGS" >> "$GITHUB_ENV" + echo "FFLAGS=-DHAVE_MULTI_IMAGE_SUPPORT=0 -g -traceback $FFLAGS" >> "$GITHUB_ENV" fi elif test "$FC" = "lfortran" ; then echo "FPM_FC=lfortran" >> "$GITHUB_ENV" diff --git a/README.md b/README.md index 852e96182..7376a9e63 100644 --- a/README.md +++ b/README.md @@ -200,16 +200,16 @@ With `fpm` versions older than 0.13.0, replace `flang` with `flang-new` below. Compiler/Runtime |Tested Versions|Run Type|Example build/test commands (parallel examples use 2 images) ------------------|---------------|--------|------------------------------------------------------------ -LLVM/[Caffeine] |22 |parallel|`fpm test --compiler flang --flag "-O3 -DHAVE_MULTI_IMAGE_SUPPORT -fcoarray -DASSERT_MULTI_IMAGE -DASSERT_PARALLEL_CALLBACKS" --link-flag "-lcaffeine -lgasnet-smp-seq -L/lib"` (\*) +LLVM/[Caffeine] |22 |parallel|`fpm test --compiler flang --flag "-O3 -DHAVE_MULTI_IMAGE_SUPPORT -fcoarray -DASSERT_MULTI_IMAGE" --link-flag "-lcaffeine -lgasnet-smp-seq -L/lib"` (\*) LLVM |20-22 |serial |`fpm test --compiler flang --flag -O3` LLVM |19 (+) |serial |`fpm test --compiler flang --flag "-O3 -mmlir -allow-assumed-rank"` GCC/[OpenCoarrays]|14-15 |parallel|`fpm test --compiler caf --runner "cafrun -n 2" --profile release` GCC/[OpenCoarrays]|13 |parallel|`fpm test --compiler caf --runner "cafrun -n 2" --profile release --flag -ffree-line-length-none` GCC |14-16 |serial |`fpm test --compiler gfortran --profile release` GCC |13 |serial |`fpm test --compiler gfortran --profile release --flag -ffree-line-length-none` -Intel |2025.2-2026.0 |parallel|`FOR_COARRAY_NUM_IMAGES=2 fpm test --compiler ifx --flag "-fpp -O3 -coarray" --profile release` +Intel |2025.2-2026.0 |parallel|`FOR_COARRAY_NUM_IMAGES=2 fpm test --compiler ifx --flag "-O3 -coarray" --profile release` LFortran |0.61-0.63 |serial |`fpm test --compiler lfortran --flag "--cpp --realloc-lhs-arrays --separate-compilation"` -NAG |7.2 (-) |parallel|`NAGFORTRAN_NUM_IMAGES=2 fpm test --compiler nagfor --flag "-O4 -fpp -coarray"` +NAG |7.2 (-) |parallel|`NAGFORTRAN_NUM_IMAGES=2 fpm test --compiler nagfor --flag "-O4 -coarray"` > (\*) Additional linker options might be required depending on platform. On Linux, it may be necessary to prepend `-Wl,--start-group` to `--link-flag`, or manually add the libraries From cd216e6a4650ede1ff00c37ac6f79ed9111b3453 Mon Sep 17 00:00:00 2001 From: bonachea Date: Mon, 14 Sep 2026 09:39:23 -0700 Subject: [PATCH 06/12] Fix compile errors with NAG 7.2 NAG rejects empty source files, and empty modules/submodules. Deploy a macro to uniformly handle "stubbing out" module files. NAG 7.2.7251 x64/Linux crashes at compile and/or runtime with -O2 or higher on the file_t test. --- README.md | 2 +- example/pure-printing/write_stuff_m.F90 | 7 ++++--- example/pure-printing/write_stuff_s.F90 | 7 ++++--- include/language-support.F90 | 4 ++++ src/julienne/julienne_multi_image_s.F90 | 6 +++--- src/julienne/julienne_stop_and_print_m.F90 | 8 ++++---- src/julienne/julienne_stop_and_print_s.F90 | 9 ++++----- test/modules/character_stop_code_test_m.F90 | 6 ++---- 8 files changed, 26 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 7376a9e63..766e82019 100644 --- a/README.md +++ b/README.md @@ -209,7 +209,7 @@ GCC |14-16 |serial |`fpm test --compiler gfortran --prof GCC |13 |serial |`fpm test --compiler gfortran --profile release --flag -ffree-line-length-none` Intel |2025.2-2026.0 |parallel|`FOR_COARRAY_NUM_IMAGES=2 fpm test --compiler ifx --flag "-O3 -coarray" --profile release` LFortran |0.61-0.63 |serial |`fpm test --compiler lfortran --flag "--cpp --realloc-lhs-arrays --separate-compilation"` -NAG |7.2 (-) |parallel|`NAGFORTRAN_NUM_IMAGES=2 fpm test --compiler nagfor --flag "-O4 -coarray"` +NAG |7.2 (-) |parallel|`NAGFORTRAN_NUM_IMAGES=2 fpm test --compiler nagfor --flag "-O1 -coarray"` > (\*) Additional linker options might be required depending on platform. On Linux, it may be necessary to prepend `-Wl,--start-group` to `--link-flag`, or manually add the libraries diff --git a/example/pure-printing/write_stuff_m.F90 b/example/pure-printing/write_stuff_m.F90 index 116cb976d..9e9001369 100644 --- a/example/pure-printing/write_stuff_m.F90 +++ b/example/pure-printing/write_stuff_m.F90 @@ -3,8 +3,8 @@ #include "language-support.F90" -#if HAVE_STOP_AND_PRINT_SUPPORT module write_stuff_m +#if HAVE_STOP_AND_PRINT_SUPPORT !! Demonstrate a derived type that is writable to a stop via Julienne's stop_and_print utility use julienne_m, only : writable_t implicit none @@ -27,6 +27,7 @@ module subroutine write_formatted(self, unit, edit_descriptor, v_list, iostat, i end subroutine end interface - -end module +#else + EMPTY_MODULE_ANCESTOR #endif +end module diff --git a/example/pure-printing/write_stuff_s.F90 b/example/pure-printing/write_stuff_s.F90 index 06b265711..568d17609 100644 --- a/example/pure-printing/write_stuff_s.F90 +++ b/example/pure-printing/write_stuff_s.F90 @@ -3,8 +3,8 @@ #include "language-support.F90" -#if HAVE_STOP_AND_PRINT_SUPPORT submodule(write_stuff_m) write_stuff_s +#if HAVE_STOP_AND_PRINT_SUPPORT implicit none contains @@ -16,6 +16,7 @@ write(unit,'(a)' ) "}" // new_line('') iostat = 0 end procedure - -end submodule +#else + EMPTY_MODULE_SUBMODULE #endif +end submodule diff --git a/include/language-support.F90 b/include/language-support.F90 index 7b3e204a1..1948c2e5a 100644 --- a/include/language-support.F90 +++ b/include/language-support.F90 @@ -63,4 +63,8 @@ # endif #endif +! Incantation to allow a conforming empty module and submodule +#define EMPTY_MODULE_ANCESTOR private ; interface ; module subroutine dummy ; end subroutine ; end interface +#define EMPTY_MODULE_SUBMODULE contains ; module procedure dummy ; end procedure + #endif diff --git a/src/julienne/julienne_multi_image_s.F90 b/src/julienne/julienne_multi_image_s.F90 index 516589187..825af6f22 100644 --- a/src/julienne/julienne_multi_image_s.F90 +++ b/src/julienne/julienne_multi_image_s.F90 @@ -46,7 +46,7 @@ if (associated(julienne_sync_all)) then call julienne_sync_all() else - ; ! assume single-image, no-op + ! assume single-image, no-op call_assert(internal_num_images() == 1) end if # else @@ -61,7 +61,7 @@ if (associated(julienne_co_sum_integer)) then call julienne_co_sum_integer(a, result_image) else - ; ! assume single-image, no-op + ! assume single-image, no-op call_assert(internal_num_images() == 1) end if # else @@ -79,7 +79,7 @@ if (associated(julienne_error_stop)) then call julienne_error_stop(stop_code_char) else - ; ! deliberate fall-thru + ! deliberate fall-thru end if # endif error stop stop_code_char diff --git a/src/julienne/julienne_stop_and_print_m.F90 b/src/julienne/julienne_stop_and_print_m.F90 index 539fec4dc..67b5b5287 100644 --- a/src/julienne/julienne_stop_and_print_m.F90 +++ b/src/julienne/julienne_stop_and_print_m.F90 @@ -3,9 +3,8 @@ #include "language-support.F90" -#if HAVE_STOP_AND_PRINT_SUPPORT - module julienne_stop_and_print_m +#if HAVE_STOP_AND_PRINT_SUPPORT !! Define a pure subroutine that formats and prints various data types during error termination use julienne_string_m, only : string_t implicit none @@ -66,6 +65,7 @@ pure module function character_stop_code(stuff) result(stop_code) end function end interface - -end module julienne_stop_and_print_m +#else + EMPTY_MODULE_ANCESTOR #endif +end module julienne_stop_and_print_m diff --git a/src/julienne/julienne_stop_and_print_s.F90 b/src/julienne/julienne_stop_and_print_s.F90 index a7f580b8c..dc3c8693d 100644 --- a/src/julienne/julienne_stop_and_print_s.F90 +++ b/src/julienne/julienne_stop_and_print_s.F90 @@ -3,9 +3,8 @@ #include "language-support.F90" -#if HAVE_STOP_AND_PRINT_SUPPORT - submodule(julienne_stop_and_print_m) julienne_stop_and_print_s +#if HAVE_STOP_AND_PRINT_SUPPORT use julienne_string_m, only : operator(.csv.), operator(.separatedBy.) use julienne_file_m, only : file_t use julienne_multi_image_m, only : internal_error_stop @@ -187,7 +186,7 @@ pure subroutine stop_and_print_header_data_footer(data, header, footer) end associate end select end procedure - -end submodule julienne_stop_and_print_s - +#else + EMPTY_MODULE_SUBMODULE #endif +end submodule julienne_stop_and_print_s diff --git a/test/modules/character_stop_code_test_m.F90 b/test/modules/character_stop_code_test_m.F90 index c05c92194..36e2a0d8e 100644 --- a/test/modules/character_stop_code_test_m.F90 +++ b/test/modules/character_stop_code_test_m.F90 @@ -3,9 +3,8 @@ #include "language-support.F90" -#if HAVE_STOP_AND_PRINT_SUPPORT - module character_stop_code_test_m +#if HAVE_STOP_AND_PRINT_SUPPORT !! Check data partitioning across bins use julienne_m, only : & file_t & @@ -557,6 +556,5 @@ subroutine write_formatted(self, unit, edit_descriptor, v_list, iostat, iomsg) write(unit,'(a)') "written stuff" end subroutine -end module character_stop_code_test_m - #endif +end module character_stop_code_test_m From 7dcc75c9f3a7220270f7bc77fcc7608604e93d75 Mon Sep 17 00:00:00 2001 From: bonachea Date: Mon, 14 Sep 2026 11:11:25 -0700 Subject: [PATCH 07/12] Parallel callbacks: Ensure the procedure pointers are initialized Module save procedure pointers initially have undefined association status, and we were incorrectly relying on equivalence to unassociated. This was causing crashes on NAG. --- src/julienne/julienne_multi_image_m.F90 | 10 +++++----- test/modules/multi_image_test_m.F90 | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/julienne/julienne_multi_image_m.F90 b/src/julienne/julienne_multi_image_m.F90 index 00ecc0d2f..b94f5d146 100644 --- a/src/julienne/julienne_multi_image_m.F90 +++ b/src/julienne/julienne_multi_image_m.F90 @@ -51,7 +51,7 @@ function julienne_this_image_interface() result(this_image_id) integer :: this_image_id end function end interface - procedure(julienne_this_image_interface), pointer :: julienne_this_image + procedure(julienne_this_image_interface), pointer :: julienne_this_image => null() abstract interface function julienne_num_images_interface() result(image_count) @@ -59,14 +59,14 @@ function julienne_num_images_interface() result(image_count) integer :: image_count end function end interface - procedure(julienne_num_images_interface), pointer :: julienne_num_images + procedure(julienne_num_images_interface), pointer :: julienne_num_images => null() abstract interface subroutine julienne_sync_all_interface() implicit none end subroutine end interface - procedure(julienne_sync_all_interface), pointer :: julienne_sync_all + procedure(julienne_sync_all_interface), pointer :: julienne_sync_all => null() abstract interface subroutine julienne_co_sum_integer_interface(a, result_image) @@ -75,7 +75,7 @@ subroutine julienne_co_sum_integer_interface(a, result_image) integer, intent(in), optional :: result_image end subroutine end interface - procedure(julienne_co_sum_integer_interface), pointer :: julienne_co_sum_integer + procedure(julienne_co_sum_integer_interface), pointer :: julienne_co_sum_integer => null() abstract interface pure subroutine julienne_error_stop_interface(stop_code_char) @@ -83,7 +83,7 @@ pure subroutine julienne_error_stop_interface(stop_code_char) character(len=*), intent(in) :: stop_code_char end subroutine end interface - procedure(julienne_error_stop_interface), pointer :: julienne_error_stop + procedure(julienne_error_stop_interface), pointer :: julienne_error_stop => null() #endif diff --git a/test/modules/multi_image_test_m.F90 b/test/modules/multi_image_test_m.F90 index df516e52a..f62b82f6f 100644 --- a/test/modules/multi_image_test_m.F90 +++ b/test/modules/multi_image_test_m.F90 @@ -6,8 +6,8 @@ ! We normally only test the JULIENNE_PARALLEL_CALLBACKS feature ! when HAVE_MULTI_IMAGE_SUPPORT is also enabled, but this test ! can also be force-enabled via -DTEST_PARALLEL_CALLBACKS -#if JULIENNE_PARALLEL_CALLBACKS && HAVE_MULTI_IMAGE_SUPPORT -#define TEST_PARALLEL_CALLBACKS 1 +#ifndef TEST_PARALLEL_CALLBACKS +#define TEST_PARALLEL_CALLBACKS (JULIENNE_PARALLEL_CALLBACKS && HAVE_MULTI_IMAGE_SUPPORT) #endif module multi_image_test_m From 6396dc9bd7bf0f8bc422f33fc49905b09b8a9c98 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 16:21:59 -0700 Subject: [PATCH 08/12] Rename include/language-support.F90 -> include/julienne-language-support.F90 This header file is injected into the include path of clients by fpm, so file names need to use a unique prefix. In particular, this was already causing a file name collision with Caffeine (which also has a `language-support.F90` header), which only went unnoticed until now because the contents were sufficiently similar. --- example/pure-printing/pure-stop-and-print.F90 | 2 +- example/pure-printing/write_stuff_m.F90 | 2 +- example/pure-printing/write_stuff_s.F90 | 2 +- include/{language-support.F90 => julienne-language-support.F90} | 0 src/julienne/julienne_command_line_s.F90 | 2 +- src/julienne/julienne_multi_image_s.F90 | 2 +- src/julienne/julienne_stop_and_print_m.F90 | 2 +- src/julienne/julienne_stop_and_print_s.F90 | 2 +- src/julienne/julienne_test_description_s.F90 | 2 +- src/julienne/julienne_test_diagnosis_m.F90 | 2 +- src/julienne/julienne_test_diagnosis_s.F90 | 2 +- src/julienne/julienne_test_harness_s.F90 | 2 +- src/julienne/julienne_test_m.F90 | 2 +- src/julienne/julienne_test_result_s.F90 | 2 +- src/julienne/julienne_test_s.F90 | 2 +- src/julienne_m.F90 | 2 +- test/driver.F90 | 2 +- test/idiomatic_assertion_failure_test.F90 | 2 +- test/logical_assertion_failure_test.F90 | 2 +- test/modules/assert_test_m.F90 | 2 +- test/modules/bin_test_m.F90 | 2 +- test/modules/character_stop_code_test_m.F90 | 2 +- test/modules/command_line_test_m.F90 | 2 +- test/modules/file_test_m.F90 | 2 +- test/modules/formats_test_m.F90 | 2 +- test/modules/multi_image_test_m.F90 | 2 +- test/modules/string_test_m.F90 | 2 +- test/modules/test_description_test_m.F90 | 2 +- test/modules/test_diagnosis_test_m.F90 | 2 +- test/modules/test_result_test_m.F90 | 2 +- test/modules/test_test_m.F90 | 2 +- test/stop_and_print_test.F90 | 2 +- 32 files changed, 31 insertions(+), 31 deletions(-) rename include/{language-support.F90 => julienne-language-support.F90} (100%) diff --git a/example/pure-printing/pure-stop-and-print.F90 b/example/pure-printing/pure-stop-and-print.F90 index b7ed1902a..a60421007 100644 --- a/example/pure-printing/pure-stop-and-print.F90 +++ b/example/pure-printing/pure-stop-and-print.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2026, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" program pure_stop_and_print #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/example/pure-printing/write_stuff_m.F90 b/example/pure-printing/write_stuff_m.F90 index 9e9001369..f0479fe47 100644 --- a/example/pure-printing/write_stuff_m.F90 +++ b/example/pure-printing/write_stuff_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2026, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module write_stuff_m #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/example/pure-printing/write_stuff_s.F90 b/example/pure-printing/write_stuff_s.F90 index 568d17609..f03789e21 100644 --- a/example/pure-printing/write_stuff_s.F90 +++ b/example/pure-printing/write_stuff_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2026, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(write_stuff_m) write_stuff_s #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/include/language-support.F90 b/include/julienne-language-support.F90 similarity index 100% rename from include/language-support.F90 rename to include/julienne-language-support.F90 diff --git a/src/julienne/julienne_command_line_s.F90 b/src/julienne/julienne_command_line_s.F90 index 33f3b41ac..74dfcecff 100644 --- a/src/julienne/julienne_command_line_s.F90 +++ b/src/julienne/julienne_command_line_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2026, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_command_line_m) julienne_command_line_s implicit none diff --git a/src/julienne/julienne_multi_image_s.F90 b/src/julienne/julienne_multi_image_s.F90 index 825af6f22..cfcd2bad8 100644 --- a/src/julienne/julienne_multi_image_s.F90 +++ b/src/julienne/julienne_multi_image_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" #include "assert_macros.h" submodule(julienne_multi_image_m) julienne_multi_image_s diff --git a/src/julienne/julienne_stop_and_print_m.F90 b/src/julienne/julienne_stop_and_print_m.F90 index 67b5b5287..de61d6239 100644 --- a/src/julienne/julienne_stop_and_print_m.F90 +++ b/src/julienne/julienne_stop_and_print_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c), The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module julienne_stop_and_print_m #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/src/julienne/julienne_stop_and_print_s.F90 b/src/julienne/julienne_stop_and_print_s.F90 index dc3c8693d..d090e8623 100644 --- a/src/julienne/julienne_stop_and_print_s.F90 +++ b/src/julienne/julienne_stop_and_print_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c), The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_stop_and_print_m) julienne_stop_and_print_s #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/src/julienne/julienne_test_description_s.F90 b/src/julienne/julienne_test_description_s.F90 index 0803ff262..1c0d4ae53 100644 --- a/src/julienne/julienne_test_description_s.F90 +++ b/src/julienne/julienne_test_description_s.F90 @@ -3,7 +3,7 @@ #include "julienne-assert-macros.h" #include "assert_macros.h" -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_test_description_m) julienne_test_description_s use assert_m diff --git a/src/julienne/julienne_test_diagnosis_m.F90 b/src/julienne/julienne_test_diagnosis_m.F90 index 5b39c01f2..b38ea8a92 100644 --- a/src/julienne/julienne_test_diagnosis_m.F90 +++ b/src/julienne/julienne_test_diagnosis_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module julienne_test_diagnosis_m !! Define abstractions, defined operations, and procedures for writing correctness checks diff --git a/src/julienne/julienne_test_diagnosis_s.F90 b/src/julienne/julienne_test_diagnosis_s.F90 index 514c2338e..c9c500d23 100644 --- a/src/julienne/julienne_test_diagnosis_s.F90 +++ b/src/julienne/julienne_test_diagnosis_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" #include "assert_macros.h" submodule(julienne_test_diagnosis_m) julienne_test_diagnosis_s diff --git a/src/julienne/julienne_test_harness_s.F90 b/src/julienne/julienne_test_harness_s.F90 index 5e0c68223..e28c26310 100644 --- a/src/julienne/julienne_test_harness_s.F90 +++ b/src/julienne/julienne_test_harness_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_test_harness_m) julienne_test_harness_s use iso_fortran_env, only : int64, real64 diff --git a/src/julienne/julienne_test_m.F90 b/src/julienne/julienne_test_m.F90 index ba27093c0..6bd85abdc 100644 --- a/src/julienne/julienne_test_m.F90 +++ b/src/julienne/julienne_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module julienne_test_m !! Define an abstract test_t type with deferred bindings ("subject" and "results") diff --git a/src/julienne/julienne_test_result_s.F90 b/src/julienne/julienne_test_result_s.F90 index fbfd7f7aa..ef88f327b 100644 --- a/src/julienne/julienne_test_result_s.F90 +++ b/src/julienne/julienne_test_result_s.F90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt #include "julienne-assert-macros.h" -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_test_result_m) julienne_test_result_s #if ASSERTIONS diff --git a/src/julienne/julienne_test_s.F90 b/src/julienne/julienne_test_s.F90 index ffb3691c4..3f97b2222 100644 --- a/src/julienne/julienne_test_s.F90 +++ b/src/julienne/julienne_test_s.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" submodule(julienne_test_m) julienne_test_s use julienne_test_description_m, only : filter diff --git a/src/julienne_m.F90 b/src/julienne_m.F90 index 0bb77a5ab..2a9658c02 100644 --- a/src/julienne_m.F90 +++ b/src/julienne_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module julienne_m !! Global aggregation of all public entities diff --git a/test/driver.F90 b/test/driver.F90 index f7651c671..a85ea7c46 100644 --- a/test/driver.F90 +++ b/test/driver.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" program test_suite_driver !! Julienne test-suite driver diff --git a/test/idiomatic_assertion_failure_test.F90 b/test/idiomatic_assertion_failure_test.F90 index 9556a4b7b..b8193e5a7 100644 --- a/test/idiomatic_assertion_failure_test.F90 +++ b/test/idiomatic_assertion_failure_test.F90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt #include "julienne-assert-macros.h" -#include "language-support.F90" +#include "julienne-language-support.F90" program idiomatic_assertion_failure_test !! Conditionally test an assertion that is hardwired to fail. diff --git a/test/logical_assertion_failure_test.F90 b/test/logical_assertion_failure_test.F90 index 03a5f7930..86a06768a 100644 --- a/test/logical_assertion_failure_test.F90 +++ b/test/logical_assertion_failure_test.F90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt #include "julienne-assert-macros.h" -#include "language-support.F90" +#include "julienne-language-support.F90" program logical_assertion_failure_test !! Conditionally test an assertion that is hardwired to fail. diff --git a/test/modules/assert_test_m.F90 b/test/modules/assert_test_m.F90 index f5f988daf..3f7898cde 100644 --- a/test/modules/assert_test_m.F90 +++ b/test/modules/assert_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" #include "julienne-assert-macros.h" #include "assert_macros.h" diff --git a/test/modules/bin_test_m.F90 b/test/modules/bin_test_m.F90 index c1dea2e85..f9781811a 100644 --- a/test/modules/bin_test_m.F90 +++ b/test/modules/bin_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module bin_test_m !! Check data partitioning across bins diff --git a/test/modules/character_stop_code_test_m.F90 b/test/modules/character_stop_code_test_m.F90 index 36e2a0d8e..263e76a85 100644 --- a/test/modules/character_stop_code_test_m.F90 +++ b/test/modules/character_stop_code_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module character_stop_code_test_m #if HAVE_STOP_AND_PRINT_SUPPORT diff --git a/test/modules/command_line_test_m.F90 b/test/modules/command_line_test_m.F90 index 418b61211..102e77317 100644 --- a/test/modules/command_line_test_m.F90 +++ b/test/modules/command_line_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module command_line_test_m !! Verify object pattern asbtract parent diff --git a/test/modules/file_test_m.F90 b/test/modules/file_test_m.F90 index 6d2194cd9..6ce8ce882 100644 --- a/test/modules/file_test_m.F90 +++ b/test/modules/file_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module file_test_m !! Check data partitioning across files diff --git a/test/modules/formats_test_m.F90 b/test/modules/formats_test_m.F90 index f7f7d88ac..9e282aef9 100644 --- a/test/modules/formats_test_m.F90 +++ b/test/modules/formats_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module formats_test_m !! Verify that format strings provide the desired formatting diff --git a/test/modules/multi_image_test_m.F90 b/test/modules/multi_image_test_m.F90 index f62b82f6f..5af3625d5 100644 --- a/test/modules/multi_image_test_m.F90 +++ b/test/modules/multi_image_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" ! We normally only test the JULIENNE_PARALLEL_CALLBACKS feature ! when HAVE_MULTI_IMAGE_SUPPORT is also enabled, but this test diff --git a/test/modules/string_test_m.F90 b/test/modules/string_test_m.F90 index 20f0857e2..9b9774758 100644 --- a/test/modules/string_test_m.F90 +++ b/test/modules/string_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module string_test_m use assert_m, only : assert diff --git a/test/modules/test_description_test_m.F90 b/test/modules/test_description_test_m.F90 index bf16407ba..418bf092c 100644 --- a/test/modules/test_description_test_m.F90 +++ b/test/modules/test_description_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module test_description_test_m !! Verify test_description_t object behavior diff --git a/test/modules/test_diagnosis_test_m.F90 b/test/modules/test_diagnosis_test_m.F90 index 218b99820..4cba8bd2a 100644 --- a/test/modules/test_diagnosis_test_m.F90 +++ b/test/modules/test_diagnosis_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module test_diagnosis_test_m !! Verify test_diagnosis_t object behavior diff --git a/test/modules/test_result_test_m.F90 b/test/modules/test_result_test_m.F90 index ecb3b17fa..d87e569bc 100644 --- a/test/modules/test_result_test_m.F90 +++ b/test/modules/test_result_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module test_result_test_m !! Verify test_result_t object behavior diff --git a/test/modules/test_test_m.F90 b/test/modules/test_test_m.F90 index 798fecad6..01b9d74a7 100644 --- a/test/modules/test_test_m.F90 +++ b/test/modules/test_test_m.F90 @@ -1,7 +1,7 @@ ! Copyright (c) 2024-2025, The Regents of the University of California and Sourcery Institute ! Terms of use are as specified in LICENSE.txt -#include "language-support.F90" +#include "julienne-language-support.F90" module test_test_m !! Conditionally test that failure of a test on only one image is reported as a test failure diff --git a/test/stop_and_print_test.F90 b/test/stop_and_print_test.F90 index 33c43c672..2f99ba004 100644 --- a/test/stop_and_print_test.F90 +++ b/test/stop_and_print_test.F90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt #include "julienne-assert-macros.h" -#include "language-support.F90" +#include "julienne-language-support.F90" program stop_and_print_in_pure_procedure #if HAVE_STOP_AND_PRINT_SUPPORT From 31e6d38d5fa4b3a7bbce73a48a5663b4eaf44a5a Mon Sep 17 00:00:00 2001 From: bonachea Date: Mon, 14 Sep 2026 11:14:32 -0700 Subject: [PATCH 09/12] CI: Add coverage for LFortran 0.66 --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f98e8fda3..0b9772db4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -133,10 +133,6 @@ jobs: compiler: lfortran version: 0.62.0 container: phhargrove/lfortran:0.62.0-1 - - os: ubuntu-24.04 - compiler: lfortran - version: 0.63.0 - container: phhargrove/lfortran:0.63.0-1 # https://github.com/lfortran/lfortran/pkgs/container/lfortran - os: ubuntu-22.04 @@ -151,6 +147,10 @@ jobs: compiler: lfortran version: 0.65.0 container: ghcr.io/lfortran/lfortran:v0.65.0 + - os: ubuntu-22.04 + compiler: lfortran + version: 0.66.0 + container: ghcr.io/lfortran/lfortran:v0.66.0 - os: ubuntu-22.04 compiler: lfortran version: latest From c1213f02fc8c98b42bd45a9b1dfb88c80628e7d1 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 15:26:10 -0700 Subject: [PATCH 10/12] CI: Add flang-23 Linux/ARM64 coverage --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b9772db4..3a040b0ca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,6 +65,11 @@ jobs: container: snowstep/llvm:ubuntu-22.04-latest # https://hub.docker.com/r/phhargrove/llvm-flang/tags + - os: ubuntu-24.04-arm + compiler: flang + version: 23 + container: phhargrove/llvm-flang:23.1.0-latest-arm64 + - os: ubuntu-24.04 compiler: flang version: 23 From 4a140ec0ef66a87e340e5898319dd3acd9ef1a35 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 15:34:27 -0700 Subject: [PATCH 11/12] CI: Adjust Build FPM action Ensure FPM build artifacts land in an isolated directory --- .github/workflows/build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a040b0ca..b7d12832c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -283,10 +283,11 @@ jobs: if: ${{ runner.os == 'Linux' && runner.arch == 'ARM64' }} run: | export FPM_VERSION=0.13.0 + mkdir -p fpm-temp/bin + cd fpm-temp curl --retry 5 -LOsS https://github.com/fortran-lang/fpm/releases/download/v$FPM_VERSION/fpm-$FPM_VERSION.F90 - mkdir fpm-temp - gfortran-14 -o fpm-temp/fpm fpm-$FPM_VERSION.F90 - echo "PATH=`pwd`/fpm-temp:${PATH}" >> "$GITHUB_ENV" + gfortran-14 -o bin/fpm fpm-$FPM_VERSION.F90 + echo "PATH=$PWD/bin:${PATH}" >> "$GITHUB_ENV" - name: Version info run: | From 74dab5305119a03dc81bb53a015e63e0bf72d459 Mon Sep 17 00:00:00 2001 From: Dan Bonachea Date: Mon, 14 Sep 2026 08:43:00 -0700 Subject: [PATCH 12/12] Bump Assert to version 3.2.0 --- fpm.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpm.toml b/fpm.toml index 3b94d6b03..44f1fa2ef 100644 --- a/fpm.toml +++ b/fpm.toml @@ -1,7 +1,7 @@ name = "julienne" [dependencies] -assert = {git = "https://github.com/berkeleylab/assert", tag = "3.1.2"} +assert = {git = "https://github.com/berkeleylab/assert", tag = "3.2.0"} [install] library = true