git: cb5a0fcaa60b - main - science/siesta: update 4.1.5 → 5.4.2

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Wed, 08 Jul 2026 16:26:32 UTC
The branch main has been updated by yuri:

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

commit cb5a0fcaa60bab317f27e74942f0f939c6e33598
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-07-08 16:23:39 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-07-08 16:26:29 +0000

    science/siesta: update 4.1.5 → 5.4.2
---
 science/siesta/Makefile                            | 57 +++++++++++++++-------
 science/siesta/distinfo                            | 26 ++++++++--
 .../files/patch-External_Lua-Engine_CMakeLists.txt | 24 +++++++++
 .../files/patch-External_Lua-Engine_flook_Makefile | 22 +++++++++
 .../files/patch-cmake_SiestaFindPackage.cmake      | 55 +++++++++++++++++++++
 5 files changed, 164 insertions(+), 20 deletions(-)

diff --git a/science/siesta/Makefile b/science/siesta/Makefile
index 01d1dbcd203e..0d175c36f769 100644
--- a/science/siesta/Makefile
+++ b/science/siesta/Makefile
@@ -1,45 +1,68 @@
 PORTNAME=	siesta
-DISTVERSION=	4.1.5
-PORTREVISION=	3
+DISTVERSION=	5.4.2
 CATEGORIES=	science # chemistry
 MASTER_SITES=	https://gitlab.com/siesta-project/${PORTNAME}/-/releases/v${DISTVERSION}/downloads/
+DISTFILES=	${PORTNAME}-${DISTVERSION}.tar.gz
 
 MAINTAINER=	yuri@FreeBSD.org
 COMMENT=	Program to perform efficient electronic structure calculations
 WWW=		https://siesta-project.org/siesta/
 
 LICENSE=	GPLv3
-LICENSE_FILE=	${WRKSRC}/../COPYING
+LICENSE_FILE=	${WRKSRC}/COPYING
 
-BROKEN_aarch64=	Lack of IEEE754 support in gcc causes "Cannot find an intrinsic module named 'ieee_arithmetic'", see bug#255890
+BROKEN_aarch64=	lack of IEEE754 support in gcc causes "Cannot find an intrinsic module named 'ieee_arithmetic'", see bug#255890
 
-LIB_DEPENDS=	libblas.so:math/blas \
-		liblapack.so:math/lapack
+LIB_DEPENDS=	libopenblas.so:math/openblas \
+		libreadline.so:devel/readline
 
-USES=		fortran:gfortran gmake localbase:ldflags
+USES=		cmake:noninja,testing fortran:gfortran gmake localbase:ldflags pkgconfig
 
-ALL_TARGET=	default
+PLIST_FILES=	bin/${PORTNAME}
 
-WRKSRC_SUBDIR=	Obj
+USE_GITHUB=	nodefault
+GH_TUPLE=	ElectronicStructureLibrary:flook:v0.8.4:flook/External/Lua-Engine/flook \
+		dftd3:simple-dftd3:f147b265d8b53dcf1666d7b0aba579ec02233fe8:s_dftd3/External/DFTD3/s-dftd3 \
+		grimme-lab:mctc-lib:v0.3.1:mctc_lib/External/DFTD3/mctc-lib \
+		grimme-lab:mstore:v0.2.0:mstore/External/DFTD3/mstore \
+		toml-f:toml-f:v0.2.4:toml_f/External/DFTD3/toml-f \
+		fortran-lang:test-drive:v0.4.0:test_drive/External/DFTD3/test-drive
 
-PLIST_FILES=	bin/${PORTNAME}
+USE_GITLAB=	nodefault
+GL_TUPLE=	siesta-project/libraries:libfdf:206a3d6c4628e584743bd5cd483d0e2e66e95b7c:libfdf/External/libfdf \
+		siesta-project/libraries:xmlf90:963fe5d11487233d43ac59dd0c1340a7b2cc3dc5:xmlf90/External/xmlf90 \
+		siesta-project/libraries:libpsml:b7049e4de25333fe8bd2dbf9a3495ef0f77ba168:libpsml/External/libpsml \
+		siesta-project/libraries:libgridxc:022d2a6371eed0db272ac6922289921f62f30c21:libgridxc/External/libgridxc
 
 BINARY_ALIAS=	gfortran=gfortran${GCC_DEFAULT} gcc=gcc${GCC_DEFAULT}
 
+CMAKE_ARGS=	-DSIESTA_WITH_MPI=OFF \
+		-DSIESTA_WITH_ELSI=OFF \
+		-DSIESTA_WITH_WANNIER90=OFF \
+		-DSIESTA_WITH_NETCDF=OFF \
+		-DSIESTA_WITH_LIBXC=OFF \
+		-DSIESTA_WITH_FFTW=OFF \
+		-Dlibfdf_FIND_METHOD=source \
+		-Dxmlf90_FIND_METHOD=source \
+		-Dlibpsml_FIND_METHOD=source \
+		-Dlibgridxc_FIND_METHOD=source \
+		-Ds-dftd3_FIND_METHOD=source \
+		-Dmctc-lib_FIND_METHOD=source \
+		-Dmstore_FIND_METHOD=source \
+		-Dtoml-f_FIND_METHOD=source \
+		-Dtest-drive_FIND_METHOD=source
+CMAKE_OFF=	SIESTA_TESTS
+CMAKE_TESTING_ON=	SIESTA_TESTS
+
 .include <bsd.port.pre.mk>
 
 .if ${GCC_DEFAULT} >= 10
 # workaround for Type mismatch between actual argument at (1) and actual argument at (2) (COMPLEX(8)/REAL(8)).
 FFLAGS+=	-fallow-argument-mismatch
-MAKE_ARGS=	FFLAGS="${FFLAGS} -O2 -fPIC -ftree-vectorize"
+CMAKE_ARGS+=	-DCMAKE_Fortran_FLAGS="${FFLAGS} -O2 -fPIC -ftree-vectorize"
 .endif
 
-pre-configure:
-	@cd ${WRKSRC} && \
-		${SETENV} ${MAKE_ENV} ${SH} ../Src/obj_setup.sh && \
-		${LN} -s gfortran.make arch.make
-
 do-install:
-	${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
+	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/Src/${PORTNAME} ${STAGEDIR}${PREFIX}/bin
 
 .include <bsd.port.post.mk>
diff --git a/science/siesta/distinfo b/science/siesta/distinfo
index ae18218c0c8c..f8bbc58c3ece 100644
--- a/science/siesta/distinfo
+++ b/science/siesta/distinfo
@@ -1,3 +1,23 @@
-TIMESTAMP = 1619229947
-SHA256 (siesta-4.1.5.tar.gz) = 518df31aa6213af5e24cc73abb537b2c89a925b487171f5339d743d0c7140b3f
-SIZE (siesta-4.1.5.tar.gz) = 16286464
+TIMESTAMP = 1783524801
+SHA256 (siesta-5.4.2.tar.gz) = 63d41b6b96e53b8ffa96750a80052ac61ee9550331604920f9040e2486a29b8d
+SIZE (siesta-5.4.2.tar.gz) = 13087676
+SHA256 (ElectronicStructureLibrary-flook-v0.8.4_GH0.tar.gz) = 66304756194341157d24467d994312c950d2bd33d4d19d68e81424769a3dbc03
+SIZE (ElectronicStructureLibrary-flook-v0.8.4_GH0.tar.gz) = 570879
+SHA256 (dftd3-simple-dftd3-f147b265d8b53dcf1666d7b0aba579ec02233fe8_GH0.tar.gz) = 6a5f741a779eea17663d80e24cb5dda511960c9b24f5aed450dc57536839502e
+SIZE (dftd3-simple-dftd3-f147b265d8b53dcf1666d7b0aba579ec02233fe8_GH0.tar.gz) = 605878
+SHA256 (grimme-lab-mctc-lib-v0.3.1_GH0.tar.gz) = 03dc8ccba37413da70e55a07cef8e8de53bce33f5bb52c1f8db5fec326abe083
+SIZE (grimme-lab-mctc-lib-v0.3.1_GH0.tar.gz) = 130801
+SHA256 (grimme-lab-mstore-v0.2.0_GH0.tar.gz) = 95edba88afbc8013f57f4c818a97c0500cc40b158bed11234c061b2b6d7e480d
+SIZE (grimme-lab-mstore-v0.2.0_GH0.tar.gz) = 240180
+SHA256 (toml-f-toml-f-v0.2.4_GH0.tar.gz) = 21a0b558bec6750907da80cd7141444b56ef29eb3484b9689dc2a95949368baa
+SIZE (toml-f-toml-f-v0.2.4_GH0.tar.gz) = 94087
+SHA256 (fortran-lang-test-drive-v0.4.0_GH0.tar.gz) = f9c037a3c1727e98801c2375e6f2efde9881ac1f54b04be3bc928e094f5787a5
+SIZE (fortran-lang-test-drive-v0.4.0_GH0.tar.gz) = 26298
+SHA256 (siesta-project/libraries-libfdf-206a3d6c4628e584743bd5cd483d0e2e66e95b7c_GL0.tar.gz) = d30b631a71644f8ea568f839400cab06148d6f558a102c83e301681c21f0facb
+SIZE (siesta-project/libraries-libfdf-206a3d6c4628e584743bd5cd483d0e2e66e95b7c_GL0.tar.gz) = 78703
+SHA256 (siesta-project/libraries-xmlf90-963fe5d11487233d43ac59dd0c1340a7b2cc3dc5_GL0.tar.gz) = 1fc3f182c4bc941a9a41f42b2d3f9ca59abc8b132824e76cdd3c5ed4611bfe37
+SIZE (siesta-project/libraries-xmlf90-963fe5d11487233d43ac59dd0c1340a7b2cc3dc5_GL0.tar.gz) = 528426
+SHA256 (siesta-project/libraries-libpsml-b7049e4de25333fe8bd2dbf9a3495ef0f77ba168_GL0.tar.gz) = e169004471bd3e9eac9a698175edd17fc9bc5429427691ad6ee3a913bf705227
+SIZE (siesta-project/libraries-libpsml-b7049e4de25333fe8bd2dbf9a3495ef0f77ba168_GL0.tar.gz) = 675634
+SHA256 (siesta-project/libraries-libgridxc-022d2a6371eed0db272ac6922289921f62f30c21_GL0.tar.gz) = 7c1055b0b4ae0e9b0b1471e17b558aaedd44fd90f3eb6e8bbe5e3c524f5d1b32
+SIZE (siesta-project/libraries-libgridxc-022d2a6371eed0db272ac6922289921f62f30c21_GL0.tar.gz) = 360521
diff --git a/science/siesta/files/patch-External_Lua-Engine_CMakeLists.txt b/science/siesta/files/patch-External_Lua-Engine_CMakeLists.txt
new file mode 100644
index 000000000000..4f63c9de8ac6
--- /dev/null
+++ b/science/siesta/files/patch-External_Lua-Engine_CMakeLists.txt
@@ -0,0 +1,24 @@
+-- Configure flook for FreeBSD instead of forcing the linux platform, and pass
+-- an explicit job count to the recursive make invocation that builds flook.
+-- A bare "-j" is propagated to the inner FreeBSD make, which requires an
+-- argument and aborts the build.
+--- External/Lua-Engine/CMakeLists.txt.orig	2025-12-16 02:10:34 UTC
++++ External/Lua-Engine/CMakeLists.txt
+@@ -139,6 +139,8 @@
+
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
+   set(FLOOK_PLATFORM "macosx")
++elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
++  set(FLOOK_PLATFORM "freebsd")
+ else()
+   set(FLOOK_PLATFORM "linux")
+ endif()
+@@ -198,7 +200,7 @@
+  ##CONFIGURE_HANDLED_BY_BUILD true
+  DOWNLOAD_EXTRACT_TIMESTAMP TRUE
+  CONFIGURE_COMMAND ""
+- BUILD_COMMAND ${MAKE_EXECUTABLE} -j liball
++ BUILD_COMMAND ${MAKE_EXECUTABLE} -j1 liball
+  ## We avoid installing until we know how to specify the prefix...
+  ##  ... the following should work but does not.
+  ## INSTALL_COMMAND ${MAKE_EXECUTABLE} DESTDIR=<INSTALL_DIR> install
diff --git a/science/siesta/files/patch-External_Lua-Engine_flook_Makefile b/science/siesta/files/patch-External_Lua-Engine_flook_Makefile
new file mode 100644
index 000000000000..7e6c1943faef
--- /dev/null
+++ b/science/siesta/files/patch-External_Lua-Engine_flook_Makefile
@@ -0,0 +1,22 @@
+-- Use $(MAKE) instead of a hardcoded "make" when recursing into aotus.  The
+-- bundled aotus/smeka makefiles use GNU make syntax and fail with FreeBSD make.
+--- External/Lua-Engine/flook/Makefile.orig	2026-07-08 15:35:43 UTC
++++ External/Lua-Engine/flook/Makefile
+@@ -64,15 +64,15 @@
+ endif
+ lib-aotus: prep-aotus
+ ifdef SETUP
+-	(cd aotus/obj ; make SETUP=../../$(SETUP) )
++	(cd aotus/obj ; $(MAKE) SETUP=../../$(SETUP) )
+ else
+-	(cd aotus/obj ; make )
++	(cd aotus/obj ; $(MAKE) )
+ endif
+ clean-aotus: prep-aotus
+ ifdef SETUP
+-	(cd aotus/obj ; make SETUP=../../$(SETUP) clean )
++	(cd aotus/obj ; $(MAKE) SETUP=../../$(SETUP) clean )
+ else
+-	(cd aotus/obj ; make clean )
++	(cd aotus/obj ; $(MAKE) clean )
+ endif
diff --git a/science/siesta/files/patch-cmake_SiestaFindPackage.cmake b/science/siesta/files/patch-cmake_SiestaFindPackage.cmake
new file mode 100644
index 000000000000..2b71fe2208cf
--- /dev/null
+++ b/science/siesta/files/patch-cmake_SiestaFindPackage.cmake
@@ -0,0 +1,55 @@
+-- Disallow the "fetch" method in Siesta_find_package so the build
+-- does not try to clone Git repositories during configure.  The
+-- required dependency sources are now pre-fetched as GH_TUPLE/GL_TUPLE
+-- distfiles and populated in External/ before the build starts.
+--- cmake/SiestaFindPackage.cmake.orig	2026-07-08 15:31:28 UTC
++++ cmake/SiestaFindPackage.cmake
+@@ -117,7 +117,7 @@ function(Siesta_find_package)
+ 
+ 
+   # Determine the allowed find-methods
+-  set(all_f_methods "cmake" "pkgconf" "source" "fetch")
++  set(all_f_methods "cmake" "pkgconf" "source")
+   set(allowed_f_methods "cmake" "pkgconf")
+   if(DEFINED _f_SOURCE_DIR)
+     list(APPEND allowed_f_methods "source")
+@@ -323,39 +323,6 @@ function(Siesta_find_package)
+       else()
+         mymsg(CHECK_FAIL "not found/compatible")
+       endif()
+-    endif()
+-
+-    if("${method}" STREQUAL "fetch")
+-      mymsg(CHECK_START "fetching from ${_f_REPO}")
+-
+-      include(FetchContent)
+-      FetchContent_Declare("${pkg}"
+-        GIT_REPOSITORY "${_f_REPO}"
+-        GIT_TAG "${_f_TAG}"
+-      )
+-      FetchContent_MakeAvailable("${pkg}")
+-
+-      add_library("${_f_TARGET}" INTERFACE IMPORTED GLOBAL)
+-      target_link_libraries("${_f_TARGET}" INTERFACE "${pkg}")
+-
+-      # We need the module directory in the subproject before we finish the configure stage
+-      # Note that this is relevant if the "Fortran_MODULE_DIRECTORY" property is set to
+-      # the 'include' subdirectory, as it is done for some libraries.
+-      #
+-      # (This is found experimentally; it does not seem to apply always, but it does not
+-      #  hurt to do it.)
+-
+-      FetchContent_GetProperties("${pkg}" BINARY_DIR "${pkg_uc}_BINARY_DIR")
+-      message(STATUS "BINARY_DIR for fetched ${pkg}: ${${pkg_uc}_BINARY_DIR}")
+-
+-      if(NOT EXISTS "${${pkg_uc}_BINARY_DIR}/include")
+-        make_directory("${${pkg_uc}_BINARY_DIR}/include")
+-      endif()
+-
+-      mymsg(CHECK_PASS "fetched")
+-      set(f_method "fetch")
+-
+-      break()
+     endif()
+ 
+   endforeach()