Package: guix-patches;
Reported by: "Paul A. Patience" <paul <at> apatience.com>
Date: Thu, 28 Mar 2024 14:21:02 UTC
Severity: normal
Tags: patch
Done: Andreas Enge <andreas <at> enge.fr>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 70056 in the body.
You can then email your comments to 70056 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#70056
; Package guix-patches
.
(Thu, 28 Mar 2024 14:21:02 GMT) Full text and rfc822 format available."Paul A. Patience" <paul <at> apatience.com>
:guix-patches <at> gnu.org
.
(Thu, 28 Mar 2024 14:21:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: "Paul A. Patience" <paul <at> apatience.com> To: guix-patches <at> gnu.org Cc: "Paul A. Patience" <paul <at> apatience.com> Subject: [RFC PATCH] draft: gnu: Add mfem. Date: Thu, 28 Mar 2024 14:17:39 +0000
* gnu/packages/maths.scm (mfem): New variable. Change-Id: Ida81f2b081a016e91426b68437909653020976f5 --- Hi, I'm trying to package MFEM, but I get the following error while building: --8<---------------cut here---------------start------------->8--- The following derivations will be built: /gnu/store/ibv1qjm24b2z4qsfhsw7q4izalcbb7rd-mfem-4.6.drv /gnu/store/l0df6d28w16dhnnpcr1qg26xvpmyrkqa-mfem-4.6-checkout.drv building /gnu/store/l0df6d28w16dhnnpcr1qg26xvpmyrkqa-mfem-4.6-checkout.drv... Initialized empty Git repository in /gnu/store/dc5fx7xfg67fsvl5brdxnbgkirirqxd0-mfem-4.6-checkout/.git/ From https://github.com/mfem/mfem * tag v4.6 -> FETCH_HEAD warning: unable to access '//.config/git/ignore': Permission denied warning: unable to access '//.config/git/attributes': Permission denied warning: unable to access '//.config/git/ignore': Permission denied Note: switching to 'FETCH_HEAD'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c <new-branch-name> Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 69fbae7 Merge pull request #3841 from mfem/mfem-4.6-dev suspicious ownership or permission on `/gnu/store/dc5fx7xfg67fsvl5brdxnbgkirirqxd0-mfem-4.6-checkout'; rejecting this build output build of /gnu/store/l0df6d28w16dhnnpcr1qg26xvpmyrkqa-mfem-4.6-checkout.drv failed View build log at '/var/log/guix/drvs/l0/df6d28w16dhnnpcr1qg26xvpmyrkqa-mfem-4.6-checkout.drv.gz'. cannot build derivation `/gnu/store/ibv1qjm24b2z4qsfhsw7q4izalcbb7rd-mfem-4.6.drv': 1 dependencies couldn't be built guix build: error: build of `/gnu/store/ibv1qjm24b2z4qsfhsw7q4izalcbb7rd-mfem-4.6.drv' failed --8<---------------cut here---------------end--------------->8--- Basically it complains of suspicious ownership or permission. I looked at the permissions of the contents of the repository when cloning it manually, and nothing seems to be world-writable, as nix/libstore/build.cc:2373 seems to be trying to protect against. Regarding the Git warning at the top, I looked in the repository for any references to Git attributes and ignore files, but did not find any. I suspect it is looking for the .config directory in $HOME, but the variable is unset, of course. What's more, I tried with url-fetch, and it also results in suspicious ownership or permission. I'm at a loss as to what to do. Can someone give me a hand? Thanks, Paul gnu/packages/maths.scm | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1b4d325649..5e81225947 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -151,6 +151,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libunwind) #:use-module (gnu packages m4) #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) @@ -6890,6 +6891,53 @@ (define-public dealii-openmpi (delete 'unset-cpath))))) (synopsis "Finite element library (with MPI support)"))) +(define-public mfem + (package + (name "mfem") + (version "4.6") + (source + (origin + ;; (method url-fetch) + ;; (uri (string-append "https://github.com/mfem/mfem/archive/refs/tags/v" + ;; version ".tar.gz")) + ;; (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/mfem/mfem") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0m57j5kd7glc8lfp5bdmmx4az4fs6lkqjwd970w4fx8gylxff3n9")))) + (build-system cmake-build-system) + (native-inputs + (list graphviz doxygen perl)) ; documentation + (inputs + (list gfortran + gnutls + lapack + libunwind + metis + mpfr + netcdf + suitesparse-amd + suitesparse-btf + suitesparse-camd + suitesparse-ccolamd + suitesparse-cholmod + suitesparse-colamd + suitesparse-config + suitesparse-klu + suitesparse-umfpack + sundials + zlib)) + (home-page "https://mfem.org/") + (synopsis "Finite element library") + (description "MFEM is a modular parallel C++ library for finite element +methods. Its goal is to enable high-performance scalable finite element +discretization research and application development on a wide variety of +platforms, ranging from laptops to supercomputers.") + (license license:bsd-3))) + (define-public flann (package (name "flann") base-commit: fb9549164520ad993c2fbbaedc899844d57baabc -- 2.41.0
guix-patches <at> gnu.org
:bug#70056
; Package guix-patches
.
(Fri, 29 Mar 2024 04:42:02 GMT) Full text and rfc822 format available.Message #8 received at 70056 <at> debbugs.gnu.org (full text, mbox):
From: "Paul A. Patience" <paul <at> apatience.com> To: 70056 <at> debbugs.gnu.org Cc: "Paul A. Patience" <paul <at> apatience.com> Subject: [RFC PATCH v2] gnu: Add mfem. Date: Fri, 29 Mar 2024 04:40:43 +0000
* gnu/packages/maths.scm (mfem): New variable. * gnu/packages/patches/mfem-fix-mk-file-export.patch: New file. * gnu/packages/patches/mfem-remove-source-dir-refs.patch: Same. * gnu/local.mk (dist_patch_DATA): Register them. Change-Id: Ida81f2b081a016e91426b68437909653020976f5 --- The package is basically ready now, except for the suspicious ownership mentioned in the previous patch. I've tested it on a local copy of MFEM. (The OpenMPI version is trickier to compile.) gnu/local.mk | 2 + gnu/packages/maths.scm | 171 ++++++++++++++++++ .../patches/mfem-fix-mk-file-export.patch | 29 +++ .../patches/mfem-remove-source-dir-refs.patch | 101 +++++++++++ 4 files changed, 303 insertions(+) create mode 100644 gnu/packages/patches/mfem-fix-mk-file-export.patch create mode 100644 gnu/packages/patches/mfem-remove-source-dir-refs.patch diff --git a/gnu/local.mk b/gnu/local.mk index 5429dc498c..dcedef5f99 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1682,6 +1682,8 @@ dist_patch_DATA = \ %D%/packages/patches/memtest86+-build-reproducibly.patch \ %D%/packages/patches/mercurial-hg-extension-path.patch \ %D%/packages/patches/mercurial-openssl-compat.patch \ + %D%/packages/patches/mfem-fix-mk-file-export.patch \ + %D%/packages/patches/mfem-remove-source-dir-refs.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mia-fix-boost-headers.patch \ %D%/packages/patches/mia-vtk9.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1b4d325649..2191b5e2da 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -151,6 +151,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libunwind) #:use-module (gnu packages m4) #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) @@ -6890,6 +6891,176 @@ (define-public dealii-openmpi (delete 'unset-cpath))))) (synopsis "Finite element library (with MPI support)"))) +(define-public mfem + (package + (name "mfem") + (version "4.6") + ;; (source + ;; (origin + ;; ;; (method url-fetch) + ;; ;; (uri (string-append "https://github.com/mfem/mfem/archive/refs/tags/v" + ;; ;; version ".tar.gz")) + ;; ;; (file-name (string-append name "-" version ".tar.gz")) + ;; (method git-fetch) + ;; (uri (git-reference + ;; (url "https://github.com/mfem/mfem") + ;; (commit (string-append "v" version)))) + ;; (file-name (git-file-name name version)) + ;; (sha256 + ;; (base32 "0m57j5kd7glc8lfp5bdmmx4az4fs6lkqjwd970w4fx8gylxff3n9")) + ;; (patches (search-patches "mfem-remove-source-dir-refs.patch" + ;; "mfem-fix-mk-file-export.patch")))) + (source (local-file "/tmp/mfem" #:recursive? #t)) + (outputs '("out" "doc")) ; 338 MiB of documentation + (build-system cmake-build-system) + (arguments + (list #:configure-flags + ;; Follow order of config/defaults.mk, which has a more exhaustive + ;; list than config/defaults.cmake. + #~(list "-DBUILD_SHARED_LIBS=ON" + "-DMFEM_USE_MPI=OFF" + "-DMFEM_USE_METIS=OFF" ; MPI only + "-DMFEM_USE_METIS_5=OFF" + "-DMFEM_PRECISION=double" ; For versions beyond 4.6 + "-DMFEM_DEBUG=OFF" + "-DMFEM_USE_EXCEPTIONS=ON" + "-DMFEM_USE_ZLIB=ON" + "-DMFEM_USE_LIBUNWIND=ON" + "-DMFEM_USE_LAPACK=ON" + "-DMFEM_THREAD_SAFE=OFF" + "-DMFEM_USE_OPENMP=ON" + "-DMFEM_USE_LEGACY_OPENMP=OFF" + "-DMFEM_USE_MEMALLOC=ON" + "-DMFEM_TIMER_TYPE=2" + "-DMFEM_USE_SUNDIALS=ON" + "-DMFEM_USE_SUITESPARSE=ON" + "-DMFEM_USE_SUPERLU=OFF" ; MPI only + "-DMFEM_USE_SUPERLU5=OFF" + "-DMFEM_USE_MUMPS=OFF" ; MPI only + "-DMFEM_USE_STRUMPACK=OFF" ; Missing dep, MPI only + "-DMFEM_USE_GINKGO=OFF" ; Missing dep + "-DMFEM_USE_AMGX=OFF" ; CUDA library + "-DMFEM_USE_GNUTLS=ON" + "-DMFEM_USE_NETCDF=ON" + "-DMFEM_USE_PETSC=OFF" ; MPI only + "-DMFEM_USE_SLEPC=OFF" ; MPI only + "-DMFEM_USE_MPFR=ON" + "-DMFEM_USE_SIDRE=OFF" ; Missing dep + "-DMFEM_USE_FMS=OFF" ; Missing dep + "-DMFEM_USE_CONDUIT=OFF" ; Missing dep + "-DMFEM_USE_PUMI=OFF" ; Missing dep, MPI only + "-DMFEM_USE_HIOP=OFF" ; Missing dep + "-DMFEM_USE_GSLIB=OFF" ; Missing dep + "-DMFEM_USE_CUDA=OFF" + "-DMFEM_USE_HIP=OFF" ; GPU library + "-DMFEM_USE_RAJA=OFF" ; Missing dep + "-DMFEM_USE_OCCA=OFF" ; Missing dep + "-DMFEM_USE_CEED=OFF" ; Missing dep + "-DMFEM_USE_CALIPER=OFF" ; Missing dep + "-DMFEM_USE_ALGOIM=OFF" ; Missing dep + "-DMFEM_USE_UMPIRE=OFF" ; Missing dep + "-DMFEM_USE_SIMD=ON" + "-DMFEM_USE_ADIOS2=OFF" ; Missing dep + "-DMFEM_USE_MKL_CPARDISO=OFF" ; Intel MKL + "-DMFEM_USE_MKL_PARDISO=OFF" + "-DMFEM_USE_MOONOLITH=OFF" ; Missing dep + "-DMFEM_USE_ADFORWARD=OFF" + "-DMFEM_USE_CODIPACK=OFF" ; Missing dep + "-DMFEM_USE_BENCHMARK=OFF" ; Only for benchmarks + "-DMFEM_USE_PARELAG=OFF" ; Missing dep, only for miniapps + "-DMFEM_USE_ENZYME=OFF" ; Missing dep, requires Clang + "-DMFEM_ENABLE_TESTING=ON" + "-DMFEM_ENABLE_EXAMPLES=ON" + "-DMFEM_ENABLE_MINIAPPS=ON" ; Used in some tests + "-DMFEM_ENABLE_GOOGLE_BENCHMARKS=OFF" + (string-append "-DHDF5_DIR=" #$(this-package-input "hdf5"))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'clean-mpi-references + (lambda _ + (substitute* (string-append "config/config.mk.in") + (("(MFEM_MPIEXEC += ).*" _ prefix) + ;; Set and non-empty, to avoid running unexpected + ;; commands. + (string-append prefix (which "false") "\n")) + (("(MFEM_MPIEXEC_NP +=).*" _ prefix) + (string-append prefix "\n")) + (("(MFEM_MPI_NP +=).*" _ prefix) + (string-append prefix "\n"))))) + (add-after 'unpack 'clean-local-references + (lambda _ + (substitute* (string-append "config/config.mk.in") + (("(MFEM_BUILD_TAG += ).*" _ prefix) + (string-append prefix "(none)\n"))))) + (add-before 'check 'build-tests + (lambda _ + (invoke "cmake" "--build" "." "--target" "tests"))) + (add-after 'check 'build-doc + (lambda _ + (setenv "HOME" "/tmp") ; Writable cache for fontconfig + (invoke "cmake" "--build" "." "--target" "doc"))) + (add-after 'install 'remove-examples + (lambda _ + (delete-file-recursively + (string-append #$output "/examples")))) + (add-after 'install 'install-doc + (lambda _ + (let ((docdir (string-append #$output:doc "/share/doc/" + #$name "-" #$version))) + (install-file "doc/CodeDocumentation.html" docdir) + (copy-recursively + "doc/CodeDocumentation" + (string-append docdir "/CodeDocumentation"))))) + (add-after 'install 'fix-library-paths + (let ((mpfr #$(this-package-input "mpfr")) + (libunwind #$(this-package-input "libunwind"))) + (lambda _ + (substitute* (string-append + #$output "/lib/cmake/mfem/MFEMTargets.cmake") + ((";mpfr;") + (string-append ";" mpfr "/lib/libmpfr.so;")) + ((";unwind;") + (string-append ";" libunwind "/lib/libunwind.so;"))) + (substitute* (string-append #$output "/share/mfem/config.mk") + ((" mpfr ") + (string-append " -Wl,-rpath," mpfr "/lib" + " -L" mpfr "/lib" + " -lmpfr ")) + ((" unwind ") + (string-append " -Wl,-rpath," libunwind "/lib" + " -L" libunwind "/lib" + " -lunwind "))))))))) + (native-inputs + (list doxygen graphviz perl)) ; For documentation + ;; No propagated inputs necessary because the installed CMake files and + ;; share/mfem/config.mk provide the full list of include directories. + (inputs + (list gnutls + hdf5 ; For NetCDF + lapack + libunwind + metis-suitesparse ; For SuiteSparse + mpfr + netcdf + suitesparse-amd + suitesparse-btf + suitesparse-camd + suitesparse-ccolamd + suitesparse-cholmod + suitesparse-colamd + suitesparse-config + suitesparse-klu + suitesparse-umfpack + sundials + zlib)) + (home-page "https://mfem.org/") + (synopsis "Finite element library") + (description "MFEM is a modular parallel C++ library for finite element +methods. Its goal is to enable high-performance scalable finite element +discretization research and application development on a wide variety of +platforms, ranging from laptops to supercomputers.") + (license license:bsd-3))) + (define-public flann (package (name "flann") diff --git a/gnu/packages/patches/mfem-fix-mk-file-export.patch b/gnu/packages/patches/mfem-fix-mk-file-export.patch new file mode 100644 index 0000000000..fbd35a029a --- /dev/null +++ b/gnu/packages/patches/mfem-fix-mk-file-export.patch @@ -0,0 +1,29 @@ +From ccba86c0259c2ae56ad44a53d5d5a2a40822cbe3 Mon Sep 17 00:00:00 2001 +From: "Paul A. Patience" <paul <at> apatience.com> +Date: Thu, 28 Mar 2024 13:28:49 -0400 +Subject: [PATCH 2/2] Add forgotten variable to mfem_export_mk_files + +MFEM_USE_MKL_PARDISO was missing. +--- + config/cmake/modules/MfemCmakeUtilities.cmake | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/config/cmake/modules/MfemCmakeUtilities.cmake b/config/cmake/modules/MfemCmakeUtilities.cmake +index 204b7d87f..217f4eec7 100644 +--- a/config/cmake/modules/MfemCmakeUtilities.cmake ++++ b/config/cmake/modules/MfemCmakeUtilities.cmake +@@ -851,8 +851,9 @@ function(mfem_export_mk_files) + MFEM_USE_CONDUIT MFEM_USE_PUMI MFEM_USE_HIOP MFEM_USE_GSLIB MFEM_USE_CUDA + MFEM_USE_HIP MFEM_USE_RAJA MFEM_USE_OCCA MFEM_USE_CEED MFEM_USE_CALIPER + MFEM_USE_UMPIRE MFEM_USE_SIMD MFEM_USE_ADIOS2 MFEM_USE_MKL_CPARDISO +- MFEM_USE_ADFORWARD MFEM_USE_CODIPACK MFEM_USE_BENCHMARK MFEM_USE_PARELAG +- MFEM_USE_MOONOLITH MFEM_USE_ALGOIM MFEM_USE_ENZYME) ++ MFEM_USE_MKL_PARDISO MFEM_USE_ADFORWARD MFEM_USE_CODIPACK ++ MFEM_USE_BENCHMARK MFEM_USE_PARELAG MFEM_USE_MOONOLITH MFEM_USE_ALGOIM ++ MFEM_USE_ENZYME) + foreach(var ${CONFIG_MK_BOOL_VARS}) + if (${var}) + set(${var} YES) +-- +2.41.0 + diff --git a/gnu/packages/patches/mfem-remove-source-dir-refs.patch b/gnu/packages/patches/mfem-remove-source-dir-refs.patch new file mode 100644 index 0000000000..f9898748c7 --- /dev/null +++ b/gnu/packages/patches/mfem-remove-source-dir-refs.patch @@ -0,0 +1,101 @@ +From 0ad647e045e9cbe456ad0f5f3bdb6e015566e067 Mon Sep 17 00:00:00 2001 +From: "Paul A. Patience" <paul <at> apatience.com> +Date: Thu, 28 Mar 2024 13:22:48 -0400 +Subject: [PATCH 1/2] Remove references to MFEM_SOURCE_DIR + +--- + config/cmake/config.hpp.in | 3 --- + config/config.hpp.in | 3 --- + config/config.mk.in | 1 - + fem/ceed/interface/util.cpp | 8 +------- + general/device.cpp | 6 +----- + 5 files changed, 2 insertions(+), 19 deletions(-) + +diff --git a/config/cmake/config.hpp.in b/config/cmake/config.hpp.in +index 7cb2a958d..13f13c48d 100644 +--- a/config/cmake/config.hpp.in ++++ b/config/cmake/config.hpp.in +@@ -30,9 +30,6 @@ + #define MFEM_VERSION_MINOR (((MFEM_VERSION)/100)%100) + #define MFEM_VERSION_PATCH ((MFEM_VERSION)%100) + +-// MFEM source directory. +-#define MFEM_SOURCE_DIR "@MFEM_SOURCE_DIR@" +- + // MFEM install directory. + #define MFEM_INSTALL_DIR "@MFEM_INSTALL_DIR@" + +diff --git a/config/config.hpp.in b/config/config.hpp.in +index 39d7737c7..dbee1f32f 100644 +--- a/config/config.hpp.in ++++ b/config/config.hpp.in +@@ -30,9 +30,6 @@ + #define MFEM_VERSION_MINOR (((MFEM_VERSION)/100)%100) + #define MFEM_VERSION_PATCH ((MFEM_VERSION)%100) + +-// The absolute path of the MFEM source prefix. +-// #define MFEM_SOURCE_DIR "@MFEM_SOURCE_DIR@" +- + // The absolute path of the MFEM installation prefix. + // #define MFEM_INSTALL_DIR "@MFEM_INSTALL_DIR@" + +diff --git a/config/config.mk.in b/config/config.mk.in +index 303750bf5..d2f538666 100644 +--- a/config/config.mk.in ++++ b/config/config.mk.in +@@ -12,7 +12,6 @@ + # Variables corresponding to defines in config.hpp (YES, NO, or value) + MFEM_VERSION = @MFEM_VERSION@ + MFEM_VERSION_STRING = @MFEM_VERSION_STRING@ +-MFEM_SOURCE_DIR = @MFEM_SOURCE_DIR@ + MFEM_INSTALL_DIR = @MFEM_INSTALL_DIR@ + MFEM_GIT_STRING = @MFEM_GIT_STRING@ + MFEM_USE_MPI = @MFEM_USE_MPI@ +diff --git a/fem/ceed/interface/util.cpp b/fem/ceed/interface/util.cpp +index d122c2ab5..f2bc900a5 100644 +--- a/fem/ceed/interface/util.cpp ++++ b/fem/ceed/interface/util.cpp +@@ -257,20 +257,14 @@ const std::string &GetCeedPath() + if (ceed_path.empty()) + { + const char *install_dir = MFEM_INSTALL_DIR "/include/mfem/fem/ceed"; +- const char *source_dir = MFEM_SOURCE_DIR "/fem/ceed"; + struct_stat m_stat; + if (stat(install_dir, &m_stat) == 0 && S_ISDIR(m_stat.st_mode)) + { + ceed_path = install_dir; + } +- else if (stat(source_dir, &m_stat) == 0 && S_ISDIR(m_stat.st_mode)) +- { +- ceed_path = source_dir; +- } + else + { +- MFEM_ABORT("Cannot find libCEED kernels in MFEM_INSTALL_DIR or " +- "MFEM_SOURCE_DIR"); ++ MFEM_ABORT("Cannot find libCEED kernels in MFEM_INSTALL_DIR"); + } + // Could be useful for debugging: + // out << "Using libCEED dir: " << ceed_path << std::endl; +diff --git a/general/device.cpp b/general/device.cpp +index ccee71cd7..a68ba7191 100644 +--- a/general/device.cpp ++++ b/general/device.cpp +@@ -464,13 +464,9 @@ static void OccaDeviceSetup(const int dev) + { + mfemDir = MFEM_INSTALL_DIR "/include/mfem/"; + } +- else if (occa::io::exists(MFEM_SOURCE_DIR)) +- { +- mfemDir = MFEM_SOURCE_DIR; +- } + else + { +- MFEM_ABORT("Cannot find OCCA kernels in MFEM_INSTALL_DIR or MFEM_SOURCE_DIR"); ++ MFEM_ABORT("Cannot find OCCA kernels in MFEM_INSTALL_DIR"); + } + + occa::io::addLibraryPath("mfem", mfemDir); +-- +2.41.0 + base-commit: fb9549164520ad993c2fbbaedc899844d57baabc -- 2.41.0
guix-patches <at> gnu.org
:bug#70056
; Package guix-patches
.
(Tue, 02 Apr 2024 15:39:03 GMT) Full text and rfc822 format available.Message #11 received at 70056 <at> debbugs.gnu.org (full text, mbox):
From: Ludovic Courtès <ludo <at> gnu.org> To: "Paul A. Patience" <paul <at> apatience.com> Cc: 70056 <at> debbugs.gnu.org Subject: Re: bug#70056: [RFC PATCH] draft: gnu: Add mfem. Date: Tue, 02 Apr 2024 17:38:07 +0200
Hi Paul, "Paul A. Patience" <paul <at> apatience.com> skribis: > HEAD is now at 69fbae7 Merge pull request #3841 from mfem/mfem-4.6-dev > suspicious ownership or permission on `/gnu/store/dc5fx7xfg67fsvl5brdxnbgkirirqxd0-mfem-4.6-checkout'; rejecting this build output > build of /gnu/store/l0df6d28w16dhnnpcr1qg26xvpmyrkqa-mfem-4.6-checkout.drv failed Could you try updating guix-daemon? (You might need to roll back first to avoid the bug above.) While fixing <https://guix.gnu.org/en/blog/2024/fixed-output-derivation-sandbox-bypass-cve-2024-27297/>, I first pushed a “broken” fix that led to the problem above. If you were unlucky and upgraded guix-daemon right at that time (I fixed it with a followup commit ~24h later), then you have the problem above. HTH! Ludo’.
guix-patches <at> gnu.org
:bug#70056
; Package guix-patches
.
(Tue, 02 Apr 2024 17:42:02 GMT) Full text and rfc822 format available.Message #14 received at 70056 <at> debbugs.gnu.org (full text, mbox):
From: "Paul A. Patience" <paul <at> apatience.com> To: 70056 <at> debbugs.gnu.org Cc: "Paul A. Patience" <paul <at> apatience.com> Subject: [PATCH] gnu: Add mfem. Date: Tue, 02 Apr 2024 17:41:04 +0000
* gnu/packages/maths.scm (mfem): New variable. * gnu/packages/patches/mfem-fix-mk-file-export.patch: New file. * gnu/packages/patches/mfem-remove-source-dir-refs.patch: Same. * gnu/local.mk (dist_patch_DATA): Register them. Change-Id: Ida81f2b081a016e91426b68437909653020976f5 --- Hi, After updating guix-daemon as Ludo suggested, cloning the Git repository works. The only minor thing that can be improved, in my opinion, is possibly enabling MFEM_USE_SIMD only if the package is tuned (see the TODO in the patch), but I've been using MFEM for a few days with MFEM_USE_SIMD enabled and without tuning, so it should work regardless. And I don't know how practical that is to accomplish; I didn't see any other cases of conditional configure flags based on the package being tuned. I updated the copyright header to include 2023 too, since I made some changes then. Best regards, Paul gnu/local.mk | 2 + gnu/packages/maths.scm | 170 +++++++++++++++++- .../patches/mfem-fix-mk-file-export.patch | 29 +++ .../patches/mfem-remove-source-dir-refs.patch | 101 +++++++++++ 4 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/mfem-fix-mk-file-export.patch create mode 100644 gnu/packages/patches/mfem-remove-source-dir-refs.patch diff --git a/gnu/local.mk b/gnu/local.mk index 5429dc498c..dcedef5f99 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1682,6 +1682,8 @@ dist_patch_DATA = \ %D%/packages/patches/memtest86+-build-reproducibly.patch \ %D%/packages/patches/mercurial-hg-extension-path.patch \ %D%/packages/patches/mercurial-openssl-compat.patch \ + %D%/packages/patches/mfem-fix-mk-file-export.patch \ + %D%/packages/patches/mfem-remove-source-dir-refs.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mia-fix-boost-headers.patch \ %D%/packages/patches/mia-vtk9.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 1b4d325649..1838b289e2 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -45,7 +45,7 @@ ;;; Copyright © 2021 Gerd Heber <gerd.heber <at> gmail.com> ;;; Copyright © 2021 Franck Pérignon <franck.perignon <at> univ-grenoble-alpes.fr> ;;; Copyright © 2021 Philip McGrath <philip <at> philipmcgrath.com> -;;; Copyright © 2021, 2022 Paul A. Patience <paul <at> apatience.com> +;;; Copyright © 2021-2024 Paul A. Patience <paul <at> apatience.com> ;;; Copyright © 2021 Ivan Gankevich <i.gankevich <at> spbu.ru> ;;; Copyright © 2021 Jean-Baptiste Volatier <jbv <at> pm.me> ;;; Copyright © 2021, 2023 Guillaume Le Vaillant <glv <at> posteo.net> @@ -151,6 +151,7 @@ (define-module (gnu packages maths) #:use-module (gnu packages xorg) #:use-module (gnu packages gl) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages libunwind) #:use-module (gnu packages m4) #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) @@ -6890,6 +6891,173 @@ (define-public dealii-openmpi (delete 'unset-cpath))))) (synopsis "Finite element library (with MPI support)"))) +(define-public mfem + (package + (name "mfem") + (version "4.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mfem/mfem") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vr3s110bc42r81s1hi9brwwaz01d60l6mbdlsrfxxinpnzxq7ax")) + (patches (search-patches "mfem-remove-source-dir-refs.patch" + "mfem-fix-mk-file-export.patch")))) + (outputs '("out" "doc")) ; 338 MiB of documentation + (build-system cmake-build-system) + (arguments + (list #:configure-flags + ;; Follow order of config/defaults.mk, which has a more exhaustive + ;; list than config/defaults.cmake. + #~(list "-DBUILD_SHARED_LIBS=ON" + "-DMFEM_USE_MPI=OFF" + "-DMFEM_USE_METIS=OFF" ; MPI only + "-DMFEM_USE_METIS_5=OFF" + "-DMFEM_PRECISION=double" ; For versions beyond 4.6 + "-DMFEM_DEBUG=OFF" + "-DMFEM_USE_EXCEPTIONS=ON" + "-DMFEM_USE_ZLIB=ON" + "-DMFEM_USE_LIBUNWIND=ON" + "-DMFEM_USE_LAPACK=ON" + "-DMFEM_THREAD_SAFE=OFF" + "-DMFEM_USE_OPENMP=ON" + "-DMFEM_USE_LEGACY_OPENMP=OFF" + "-DMFEM_USE_MEMALLOC=ON" + "-DMFEM_TIMER_TYPE=2" + "-DMFEM_USE_SUNDIALS=ON" + "-DMFEM_USE_SUITESPARSE=ON" + "-DMFEM_USE_SUPERLU=OFF" ; MPI only + "-DMFEM_USE_SUPERLU5=OFF" + "-DMFEM_USE_MUMPS=OFF" ; MPI only + "-DMFEM_USE_STRUMPACK=OFF" ; Missing dep, MPI only + "-DMFEM_USE_GINKGO=OFF" ; Missing dep + "-DMFEM_USE_AMGX=OFF" ; CUDA library + "-DMFEM_USE_GNUTLS=ON" + "-DMFEM_USE_NETCDF=ON" + "-DMFEM_USE_PETSC=OFF" ; MPI only + "-DMFEM_USE_SLEPC=OFF" ; MPI only + "-DMFEM_USE_MPFR=ON" + "-DMFEM_USE_SIDRE=OFF" ; Missing dep + "-DMFEM_USE_FMS=OFF" ; Missing dep + "-DMFEM_USE_CONDUIT=OFF" ; Missing dep + "-DMFEM_USE_PUMI=OFF" ; Missing dep, MPI only + "-DMFEM_USE_HIOP=OFF" ; Missing dep + "-DMFEM_USE_GSLIB=OFF" ; Missing dep + "-DMFEM_USE_CUDA=OFF" + "-DMFEM_USE_HIP=OFF" ; GPU library + "-DMFEM_USE_RAJA=OFF" ; Missing dep + "-DMFEM_USE_OCCA=OFF" ; Missing dep + "-DMFEM_USE_CEED=OFF" ; Missing dep + "-DMFEM_USE_CALIPER=OFF" ; Missing dep + "-DMFEM_USE_ALGOIM=OFF" ; Missing dep + "-DMFEM_USE_UMPIRE=OFF" ; Missing dep + "-DMFEM_USE_SIMD=ON" + "-DMFEM_USE_ADIOS2=OFF" ; Missing dep + "-DMFEM_USE_MKL_CPARDISO=OFF" ; Intel MKL + "-DMFEM_USE_MKL_PARDISO=OFF" + "-DMFEM_USE_MOONOLITH=OFF" ; Missing dep + "-DMFEM_USE_ADFORWARD=OFF" + "-DMFEM_USE_CODIPACK=OFF" ; Missing dep + "-DMFEM_USE_BENCHMARK=OFF" ; Only for benchmarks + "-DMFEM_USE_PARELAG=OFF" ; Missing dep, only for miniapps + "-DMFEM_USE_ENZYME=OFF" ; Missing dep, requires Clang + "-DMFEM_ENABLE_TESTING=ON" + "-DMFEM_ENABLE_EXAMPLES=ON" + "-DMFEM_ENABLE_MINIAPPS=ON" ; Used in some tests + "-DMFEM_ENABLE_GOOGLE_BENCHMARKS=OFF" + (string-append "-DHDF5_DIR=" #$(this-package-input "hdf5"))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'clean-mpi-references + (lambda _ + (substitute* "config/config.mk.in" + (("(MFEM_MPIEXEC += ).*" _ prefix) + ;; Set to non-empty value, to avoid running unexpected + ;; commands. + (string-append prefix (which "false") "\n")) + (("(MFEM_MPIEXEC_NP +=).*" _ prefix) + (string-append prefix "\n")) + (("(MFEM_MPI_NP +=).*" _ prefix) + (string-append prefix "\n"))))) + (add-after 'unpack 'clean-local-references + (lambda _ + (substitute* "config/config.mk.in" + (("(MFEM_BUILD_TAG += ).*" _ prefix) + (string-append prefix "(none)\n"))))) + (add-before 'check 'build-tests + (lambda _ + (invoke "cmake" "--build" "." "--target" "tests"))) + (add-after 'check 'build-doc + (lambda _ + (setenv "HOME" "/tmp") ; Writable cache for fontconfig + (invoke "cmake" "--build" "." "--target" "doc"))) + (add-after 'install 'remove-examples + (lambda _ + (delete-file-recursively + (string-append #$output "/examples")))) + (add-after 'install 'install-doc + (lambda _ + (let ((docdir (string-append #$output:doc "/share/doc/" + #$name "-" #$version))) + (install-file "doc/CodeDocumentation.html" docdir) + (copy-recursively + "doc/CodeDocumentation" + (string-append docdir "/CodeDocumentation"))))) + (add-after 'install 'fix-library-paths + (let ((mpfr #$(this-package-input "mpfr")) + (libunwind #$(this-package-input "libunwind"))) + (lambda _ + (substitute* (string-append + #$output "/lib/cmake/mfem/MFEMTargets.cmake") + ((";mpfr;") + (string-append ";" mpfr "/lib/libmpfr.so;")) + ((";unwind;") + (string-append ";" libunwind "/lib/libunwind.so;"))) + (substitute* (string-append #$output "/share/mfem/config.mk") + ((" mpfr ") + (string-append " -Wl,-rpath," mpfr "/lib" + " -L" mpfr "/lib" + " -lmpfr ")) + ((" unwind ") + (string-append " -Wl,-rpath," libunwind "/lib" + " -L" libunwind "/lib" + " -lunwind "))))))))) + (native-inputs + (list doxygen graphviz perl)) ; For documentation + ;; No propagated inputs necessary because the installed CMake files and + ;; share/mfem/config.mk provide the full list of include directories. + (inputs + (list gnutls + hdf5 ; For NetCDF + lapack + libunwind + metis-suitesparse ; For SuiteSparse + mpfr + netcdf + suitesparse-amd + suitesparse-btf + suitesparse-camd + suitesparse-ccolamd + suitesparse-cholmod + suitesparse-colamd + suitesparse-config + suitesparse-klu + suitesparse-umfpack + sundials + zlib)) + ;; TODO: Enable MFEM_USE_SIMD only if tuned? + (properties '((tunable? . #t))) + (home-page "https://mfem.org/") + (synopsis "Finite element library") + (description "MFEM is a modular parallel C++ library for finite element +methods. Its goal is to enable high-performance scalable finite element +discretization research and application development on a wide variety of +platforms, ranging from laptops to supercomputers.") + (license license:bsd-3))) + (define-public flann (package (name "flann") diff --git a/gnu/packages/patches/mfem-fix-mk-file-export.patch b/gnu/packages/patches/mfem-fix-mk-file-export.patch new file mode 100644 index 0000000000..fbd35a029a --- /dev/null +++ b/gnu/packages/patches/mfem-fix-mk-file-export.patch @@ -0,0 +1,29 @@ +From ccba86c0259c2ae56ad44a53d5d5a2a40822cbe3 Mon Sep 17 00:00:00 2001 +From: "Paul A. Patience" <paul <at> apatience.com> +Date: Thu, 28 Mar 2024 13:28:49 -0400 +Subject: [PATCH 2/2] Add forgotten variable to mfem_export_mk_files + +MFEM_USE_MKL_PARDISO was missing. +--- + config/cmake/modules/MfemCmakeUtilities.cmake | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/config/cmake/modules/MfemCmakeUtilities.cmake b/config/cmake/modules/MfemCmakeUtilities.cmake +index 204b7d87f..217f4eec7 100644 +--- a/config/cmake/modules/MfemCmakeUtilities.cmake ++++ b/config/cmake/modules/MfemCmakeUtilities.cmake +@@ -851,8 +851,9 @@ function(mfem_export_mk_files) + MFEM_USE_CONDUIT MFEM_USE_PUMI MFEM_USE_HIOP MFEM_USE_GSLIB MFEM_USE_CUDA + MFEM_USE_HIP MFEM_USE_RAJA MFEM_USE_OCCA MFEM_USE_CEED MFEM_USE_CALIPER + MFEM_USE_UMPIRE MFEM_USE_SIMD MFEM_USE_ADIOS2 MFEM_USE_MKL_CPARDISO +- MFEM_USE_ADFORWARD MFEM_USE_CODIPACK MFEM_USE_BENCHMARK MFEM_USE_PARELAG +- MFEM_USE_MOONOLITH MFEM_USE_ALGOIM MFEM_USE_ENZYME) ++ MFEM_USE_MKL_PARDISO MFEM_USE_ADFORWARD MFEM_USE_CODIPACK ++ MFEM_USE_BENCHMARK MFEM_USE_PARELAG MFEM_USE_MOONOLITH MFEM_USE_ALGOIM ++ MFEM_USE_ENZYME) + foreach(var ${CONFIG_MK_BOOL_VARS}) + if (${var}) + set(${var} YES) +-- +2.41.0 + diff --git a/gnu/packages/patches/mfem-remove-source-dir-refs.patch b/gnu/packages/patches/mfem-remove-source-dir-refs.patch new file mode 100644 index 0000000000..f9898748c7 --- /dev/null +++ b/gnu/packages/patches/mfem-remove-source-dir-refs.patch @@ -0,0 +1,101 @@ +From 0ad647e045e9cbe456ad0f5f3bdb6e015566e067 Mon Sep 17 00:00:00 2001 +From: "Paul A. Patience" <paul <at> apatience.com> +Date: Thu, 28 Mar 2024 13:22:48 -0400 +Subject: [PATCH 1/2] Remove references to MFEM_SOURCE_DIR + +--- + config/cmake/config.hpp.in | 3 --- + config/config.hpp.in | 3 --- + config/config.mk.in | 1 - + fem/ceed/interface/util.cpp | 8 +------- + general/device.cpp | 6 +----- + 5 files changed, 2 insertions(+), 19 deletions(-) + +diff --git a/config/cmake/config.hpp.in b/config/cmake/config.hpp.in +index 7cb2a958d..13f13c48d 100644 +--- a/config/cmake/config.hpp.in ++++ b/config/cmake/config.hpp.in +@@ -30,9 +30,6 @@ + #define MFEM_VERSION_MINOR (((MFEM_VERSION)/100)%100) + #define MFEM_VERSION_PATCH ((MFEM_VERSION)%100) + +-// MFEM source directory. +-#define MFEM_SOURCE_DIR "@MFEM_SOURCE_DIR@" +- + // MFEM install directory. + #define MFEM_INSTALL_DIR "@MFEM_INSTALL_DIR@" + +diff --git a/config/config.hpp.in b/config/config.hpp.in +index 39d7737c7..dbee1f32f 100644 +--- a/config/config.hpp.in ++++ b/config/config.hpp.in +@@ -30,9 +30,6 @@ + #define MFEM_VERSION_MINOR (((MFEM_VERSION)/100)%100) + #define MFEM_VERSION_PATCH ((MFEM_VERSION)%100) + +-// The absolute path of the MFEM source prefix. +-// #define MFEM_SOURCE_DIR "@MFEM_SOURCE_DIR@" +- + // The absolute path of the MFEM installation prefix. + // #define MFEM_INSTALL_DIR "@MFEM_INSTALL_DIR@" + +diff --git a/config/config.mk.in b/config/config.mk.in +index 303750bf5..d2f538666 100644 +--- a/config/config.mk.in ++++ b/config/config.mk.in +@@ -12,7 +12,6 @@ + # Variables corresponding to defines in config.hpp (YES, NO, or value) + MFEM_VERSION = @MFEM_VERSION@ + MFEM_VERSION_STRING = @MFEM_VERSION_STRING@ +-MFEM_SOURCE_DIR = @MFEM_SOURCE_DIR@ + MFEM_INSTALL_DIR = @MFEM_INSTALL_DIR@ + MFEM_GIT_STRING = @MFEM_GIT_STRING@ + MFEM_USE_MPI = @MFEM_USE_MPI@ +diff --git a/fem/ceed/interface/util.cpp b/fem/ceed/interface/util.cpp +index d122c2ab5..f2bc900a5 100644 +--- a/fem/ceed/interface/util.cpp ++++ b/fem/ceed/interface/util.cpp +@@ -257,20 +257,14 @@ const std::string &GetCeedPath() + if (ceed_path.empty()) + { + const char *install_dir = MFEM_INSTALL_DIR "/include/mfem/fem/ceed"; +- const char *source_dir = MFEM_SOURCE_DIR "/fem/ceed"; + struct_stat m_stat; + if (stat(install_dir, &m_stat) == 0 && S_ISDIR(m_stat.st_mode)) + { + ceed_path = install_dir; + } +- else if (stat(source_dir, &m_stat) == 0 && S_ISDIR(m_stat.st_mode)) +- { +- ceed_path = source_dir; +- } + else + { +- MFEM_ABORT("Cannot find libCEED kernels in MFEM_INSTALL_DIR or " +- "MFEM_SOURCE_DIR"); ++ MFEM_ABORT("Cannot find libCEED kernels in MFEM_INSTALL_DIR"); + } + // Could be useful for debugging: + // out << "Using libCEED dir: " << ceed_path << std::endl; +diff --git a/general/device.cpp b/general/device.cpp +index ccee71cd7..a68ba7191 100644 +--- a/general/device.cpp ++++ b/general/device.cpp +@@ -464,13 +464,9 @@ static void OccaDeviceSetup(const int dev) + { + mfemDir = MFEM_INSTALL_DIR "/include/mfem/"; + } +- else if (occa::io::exists(MFEM_SOURCE_DIR)) +- { +- mfemDir = MFEM_SOURCE_DIR; +- } + else + { +- MFEM_ABORT("Cannot find OCCA kernels in MFEM_INSTALL_DIR or MFEM_SOURCE_DIR"); ++ MFEM_ABORT("Cannot find OCCA kernels in MFEM_INSTALL_DIR"); + } + + occa::io::addLibraryPath("mfem", mfemDir); +-- +2.41.0 + base-commit: fb9549164520ad993c2fbbaedc899844d57baabc -- 2.41.0
guix-patches <at> gnu.org
:bug#70056
; Package guix-patches
.
(Tue, 01 Apr 2025 17:27:02 GMT) Full text and rfc822 format available.Message #17 received at 70056 <at> debbugs.gnu.org (full text, mbox):
From: Andreas Enge <andreas <at> enge.fr> To: "Paul A. Patience" <paul <at> apatience.com> Cc: 70056 <at> debbugs.gnu.org Subject: Re: [PATCH] gnu: Add mfem. Date: Tue, 1 Apr 2025 19:26:18 +0200
Hello Paul, I have just come across this issue as being tagged for the science team. Would you be interested in sending an updated patch? If yes, please cc me so that we can work towards including it. The size of the patches written by you is a bit intimidating. Byt maybe some issues have been solved in the current release 4.7? If not, it would be nice that for bugs in the source code, you either use an available upstream patch (and add a comment to the top of the patch on where it comes from), or submit a bug (maybe with your own patch if you provide one). Concerning changes required to the way Guix works, and which are not bugs upstream, we usually prefer to handle them in a phase, for instance with "substitute*". Also, not all of your changes seem necessary, for instance +-// The absolute path of the MFEM source prefix. +-// #define MFEM_SOURCE_DIR "@MFEM_SOURCE_DIR@" drops two lines that anyway are commented out. And more generally, it might not be necessary to touch MFEM_SOURCE_DIR at all; something to try out. Thanks, Andreas
Andreas Enge <andreas <at> enge.fr>
:"Paul A. Patience" <paul <at> apatience.com>
:Message #22 received at 70056-done <at> debbugs.gnu.org (full text, mbox):
From: Andreas Enge <andreas <at> enge.fr> To: "Paul A. Patience" <paul <at> apatience.com> Cc: 70056-done <at> debbugs.gnu.org Subject: Re: [PATCH] gnu: Add mfem. Date: Thu, 1 May 2025 09:16:00 +0200
Hello, closing for now, please feel free to reopen with an updated patch. Andreas
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Thu, 29 May 2025 11:24:18 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.