From 9c6e173c5d8483e9830b6752bb0d4a0dcd539a55 Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Thu, 7 May 2026 20:14:01 +0000 Subject: [PATCH 1/4] parallel-libs: update petsc to 3.25.1 - petsc: 3.25.0 -> 3.25.1 upstream: release-monitoring.org/petsc Command: `misc/check_for_package_updates.py -v -o markdown petsc --update` Signed-off-by: Adrian Reber --- components/parallel-libs/petsc/SPECS/petsc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/parallel-libs/petsc/SPECS/petsc.spec b/components/parallel-libs/petsc/SPECS/petsc.spec index 6e9e2fc856..577c3c72f5 100644 --- a/components/parallel-libs/petsc/SPECS/petsc.spec +++ b/components/parallel-libs/petsc/SPECS/petsc.spec @@ -25,7 +25,7 @@ Name: %{pname}-%{compiler_family}-%{mpi_family}%{PROJ_DELIM} Summary: Portable Extensible Toolkit for Scientific Computation License: 2-clause BSD Group: %{PROJ_NAME}/parallel-libs -Version: 3.25.0 +Version: 3.25.1 Release: 1%{?dist} Source0: https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-%{version}.tar.gz Url: http://www.mcs.anl.gov/petsc/ From 7f99d52cc4187dd6cfbbe828895c3078a8d32bc9 Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Thu, 7 May 2026 20:14:07 +0000 Subject: [PATCH 2/4] parallel-libs: update slepc to 3.25.1 - slepc: 3.25.0 -> 3.25.1 upstream: release-monitoring.org/slepc Command: `misc/check_for_package_updates.py -v -o markdown slepc --update` Signed-off-by: Adrian Reber --- components/parallel-libs/slepc/SPECS/slepc.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/parallel-libs/slepc/SPECS/slepc.spec b/components/parallel-libs/slepc/SPECS/slepc.spec index d773d5078a..6ba7ea0480 100644 --- a/components/parallel-libs/slepc/SPECS/slepc.spec +++ b/components/parallel-libs/slepc/SPECS/slepc.spec @@ -21,7 +21,7 @@ %define pname slepc Name: %{pname}-%{compiler_family}-%{mpi_family}%{PROJ_DELIM} -Version: 3.25.0 +Version: 3.25.1 Release: 1 Summary: A library for solving large scale sparse eigenvalue problems License: LGPL-3.0 From 4239238189ef2d22f487e71b2e8623b5d191b855 Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Wed, 25 Mar 2026 09:31:05 +0000 Subject: [PATCH 3/4] serial-libs: update plasma to 25.5.27 - plasma: 24.8.7 -> 25.5.27 upstream: icl-utk-edu/plasma Command: `misc/check_for_package_updates.py -v -o markdown plasma --update` Adapt spec to new tar archive location and remove upstreamed patch. Signed-off-by: Adrian Reber (cherry picked from commit fe286d014fe47980cc0960804c845a7f4aaef8c1) --- .../serial-libs/plasma/SOURCES/48.patch | 72 ------------------- .../serial-libs/plasma/SPECS/plasma.spec | 8 +-- 2 files changed, 3 insertions(+), 77 deletions(-) delete mode 100644 components/serial-libs/plasma/SOURCES/48.patch diff --git a/components/serial-libs/plasma/SOURCES/48.patch b/components/serial-libs/plasma/SOURCES/48.patch deleted file mode 100644 index db4a641d15..0000000000 --- a/components/serial-libs/plasma/SOURCES/48.patch +++ /dev/null @@ -1,72 +0,0 @@ -From 984531d38fa16d8890cdf1e78d6e4ca00907b899 Mon Sep 17 00:00:00 2001 -From: Adrian Reber -Date: Mon, 21 Apr 2025 11:18:07 +0200 -Subject: [PATCH] tools: handle INT_MAX and INT_MIN in fortran_gen.py -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Using fortran_gen.py with the current header files results in errors: - -$ python3 tools/fortran_gen.py --prefix include/ include/plasma*h -Exported file: include/plasma_mod.f90 -$ gfortran -c -o include/plasma_mod.o include/plasma_mod.f90 -include/plasma_mod.f90:33:57: - - 33 | integer, parameter :: PlasmaDatatypeUnknown = INT_MIN - | 1 -Error: Symbol ‘int_min’ at (1) has no IMPLICIT type -include/plasma_mod.f90:72:54: - - 72 | integer, parameter :: PlasmaConstUnknown = INT_MIN - | 1 -Error: Symbol ‘int_min’ at (1) has no IMPLICIT type -include/plasma_mod.f90:84:54: - - 84 | integer, parameter :: PlasmaErrorUnknown = INT_MIN - | 1 -Error: Symbol ‘int_min’ at (1) has no IMPLICIT type -include/plasma_mod.f90:88:54: - - 88 | integer, parameter :: PlasmaInoutUnknown = INT_MAX - | 1 -Error: Symbol ‘int_max’ at (1) has no IMPLICIT type; did you mean ‘c_intmax_t’? -include/plasma_mod.f90:92:60: - - 92 | integer, parameter :: PlasmaHouseholderUnknown = INT_MAX - | 1 -Error: Symbol ‘int_max’ at (1) has no IMPLICIT type; did you mean ‘c_intmax_t’? -include/plasma_mod.f90:96:54: - - 96 | integer, parameter :: PlasmaAbledUnknown = INT_MAX - | 1 -Error: Symbol ‘int_max’ at (1) has no IMPLICIT type; did you mean ‘c_intmax_t’? -include/plasma_mod.f90:104:54: - - 104 | integer, parameter :: PlasmaParamUnknown = INT_MAX - | 1 -Error: Symbol ‘int_max’ at (1) has no IMPLICIT type; did you mean ‘c_intmax_t’? - -With this change INT_MAX is converted to c_intmax_t and INT_MIN to -c_intmax_t. - -Signed-off-by: Adrian Reber ---- - tools/fortran_gen.py | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/tools/fortran_gen.py b/tools/fortran_gen.py -index 1ac030e..0f9ece8 100755 ---- a/tools/fortran_gen.py -+++ b/tools/fortran_gen.py -@@ -112,6 +112,11 @@ def polish_file(whole_file): - clean_file = re.sub(r";", "\n", clean_file) - clean_file = re.sub(r"}", "}\n", clean_file) - -+ # Replace INT_MAX with c_intmax_t -+ clean_file = re.sub("INT_MAX", "c_intmax_t", clean_file) -+ # Replace -INT_MIN with -c_intmax_t -+ clean_file = re.sub("INT_MIN", "-c_intmax_t", clean_file) -+ - return clean_file - - def preprocess_list(initial_list): diff --git a/components/serial-libs/plasma/SPECS/plasma.spec b/components/serial-libs/plasma/SPECS/plasma.spec index efdbf26926..dadd2e0206 100644 --- a/components/serial-libs/plasma/SPECS/plasma.spec +++ b/components/serial-libs/plasma/SPECS/plasma.spec @@ -14,14 +14,13 @@ %global pname plasma Name: %{pname}-%{compiler_family}%{PROJ_DELIM} -Version: 24.8.7 +Version: 25.5.27 Release: 1%{?dist} Summary: Parallel Linear Algebra Software for Multicore Architectures License: BSD-3-Clause Group: %{PROJ_NAME}/serial-libs URL: https://github.com/icl-utk-edu/plasma/ -Source0: https://github.com/icl-utk-edu/plasma/releases/download/%{version}/plasma-%{version}.tar.gz -Patch0: https://github.com/icl-utk-edu/plasma/pull/48.patch +Source0: https://github.com/icl-utk-edu/plasma/archive/refs/tags/%{version}.tar.gz # Tell cmake to include the Fortran plasma_mod.o in the shared object Patch1: cmake-fortran.patch # Exclude functions from plasma_mod.o which do not seem to be implemented. @@ -55,7 +54,6 @@ least squares problems, eigenvalue problems, and singular value problems. %prep %setup -q -n %{pname}-%{version} -%patch -P 0 -p 1 %patch -P 1 -p 1 %patch -P 2 -p 1 @@ -69,7 +67,7 @@ module load openblas module load cmake # Generate fortran bindings -python3 tools/codegen.py -p s -p d -p c include/*h +python3 tools/codegen.py -p s -p d -p c -p ds include/*h python3 tools/fortran_gen.py --prefix include/ include/plasma*h # Create plasma.mod ${FC} -fPIC -c -o include/plasma_mod.o include/plasma_mod.f90 From 4cd89a438a41401fffd03395200cce2b2e824f1c Mon Sep 17 00:00:00 2001 From: Adrian Reber Date: Thu, 7 May 2026 20:21:30 +0000 Subject: [PATCH 4/4] tests: modernize plasma test framework Port plasma test changes from 4.x branch: - Run autoupdate on configure.ac (AC_PREREQ, AC_INIT, AC_MSG_ERROR, AC_OUTPUT syntax) - Fix F90 compiler display to use $FC instead of $F77 - Move bootstrap inside compiler loop in test_compiler_families - Remove BATS_NO_SUMMARY from Makefile.am - Modernize rm_execution: use setup_file(), proper quoting, relative paths, RESOURCE_MANAGER, timeouts - Modernize test_module: use setup_file/setup/teardown, mktemp for output, get_rpm_name(), proper quoting, parallel execution - Fix printf format argument count in test.c - Remove common symlink (use relative paths instead) Generated with Claude Code (https://claude.ai/code) Signed-off-by: Adrian Reber --- tests/libs/plasma/configure.ac | 10 +- .../plasma/ohpc-tests/test_compiler_families | 5 +- tests/libs/plasma/tests/Makefile.am | 5 - tests/libs/plasma/tests/common | 1 - tests/libs/plasma/tests/rm_execution | 45 +++++--- tests/libs/plasma/tests/test.c | 2 +- tests/libs/plasma/tests/test_module | 109 ++++++++++-------- 7 files changed, 95 insertions(+), 82 deletions(-) delete mode 120000 tests/libs/plasma/tests/common diff --git a/tests/libs/plasma/configure.ac b/tests/libs/plasma/configure.ac index 43bf91be48..d4cf5e4867 100644 --- a/tests/libs/plasma/configure.ac +++ b/tests/libs/plasma/configure.ac @@ -2,8 +2,8 @@ # Process this file with autoconf to produce a configure script. # -AC_PREREQ(2.59) -AC_INIT(plasma, 2.8.0, [https://github.com/openhpc/ohpc]) +AC_PREREQ([2.71]) +AC_INIT([plasma],[2.8.0],[https://github.com/openhpc/ohpc]) AM_INIT_AUTOMAKE([foreign]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AC_SUBST([LOG_DRIVER],['$(SHELL) $(top_srcdir)/../../test-driver-ohpc']) @@ -13,7 +13,7 @@ AC_MSG_CHECKING([for PLASMA_DIR environment variable]) if test "x$PLASMA_DIR" = "x"; then AC_MSG_RESULT([no]) echo - AC_ERROR([PLASMA_DIR not defined - please load plasma environment.]) + AC_MSG_ERROR(PLASMA_DIR not defined - please load plasma environment.) else AC_MSG_RESULT([yes]) fi @@ -43,7 +43,7 @@ fi AC_CONFIG_FILES(Makefile tests/Makefile) # Configure -AC_OUTPUT() +AC_OUTPUT echo echo '-------------------------------------------------- SUMMARY --------------------------------------------------' @@ -53,7 +53,7 @@ echo OHPC compiler toolchain....... : $LMOD_FAMILY_COMPILER echo echo C compiler.................... : `which $CC` echo F77 compiler ................. : `which $F77` -echo F90 compiler ................. : `which $F77` +echo F90 compiler ................. : `which $FC` echo echo C compiler flags.............. : $CFLAGS echo F77 compiler flags............ : $FFLAGS diff --git a/tests/libs/plasma/ohpc-tests/test_compiler_families b/tests/libs/plasma/ohpc-tests/test_compiler_families index 8a696bb758..b398c00f2c 100755 --- a/tests/libs/plasma/ohpc-tests/test_compiler_families +++ b/tests/libs/plasma/ohpc-tests/test_compiler_families @@ -12,10 +12,6 @@ cd libs/plasma || exit 1 export BATS_JUNIT_CLASS=PLASMA -# bootstrap the local autotools project if necessary - -./bootstrap || exit 1 - for compiler in $COMPILER_FAMILIES ; do if [ "$compiler" == "arm1" ]; then @@ -32,6 +28,7 @@ for compiler in $COMPILER_FAMILIES ; do module load $compiler || exit 1 module load plasma || exit 1 + ./bootstrap || exit 1 ./configure || exit 1 make clean || exit 1 make -k check || status=1 diff --git a/tests/libs/plasma/tests/Makefile.am b/tests/libs/plasma/tests/Makefile.am index c53c70d67f..7a5655eed7 100644 --- a/tests/libs/plasma/tests/Makefile.am +++ b/tests/libs/plasma/tests/Makefile.am @@ -1,5 +1,3 @@ -TESTS_ENVIRONMENT = BATS_NO_SUMMARY=1 - check_PROGRAMS = C_test C_test_SOURCES = test_zhesv.c test.c @@ -8,6 +6,3 @@ F90_test_SOURCES = test_zpotri.f90 TESTS = test_module TESTS += rm_execution - - - diff --git a/tests/libs/plasma/tests/common b/tests/libs/plasma/tests/common deleted file mode 120000 index 55b975444d..0000000000 --- a/tests/libs/plasma/tests/common +++ /dev/null @@ -1 +0,0 @@ -../../../common/ \ No newline at end of file diff --git a/tests/libs/plasma/tests/rm_execution b/tests/libs/plasma/tests/rm_execution index 370a32f22e..34646aa879 100755 --- a/tests/libs/plasma/tests/rm_execution +++ b/tests/libs/plasma/tests/rm_execution @@ -1,40 +1,47 @@ #!/usr/bin/env -S bats --report-formatter junit --formatter tap -j 2 # -*-sh-*- -load ./common/test_helper_functions || exit 1 -source ./common/functions || exit 1 +load ../../../common/test_helper_functions || exit 1 +source ../../../common/functions || exit 1 -if [ -s ./common/TEST_ENV ]; then - source ./common/TEST_ENV +if [ -s ../../../common/TEST_ENV ]; then + source ../../../common/TEST_ENV fi +setup_file() { + check_rms + + NODES=1 + TASKS=$(tasks_count 4) + ARGS=0 + TIMEOUT="00:05:00" + TESTNAME="libs/PLASMA" + + export NODES TASKS ARGS TIMEOUT TESTNAME +} + setup() { if [ "${LMOD_FAMILY_COMPILER}" == "acfl" ] || [ "${LMOD_FAMILY_COMPILER}" == "intel" ]; then skip "Test segfaults with ${LMOD_FAMILY_COMPILER} compiler" fi } -check_rms -export RM=$RESOURCE_MANAGER - -export TESTNAME="libs/PLASMA" - -ARGS=0 - -@test "[$TESTNAME/C_test] C_test under resource manager ($RM/$LMOD_FAMILY_COMPILER)" { - if [ ! -s C_test ]; then - flunk "C_test binary does not exist" +@test "[${TESTNAME}/C_test] C_test under resource manager (${RESOURCE_MANAGER}/$LMOD_FAMILY_COMPILER)" { + EXE=./C_test + if [ ! -s "${EXE}" ]; then + flunk "${EXE} binary does not exist" fi - run_serial_binary ./C_test $ARGS + run_serial_binary -t "${TIMEOUT}" "${EXE}" "${ARGS}" assert_success } -@test "[$TESTNAME/F90_test] F90_test under resource manager ($RM/$LMOD_FAMILY_COMPILER)" { - if [ ! -s F90_test ]; then - flunk "F90_test binary does not exist" +@test "[${TESTNAME}/F90_test] F90_test under resource manager (${RESOURCE_MANAGER}/$LMOD_FAMILY_COMPILER)" { + EXE=./F90_test + if [ ! -s "${EXE}" ]; then + flunk "${EXE} binary does not exist" fi - run_serial_binary ./F90_test "< gebrd_example.d" + run_serial_binary -t "${TIMEOUT}" "${EXE} < gebrd_example.d" assert_success } diff --git a/tests/libs/plasma/tests/test.c b/tests/libs/plasma/tests/test.c index 63a8348036..aefa1f383a 100644 --- a/tests/libs/plasma/tests/test.c +++ b/tests/libs/plasma/tests/test.c @@ -214,7 +214,7 @@ void print_main_usage(const char *program_name) "\t%s routine [parameter1, parameter2, ...]\n" "\n" "Available routines:", - program_name, program_name, program_name); + program_name, program_name, program_name, program_name); for (int i = 0; routines[i].name != NULL; ++i) { if (i % 4 == 0) { printf("\n\t"); diff --git a/tests/libs/plasma/tests/test_module b/tests/libs/plasma/tests/test_module index e3fb7c08f8..fbb144fc27 100755 --- a/tests/libs/plasma/tests/test_module +++ b/tests/libs/plasma/tests/test_module @@ -1,39 +1,56 @@ -#!/usr/bin/env -S bats --report-formatter junit --formatter tap +#!/usr/bin/env -S bats --report-formatter junit --formatter tap -j 8 # -*-sh-*- -source ./common/test_helper_functions.bash || exit 1 +source ../../../common/test_helper_functions.bash || exit 1 +source ../../../common/functions || exit 1 -if [ -s ./common/TEST_ENV ]; then - source ./common/TEST_ENV +if [ -s ../../../common/TEST_ENV ]; then + source ../../../common/TEST_ENV fi -PKG=PLASMA -module=plasma -export TESTNAME="libs/PLASMA" -library=libplasma -header=plasma.h -rpm=plasma-$LMOD_FAMILY_COMPILER${DELIM} +setup_file() { + PKG=PLASMA + MODULE=plasma + TESTNAME="libs/PLASMA" + LIBRARY=libplasma + HEADER=plasma.h -@test "[$TESTNAME] Verify $module module is loaded and matches rpm version ($LMOD_FAMILY_COMPILER)" { - module list $module | grep "1) $module" >&.cmd_output || exit 1 - run grep $module .cmd_output + export PKG MODULE TESTNAME LIBRARY HEADER +} + +setup() { + OUTPUT="$(mktemp)" + + export OUTPUT +} + +teardown() { + rm -f "${OUTPUT}" +} + +@test "[${TESTNAME}] Verify $PKG module is loaded and matches rpm version ($LMOD_FAMILY_COMPILER)" { + module list "${MODULE}" | grep "1) ${MODULE}" >&"${OUTPUT}" || exit 1 + run grep "${MODULE}" "${OUTPUT}" assert_success # check version against rpm + local rpm + rpm=$(get_rpm_name "${MODULE}") local version - version="$(rpm -q --queryformat='%{VERSION}\n' "$rpm")" - run cat .cmd_output - assert_output " 1) $module/$version" + version="$(rpm -q --queryformat='%{VERSION}\n' "${rpm}")" + run cat "${OUTPUT}" + assert_output " 1) ${MODULE}/${version}" } -@test "[$TESTNAME] Verify module ${PKG}_DIR is defined and exists ($LMOD_FAMILY_COMPILER)" { - DIR=${PKG}_DIR - if [ -z ${!DIR} ]; then - flunk "${PKG}_DIR directory not defined" +@test "[${TESTNAME}] Verify ${PKG}_DIR is defined and directory exists ($LMOD_FAMILY_COMPILER)" { + PKG_DIR="${PKG}_DIR" + + if [ -z "${!PKG_DIR}" ]; then + flunk "env setting ${PKG_DIR} not defined" fi - if [ ! -d ${!DIR} ] || [ -z "${!DIR}" ]; then - flunk "directory ${!DIR} does not exist" + if [ ! -d "${!PKG_DIR}" ]; then + flunk "directory ${!PKG_DIR} does not exist" fi } @@ -41,39 +58,39 @@ rpm=plasma-$LMOD_FAMILY_COMPILER${DELIM} # Lib Tests # ---------- -@test "[$TESTNAME] Verify module ${PKG}_LIB is defined and exists ($LMOD_FAMILY_COMPILER)" { - LIB=${PKG}_LIB +@test "[${TESTNAME}] Verify module ${PKG}_LIB is defined and exists ($LMOD_FAMILY_COMPILER)" { + LIB="${PKG}_LIB" - if [ -z ${!LIB} ]; then + if [ -z "${!LIB}" ]; then flunk "${PKG}_LIB directory not defined" fi - if [ ! -d ${!LIB} ]; then + if [ ! -d "${!LIB}" ]; then flunk "directory ${!LIB} does not exist" fi } -@test "[$TESTNAME] Verify dynamic library available in ${PKG}_LIB ($LMOD_FAMILY_COMPILER)" { - LIB=${PKG}_LIB +@test "[${TESTNAME}] Verify dynamic library available in ${PKG}_LIB ($LMOD_FAMILY_COMPILER)" { + LIB="${PKG}_LIB" - if [ -z ${!LIB} ]; then + if [ -z "${!LIB}" ]; then flunk "${PKG}_LIB directory not defined" fi - if [ ! -s ${!LIB}/${library}.so ]; then - flunk "${library}.so does not exist" + if [ ! -s "${!LIB}/${LIBRARY}.so" ]; then + flunk "${LIBRARY}.so does not exist" fi } -@test "[$TESTNAME] Verify static library is not present in ${PKG}_LIB ($LMOD_FAMILY_COMPILER)" { - LIB=${PKG}_LIB +@test "[${TESTNAME}] Verify static library is not present in ${PKG}_LIB ($LMOD_FAMILY_COMPILER)" { + LIB="${PKG}_LIB" - if [ -z ${!LIB} ]; then + if [ -z "${!LIB}" ]; then flunk "${PKG}_LIB directory not defined" fi - if [ -e ${!LIB}/${library}.a ]; then - flunk "${library}.a exists when not expecting it" + if [ -e "${!LIB}/${LIBRARY}.a" ]; then + flunk "${LIBRARY}.a exists when not expecting it" fi } @@ -81,28 +98,26 @@ rpm=plasma-$LMOD_FAMILY_COMPILER${DELIM} # Include Tests # -------------- -@test "[$TESTNAME] Verify module ${PKG}_INC is defined and exists ($LMOD_FAMILY_COMPILER)" { - INC=${PKG}_INC +@test "[${TESTNAME}] Verify module ${PKG}_INC is defined and exists ($LMOD_FAMILY_COMPILER)" { + INC="${PKG}_INC" - if [ -z ${!INC} ]; then + if [ -z "${!INC}" ]; then flunk "${PKG}_INC directory not defined" fi - if [ ! -d ${!INC} ]; then + if [ ! -d "${!INC}" ]; then flunk "directory ${!INC} does not exist" fi } -@test "[$TESTNAME] Verify header file is present in ${PKG}_INC ($LMOD_FAMILY_COMPILER)" { - INC=${PKG}_INC +@test "[${TESTNAME}] Verify header file is present in ${PKG}_INC ($LMOD_FAMILY_COMPILER)" { + INC="${PKG}_INC" - if [ -z ${!INC} ]; then + if [ -z "${!INC}" ]; then flunk "${PKG}_INC directory not defined" fi - if [ ! -s ${!INC}/${header} ]; then - flunk "directory $header file does not exist" + if [ ! -s "${!INC}/${HEADER}" ]; then + flunk "directory ${HEADER} file does not exist" fi } - -rm -f .cmd_output