guix_mirror_bot pushed a commit to branch master
in repository guix.
commit ad9d43baa010908b6ae26f0bbc659fae57a7225b
Author: David Elsing <[email protected]>
AuthorDate: Mon Oct 20 15:13:58 2025 +0200
gnu: gromacs: Update to 2025.3.
Also unbundle libtirpc and muparser. The unbundling is now done in a snippet
instead of a build phase.
* gnu/packages/chemistry.scm (gromacs): Update to 2025.3.
[source]: Switch to git-fetch. Add modules and snippet fields.
[arguments]<#:configure-flags>: Add -DGMX_USE_MUPARSER=EXTERNAL and
-DCMAKE_CXX_FLAGS.
[phases]: Adjust 'fixes phase. Use the package source of googletest-1.13.
[inputs]: Add libtirpc and muparser.
* gnu/packages/patches/gromacs-tinyxml2.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Deregister patch.
Fixes: guix/guix#3584
Signed-off-by: Andreas Enge <[email protected]>
---
gnu/local.mk | 1 -
gnu/packages/chemistry.scm | 83 +++++++++++++++++++----------
gnu/packages/patches/gromacs-tinyxml2.patch | 67 -----------------------
3 files changed, 54 insertions(+), 97 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index fdd1a0adff..eca096aa46 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1519,7 +1519,6 @@ dist_patch_DATA =
\
%D%/packages/patches/grantlee-register-metaenumvariable.patch \
%D%/packages/patches/grep-timing-sensitive-test.patch \
%D%/packages/patches/grfcodec-gcc-compat.patch \
- %D%/packages/patches/gromacs-tinyxml2.patch \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/grub-efi-fat-serial-number.patch \
%D%/packages/patches/grub-hurd64.patch \
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 93fe90a858..9c408a047f 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -60,6 +60,7 @@
#:use-module (gnu packages lisp)
#:use-module (gnu packages maths)
#:use-module (gnu packages mpi)
+ #:use-module (gnu packages onc-rpc)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -493,23 +494,47 @@ stored with user-specified precision.")
(define-public gromacs
(package
(name "gromacs")
- (version "2022.4")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://ftp.gromacs.org/pub/gromacs/gromacs-"
- version ".tar.gz"))
- (sha256
- (base32
- "15vjwasxjq0h18dmzacjkdim51zrvr0ni42hbc30557j5xhbw4f5"))
- ;; Our version of tinyxml2 is far newer than the bundled one and
- ;; require fixing `testutils' code. See patch header for more
info
- (patches (search-patches "gromacs-tinyxml2.patch"))))
+ (version "2025.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/gromacs/gromacs")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1p9vvlbrysh8lwnbgy845pgx664k6mkw8p66f8bx468f7z2rp900"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Still bundled: part of gromacs, source behind registration
+ ;; but free software anyways
+ ;;(delete-file-recursively "src/external/vmd_molfile")
+ ;; Still bundled: threads-based OpenMPI-compatible fallback
+ ;; designed to be bundled like that
+ ;;(delete-file-recursively "src/external/thread_mpi")
+ ;; Still bundled: Colvars is intended to be built as part of a
+ ;; molecular simulation program.
+ ;;(delete-file-recursively "src/external/colvars")
+ ;; Unbundling
+ (delete-file-recursively "src/external/lmfit")
+ (delete-file-recursively "src/external/clFFT")
+ (delete-file-recursively "src/external/fftpack")
+ (delete-file-recursively "src/external/build-fftw")
+ (delete-file-recursively "src/external/tng_io")
+ (delete-file-recursively "src/external/tinyxml2")
+ (delete-file-recursively "src/external/googletest")
+ (delete-file-recursively "src/external/muparser")
+ (delete-file-recursively "src/external/rpc_xdr")
+ (delete-file-recursively "src/external/vkfft")))))
(build-system cmake-build-system)
(arguments
(list #:configure-flags
#~(list "-DGMX_DEVELOPER_BUILD=on" ; Needed to run tests
;; Unbundling
"-DGMX_USE_LMFIT=EXTERNAL"
+ "-DGMX_USE_MUPARSER=EXTERNAL"
"-DGMX_BUILD_OWN_FFTW=off"
"-DGMX_EXTERNAL_BLAS=on"
"-DGMX_EXTERNAL_LAPACK=on"
@@ -521,31 +546,29 @@ stored with user-specified precision.")
;; Workaround for cmake/FindSphinx.cmake version parsing
that does
;; not understand the guix-wrapped `sphinx-build --version'
answer
(string-append "-DSPHINX_EXECUTABLE_VERSION="
- #$(package-version python-sphinx)))
+ #$(package-version python-sphinx))
+ (string-append
+ "-DCMAKE_CXX_FLAGS=-I"
+ (search-input-directory %build-inputs "/include/tirpc")))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fixes
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Still bundled: part of gromacs, source behind
registration
- ;; but free software anyways
- ;;(delete-file-recursively "src/external/vmd_molfile")
- ;; Still bundled: threads-based OpenMPI-compatible fallback
- ;; designed to be bundled like that
- ;;(delete-file-recursively "src/external/thread_mpi")
- ;; Unbundling
- (delete-file-recursively "src/external/lmfit")
- (delete-file-recursively "src/external/clFFT")
- (delete-file-recursively "src/external/fftpack")
- (delete-file-recursively "src/external/build-fftw")
- (delete-file-recursively "src/external/tng_io")
- (delete-file-recursively "src/external/tinyxml2")
- (delete-file-recursively "src/external/googletest")
- (copy-recursively #$(package-source googletest)
+ (lambda _
+ (copy-recursively #$(package-source googletest-1.13)
"src/external/googletest")
;; This test warns about the build host hardware, disable
(substitute*
"src/gromacs/hardware/tests/hardwaretopology.cpp"
(("TEST\\(HardwareTopologyTest, HwlocExecute\\)")
- "void __guix_disabled()")))))))
+ "void __guix_disabled()"))
+ (substitute* "cmake/gmxTestXDR.cmake"
+ (("TestXDR\\.cpp\"" orig)
+ (string-append orig " LINK_LIBRARIES -ltirpc")))
+ (substitute* "CMakeLists.txt"
+ (("set\\(GMX_EXTRA_LIBRARIES.*" orig)
+ (string-append
+ orig "\nlist(APPEND GMX_EXTRA_LIBRARIES
\"-ltirpc\")\n")))
+ (substitute* "src/external/CMakeLists.txt"
+ (("add_subdirectory\\(rpc_xdr\\)") "")))))))
(native-inputs
(list doxygen
graphviz
@@ -556,7 +579,9 @@ stored with user-specified precision.")
(inputs
(list fftwf
`(,hwloc-2 "lib")
+ libtirpc
lmfit
+ muparser
openblas
perl
tinyxml2
diff --git a/gnu/packages/patches/gromacs-tinyxml2.patch
b/gnu/packages/patches/gromacs-tinyxml2.patch
deleted file mode 100644
index 6f11e174df..0000000000
--- a/gnu/packages/patches/gromacs-tinyxml2.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-Unbundling tinyxml2 from gromacs and using our own, which is newer, broke
gromacs
-build.
-
-This patch fixes this issue:
-
-- Error handling API changed, fix the testutils/refdata_xml.cpp code by using
the
- new API: document.ErrorStr() & tinyxml2::XML_SUCCESS.
-
-Those fixes will be submitted for inclusion to upstream, but may not be
suitable
-there as long as they still keep the old version bundled.
-
-First hunk has already been requested for merging. Third is in discussion.
Second
-will only be sent if third is OK'ed.
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index cd748c9..1e90c95 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -539,9 +539,6 @@ if(GMX_EXTERNAL_TINYXML2)
- if(NOT HAVE_TINYXML2)
- message(FATAL_ERROR "External TinyXML-2 could not be found, please
adjust your search paths")
- endif()
-- if (TinyXML2_FOUND AND TinyXML2_VERSION VERSION_GREATER "6")
-- message(FATAL_ERROR "External TinyXML-2 is later than the highest
supported version 6. Please adjust your search paths to include a supported
version")
-- endif()
- endif()
-
- option(GMX_EXTRAE "Add support for tracing using EXTRAE" OFF)
-diff --git a/src/testutils/refdata_xml.cpp b/src/testutils/refdata_xml.cpp
-index 0eb2209..57cebff 100644
---- a/src/testutils/refdata_xml.cpp
-+++ b/src/testutils/refdata_xml.cpp
-@@ -206,21 +206,12 @@ ReferenceDataEntry::EntryPointer
readReferenceDataFile(const std::string& path)
- document.LoadFile(path.c_str());
- if (document.Error())
- {
-- const char* errorStr1 = document.GetErrorStr1();
-- const char* errorStr2 = document.GetErrorStr2();
-+ const char* errorStr = document.ErrorStr();
- std::string errorString("Error was ");
-- if (errorStr1)
-- {
-- errorString += errorStr1;
-- }
-- if (errorStr2)
-- {
-- errorString += errorStr2;
-- }
-- if (!errorStr1 && !errorStr2)
-- {
-+ if (errorStr)
-+ errorString += errorStr;
-+ else
- errorString += "not specified.";
-- }
- GMX_THROW(TestException("Reference data not parsed successfully: " +
path + "\n."
- + errorString + "\n"));
- }
-@@ -371,7 +362,7 @@ void writeReferenceDataFile(const std::string& path, const
ReferenceDataEntry& r
- XMLElementPtr rootElement = createRootElement(&document);
- createChildElements(rootElement, rootEntry);
-
-- if (document.SaveFile(path.c_str()) != tinyxml2::XML_NO_ERROR)
-+ if (document.SaveFile(path.c_str()) != tinyxml2::XML_SUCCESS)
- {
- GMX_THROW(TestException("Reference data saving failed in " + path));
- }