git: 8f69fdb69749 - main - science/serac: move to science/smith

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sun, 04 Oct 2026 09:21:17 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=8f69fdb697495a9875842df13ff9e5a771fdeb15

commit 8f69fdb697495a9875842df13ff9e5a771fdeb15
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-10-02 07:39:50 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-10-04 09:20:48 +0000

    science/serac: move to science/smith
---
 MOVED                                              |  1 +
 science/Makefile                                   |  2 +-
 science/serac/distinfo                             | 11 ------
 science/serac/pkg-descr                            |  5 ---
 science/{serac => smith}/Makefile                  | 20 +++++-----
 science/smith/distinfo                             | 11 ++++++
 .../files/patch-cmake_SmithConfigHeader.cmake      |  6 +--
 ...tch-cmake_thirdparty_SetupSmithThirdParty.cmake | 11 +++---
 .../patch-gretl_cmake_GretlConfigHeader.cmake      |  6 +--
 ...th_numerics_functional_element__restriction.cpp | 44 ++++++++++++++++++++++
 ...rc_smith_physics_solid__mechanics__contact.hpp} |  6 +--
 science/smith/pkg-descr                            |  4 ++
 science/{serac => smith}/pkg-plist                 |  1 +
 13 files changed, 87 insertions(+), 41 deletions(-)

diff --git a/MOVED b/MOVED
index 36f92994a823..a14ecf05a41f 100644
--- a/MOVED
+++ b/MOVED
@@ -5717,3 +5717,4 @@ www/qt5-webengine||2026-10-01|Has expired: Based on outdated Chromium
 devel/py-importlib-metadata6|devel/py-importlib-metadata7|2026-10-01|Has expired: No consumers left use devel/py-importlib-metadata7
 sysutils/py-appjail-gui||2026-10-02|Has expired: Upstream repo archived on Sep 02, 2026
 multimedia/ffmpeg6||2026-10-04|Removed: no consumers left
+science/serac|science/smith|2026-10-04|Project renamed upstream
diff --git a/science/Makefile b/science/Makefile
index f76ab3afb588..a5bbc34d10e9 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -509,7 +509,6 @@
     SUBDIR += sciplot
     SUBDIR += seacas
     SUBDIR += segyio
-    SUBDIR += serac
     SUBDIR += shelxle
     SUBDIR += siconos
     SUBDIR += siesta
@@ -525,6 +524,7 @@
     SUBDIR += simple-dftd3
     SUBDIR += simsmith
     SUBDIR += sirius
+    SUBDIR += smith
     SUBDIR += smoldyn
     SUBDIR += sparta
     SUBDIR += spglib
diff --git a/science/serac/distinfo b/science/serac/distinfo
deleted file mode 100644
index 87b850670028..000000000000
--- a/science/serac/distinfo
+++ /dev/null
@@ -1,11 +0,0 @@
-TIMESTAMP = 1775014358
-SHA256 (LLNL-smith-g20260327-887c1cb_GH0.tar.gz) = 9b19aeea5594784e0ea505f80f35ddc55d560951def640dc5a9e4f359016a759
-SIZE (LLNL-smith-g20260327-887c1cb_GH0.tar.gz) = 6509986
-SHA256 (LLNL-blt-2bf714a56d64b9b66b2a2b20207587af052efc36_GH0.tar.gz) = 063ed35850013c4c976d6682c5515efe4893946d5404fe0d2c2cef8da288ea22
-SIZE (LLNL-blt-2bf714a56d64b9b66b2a2b20207587af052efc36_GH0.tar.gz) = 1333676
-SHA256 (LLNL-gretl-fbbbee58b3d3b97771b107ca6e015a40dcf5e0f6_GH0.tar.gz) = 16590736c279916c86e05eafa8724ff9bddfeafead7c2c81f925383e3bb69d6f
-SIZE (LLNL-gretl-fbbbee58b3d3b97771b107ca6e015a40dcf5e0f6_GH0.tar.gz) = 52210
-SHA256 (LLNL-uberenv-bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3_GH0.tar.gz) = 1101084c247c4797d28346ebd8b7939b930e5396dae304835c0c149f7a3ca65e
-SIZE (LLNL-uberenv-bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3_GH0.tar.gz) = 43503
-SHA256 (LLNL-serac_tests-75d838c69f48a0f263ad68a81d963a0615bed37f_GH0.tar.gz) = 739a5734ddaa6981eaa028ce2fa8db1bc7b7aa3033eacc27b57e7f0e80dda6bb
-SIZE (LLNL-serac_tests-75d838c69f48a0f263ad68a81d963a0615bed37f_GH0.tar.gz) = 20788
diff --git a/science/serac/pkg-descr b/science/serac/pkg-descr
deleted file mode 100644
index 1bfa896f9bb6..000000000000
--- a/science/serac/pkg-descr
+++ /dev/null
@@ -1,5 +0,0 @@
-Serac is a 3D implicit nonlinear thermal-structural simulation code. Its primary
-purpose is to investigate multiphysics abstraction strategies and implicit
-finite element-based algorithm development for emerging computing architectures.
-It also serves as a proxy-app for LLNL's Smith code and heavily leverages the
-MFEM finite element library.
diff --git a/science/serac/Makefile b/science/smith/Makefile
similarity index 71%
rename from science/serac/Makefile
rename to science/smith/Makefile
index 924696ffb333..bcf25fe175e1 100644
--- a/science/serac/Makefile
+++ b/science/smith/Makefile
@@ -1,5 +1,6 @@
-PORTNAME=	serac
-PORTVERSION=	g20260327
+PORTNAME=	smith
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.1.0
 CATEGORIES=	science
 
 MAINTAINER=	yuri@FreeBSD.org
@@ -12,7 +13,6 @@ LICENSE_FILE=	${WRKSRC}/LICENSE
 LIB_DEPENDS=	libaxom_core.so:science/axom \
 		libcamp.so:devel/camp \
 		libconduit.so:science/conduit \
-		libgcc_s.so.1:lang/gcc14 \
 		libhdf5.so:science/hdf5 \
 		libHYPRE.so:science/hypre \
 		libmetis.so:math/metis \
@@ -26,19 +26,19 @@ USE_LDCONFIG=	yes
 USE_GITHUB=	yes
 GH_ACCOUNT=	LLNL
 GH_PROJECT=	smith
-GH_TAGNAME=	887c1cb
-GH_TUPLE=	LLNL:blt:2bf714a56d64b9b66b2a2b20207587af052efc36:LLNL_blt/cmake/blt \
-		LLNL:gretl:fbbbee58b3d3b97771b107ca6e015a40dcf5e0f6:LLNL_gretl/gretl \
+GH_TUPLE=	LLNL:blt:837a2630cc321573ac780befe2dfda1958095597:LLNL_blt/cmake/blt \
+		LLNL:gretl:772a66663e532d9f458d855f043283a9211f61d5:LLNL_gretl/gretl \
 		LLNL:uberenv:bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3:LLNL_uberenv/scripts/uberenv \
 		LLNL:serac_tests:75d838c69f48a0f263ad68a81d963a0615bed37f:LLNL_serac_tests/tests
 
-CMAKE_TESTING_ON=	ENABLE_TESTS # tests fail to compile, see https://github.com/LLNL/serac/issues/786
+CMAKE_TESTING_ON=	ENABLE_TESTS
 
 CMAKE_ON=	BUILD_SHARED_LIBS
-CMAKE_OFF=	ENABLE_TESTS SMITH_ENABLE_CONTINUATION
+CMAKE_OFF=	ENABLE_TESTS SMITH_ENABLE_CONTINUATION SMITH_ENABLE_TRIBOL
 CMAKE_ARGS=	-DAXOM_DIR=${LOCALBASE} \
 		-DCONDUIT_DIR=${LOCALBASE} \
-		-DMFEM_DIR=${LOCALBASE}
+		-DMFEM_DIR=${LOCALBASE} \
+		-DHDF5_DIR=${LOCALBASE}
 
 OPTIONS_SINGLE=		MPI
 OPTIONS_SINGLE_MPI=	MPICH OPENMPI
@@ -56,4 +56,6 @@ OPENMPI_CMAKE_ON=	-DENABLE_MPI=ON \
 			-DMPI_CXX_COMPILER=${MPICXX}
 OPENMPI_BROKEN=		mixes OpenMPI and MPICH when both are installed, see https://github.com/LLNL/serac/issues/787
 
+# tests as of 0.1.0: 72% tests passed, 27 tests failed out of 95 (most/all failures are SEGVs caused by the bug in math/superlu-dist, I narrowed it to this: https://github.com/xiaoyeli/superlu_dist/issues/227)
+
 .include <bsd.port.mk>
diff --git a/science/smith/distinfo b/science/smith/distinfo
new file mode 100644
index 000000000000..b8f0af8c2b76
--- /dev/null
+++ b/science/smith/distinfo
@@ -0,0 +1,11 @@
+TIMESTAMP = 1791088152
+SHA256 (LLNL-smith-v0.1.0_GH0.tar.gz) = 72ed0f139afbed18ca3454b00e2ec57a58fc36c29d04501a1e60521e2a8c540f
+SIZE (LLNL-smith-v0.1.0_GH0.tar.gz) = 6520395
+SHA256 (LLNL-blt-837a2630cc321573ac780befe2dfda1958095597_GH0.tar.gz) = 08e134c8313d2f4a8254d94fcf64ddb777aaff45acb8e5b8d38ab7a54fe1839b
+SIZE (LLNL-blt-837a2630cc321573ac780befe2dfda1958095597_GH0.tar.gz) = 1347688
+SHA256 (LLNL-gretl-772a66663e532d9f458d855f043283a9211f61d5_GH0.tar.gz) = 39fb84a635e0055a4f6f9b1a771638ec174788d232698ee55f98f9dcbadd5c73
+SIZE (LLNL-gretl-772a66663e532d9f458d855f043283a9211f61d5_GH0.tar.gz) = 54024
+SHA256 (LLNL-uberenv-bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3_GH0.tar.gz) = 1101084c247c4797d28346ebd8b7939b930e5396dae304835c0c149f7a3ca65e
+SIZE (LLNL-uberenv-bf2f438fc1fe97bb8290a11e5d4f2d56085b4ee3_GH0.tar.gz) = 43503
+SHA256 (LLNL-serac_tests-75d838c69f48a0f263ad68a81d963a0615bed37f_GH0.tar.gz) = 739a5734ddaa6981eaa028ce2fa8db1bc7b7aa3033eacc27b57e7f0e80dda6bb
+SIZE (LLNL-serac_tests-75d838c69f48a0f263ad68a81d963a0615bed37f_GH0.tar.gz) = 20788
diff --git a/science/serac/files/patch-cmake_SmithConfigHeader.cmake b/science/smith/files/patch-cmake_SmithConfigHeader.cmake
similarity index 67%
rename from science/serac/files/patch-cmake_SmithConfigHeader.cmake
rename to science/smith/files/patch-cmake_SmithConfigHeader.cmake
index a3b49919c694..2896a45f6d65 100644
--- a/science/serac/files/patch-cmake_SmithConfigHeader.cmake
+++ b/science/smith/files/patch-cmake_SmithConfigHeader.cmake
@@ -1,6 +1,6 @@
---- cmake/SmithConfigHeader.cmake.orig	2026-03-31 21:26:15.628537000 -0700
-+++ cmake/SmithConfigHeader.cmake	2026-03-31 21:26:45.170889000 -0700
-@@ -117,5 +117,5 @@
+--- cmake/SmithConfigHeader.cmake.orig	2026-09-30 18:18:35 UTC
++++ cmake/SmithConfigHeader.cmake
+@@ -87,5 +87,5 @@ install(
      ${SMITH_INSTALL_CMAKE_MODULE_DIR}
  )
  
diff --git a/science/serac/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake b/science/smith/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake
similarity index 67%
rename from science/serac/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake
rename to science/smith/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake
index 10f2194cd7b7..f5cdc37c121a 100644
--- a/science/serac/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake
+++ b/science/smith/files/patch-cmake_thirdparty_SetupSmithThirdParty.cmake
@@ -1,6 +1,6 @@
---- cmake/thirdparty/SetupSmithThirdParty.cmake.orig	2026-03-30 15:30:35.531584000 -0700
-+++ cmake/thirdparty/SetupSmithThirdParty.cmake	2026-03-30 15:32:30.484066000 -0700
-@@ -54,14 +54,8 @@
+--- cmake/thirdparty/SetupSmithThirdParty.cmake.orig	2026-09-30 18:18:35 UTC
++++ cmake/thirdparty/SetupSmithThirdParty.cmake
+@@ -77,13 +77,7 @@ if (NOT SMITH_THIRD_PARTY_LIBRARIES_FOUND)
      #------------------------------------------------------------------------------
      # Camp
      #------------------------------------------------------------------------------
@@ -9,10 +9,9 @@
 -    endif()
 -
 -    smith_assert_is_directory(DIR_VARIABLE CAMP_DIR)
+-
+-    find_dependency(camp REQUIRED PATHS "${CAMP_DIR}")
 +    find_dependency(camp REQUIRED)
  
--    find_dependency(camp REQUIRED PATHS "${CAMP_DIR}")
--
      smith_assert_find_succeeded(PROJECT_NAME Camp
                                  TARGET       camp
-                                 DIR_VARIABLE CAMP_DIR)
diff --git a/science/serac/files/patch-gretl_cmake_GretlConfigHeader.cmake b/science/smith/files/patch-gretl_cmake_GretlConfigHeader.cmake
similarity index 65%
rename from science/serac/files/patch-gretl_cmake_GretlConfigHeader.cmake
rename to science/smith/files/patch-gretl_cmake_GretlConfigHeader.cmake
index 266257aa50be..0c00f2888b26 100644
--- a/science/serac/files/patch-gretl_cmake_GretlConfigHeader.cmake
+++ b/science/smith/files/patch-gretl_cmake_GretlConfigHeader.cmake
@@ -1,6 +1,6 @@
---- gretl/cmake/GretlConfigHeader.cmake.orig	2026-03-31 22:10:13.885368000 -0700
-+++ gretl/cmake/GretlConfigHeader.cmake	2026-03-31 22:11:01.296363000 -0700
-@@ -106,5 +106,5 @@
+--- gretl/cmake/GretlConfigHeader.cmake.orig	2026-08-13 02:48:06 UTC
++++ gretl/cmake/GretlConfigHeader.cmake
+@@ -106,5 +106,5 @@ install(
      ${GRETL_INSTALL_CMAKE_MODULE_DIR}
  )
  
diff --git a/science/smith/files/patch-src_smith_numerics_functional_element__restriction.cpp b/science/smith/files/patch-src_smith_numerics_functional_element__restriction.cpp
new file mode 100644
index 000000000000..5e6c6b1c3510
--- /dev/null
+++ b/science/smith/files/patch-src_smith_numerics_functional_element__restriction.cpp
@@ -0,0 +1,44 @@
+-- Explicitly cast memcpy() arguments to void*/const void* when copying raw
+-- bytes of the non-trivially-copyable `DoF` struct (it has a user-defined
+-- copy constructor), since newer Clang (21.x, as used on current FreeBSD)
+-- turns this into a hard error (-Werror,-Wnontrivial-memcall) instead of a
+-- warning; the raw byte copy itself is safe/intentional since DoF is a
+-- simple wrapper around a single uint64_t with no virtual members.
+--- src/smith/numerics/functional/element_restriction.cpp.orig	2026-10-01 19:09:44 UTC
++++ src/smith/numerics/functional/element_restriction.cpp
+@@ -280,7 +280,7 @@ axom::Array<DoF, 2, smith::detail::host_memory_space> 
+   } else {
+     uint64_t dofs_per_elem = elem_dofs.size() / n;
+     axom::Array<DoF, 2, smith::detail::host_memory_space> output(n, dofs_per_elem);
+-    std::memcpy(output.data(), elem_dofs.data(), sizeof(DoF) * n * dofs_per_elem);
++    std::memcpy(static_cast<void*>(output.data()), static_cast<const void*>(elem_dofs.data()), sizeof(DoF) * n * dofs_per_elem);
+     return output;
+   }
+ }
+@@ -346,7 +346,7 @@ axom::Array<DoF, 2, smith::detail::host_memory_space> 
+   } else {
+     uint64_t dofs_per_elem = elem_dofs.size() / n;
+     axom::Array<DoF, 2, smith::detail::host_memory_space> output(n, dofs_per_elem);
+-    std::memcpy(output.data(), elem_dofs.data(), sizeof(DoF) * n * dofs_per_elem);
++    std::memcpy(static_cast<void*>(output.data()), static_cast<const void*>(elem_dofs.data()), sizeof(DoF) * n * dofs_per_elem);
+     return output;
+   }
+ }
+@@ -461,7 +461,7 @@ axom::Array<DoF, 2, smith::detail::host_memory_space> 
+   } else {
+     uint64_t dofs_per_face = face_dofs.size() / n;
+     axom::Array<DoF, 2, smith::detail::host_memory_space> output(n, dofs_per_face);
+-    std::memcpy(output.data(), face_dofs.data(), sizeof(DoF) * n * dofs_per_face);
++    std::memcpy(static_cast<void*>(output.data()), static_cast<const void*>(face_dofs.data()), sizeof(DoF) * n * dofs_per_face);
+     return output;
+   }
+ }
+@@ -634,7 +634,7 @@ axom::Array<DoF, 2, smith::detail::host_memory_space> 
+   } else {
+     uint64_t dofs_per_face = face_dofs.size() / n;
+     axom::Array<DoF, 2, smith::detail::host_memory_space> output(n, dofs_per_face);
+-    std::memcpy(output.data(), face_dofs.data(), sizeof(DoF) * n * dofs_per_face);
++    std::memcpy(static_cast<void*>(output.data()), static_cast<const void*>(face_dofs.data()), sizeof(DoF) * n * dofs_per_face);
+     return output;
+   }
+ }
diff --git a/science/serac/files/patch-src_smith_physics_solid_mechanics_contact.hpp b/science/smith/files/patch-src_smith_physics_solid__mechanics__contact.hpp
similarity index 79%
rename from science/serac/files/patch-src_smith_physics_solid_mechanics_contact.hpp
rename to science/smith/files/patch-src_smith_physics_solid__mechanics__contact.hpp
index 261e879c7ff2..e6cc73d3ddd3 100644
--- a/science/serac/files/patch-src_smith_physics_solid_mechanics_contact.hpp
+++ b/science/smith/files/patch-src_smith_physics_solid__mechanics__contact.hpp
@@ -1,6 +1,6 @@
---- src/smith/physics/solid_mechanics_contact.hpp.orig	2026-03-31 21:05:46.118045000 -0700
-+++ src/smith/physics/solid_mechanics_contact.hpp	2026-03-31 21:06:54.640503000 -0700
-@@ -331,10 +331,14 @@
+--- src/smith/physics/solid_mechanics_contact.hpp.orig	2026-09-30 18:18:35 UTC
++++ src/smith/physics/solid_mechanics_contact.hpp
+@@ -493,10 +493,14 @@ class SolidMechanicsContact<order, dim, Parameters<par
        amgf_prec->SetFilteredSubspaceTransferOperator(*(contact_dof_prolongation_.get()));
        // set the filteredsubspace solver component of AMGF
        // better solution: retrieve print level from .preconditioner_print_level from linear_solver_options
diff --git a/science/smith/pkg-descr b/science/smith/pkg-descr
new file mode 100644
index 000000000000..d65abe128b1a
--- /dev/null
+++ b/science/smith/pkg-descr
@@ -0,0 +1,4 @@
+Smith is a 3D implicit nonlinear thermal-structural simulation code. Its primary
+purpose is to investigate abstraction strategies and implicit finite
+element-based algorithm development for emerging computing architectures. It
+also heavily leverages the MFEM finite element library.
diff --git a/science/serac/pkg-plist b/science/smith/pkg-plist
similarity index 99%
rename from science/serac/pkg-plist
rename to science/smith/pkg-plist
index 7cbced314bed..2cf282740b4b 100644
--- a/science/serac/pkg-plist
+++ b/science/smith/pkg-plist
@@ -46,6 +46,7 @@ include/smith/infrastructure/accelerator.hpp
 include/smith/infrastructure/application_manager.hpp
 include/smith/infrastructure/cli.hpp
 include/smith/infrastructure/debug_print.hpp
+include/smith/infrastructure/format.hpp
 include/smith/infrastructure/git_sha.hpp
 include/smith/infrastructure/input.hpp
 include/smith/infrastructure/logger.hpp