GNU bug report logs - #39862
[PATCH 0/4] update Dune finite element packages

Previous Next

Package: guix-patches;

Reported by: Felix Gruber <felgru <at> posteo.net>

Date: Sun, 1 Mar 2020 20:07:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

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 39862 in the body.
You can then email your comments to 39862 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


Report forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Sun, 01 Mar 2020 20:07:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Felix Gruber <felgru <at> posteo.net>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 01 Mar 2020 20:07:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: guix-patches <at> gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>
Subject: [PATCH 0/4] update Dune finite element packages
Date: Sun,  1 Mar 2020 20:49:14 +0100
Hi Guix developers,

I've updated the packages of the Dune finite element library to properly
set up OpenMPI before running their tests instead of disabling all the
tests that failed due to mis-configured OpenMPI.
BTW, some other packages exist in variants with and without OpenMPI,
e.g. the dealii and dealii-openmpi packages. Do you think that it would
be useful to provide similar variants for the dune-* packages, which
could also be built without OpenMPI?

Additionally, I've added two new packages, dune-uggrid and dune-subgrid
that might be useful in combination with the existing Dune packages.

Finally, I've added the suitesparse package to dune-istl which as an
optional dependency allows to build some additional solvers for sparse
linear systems into dune-istl.

I've checked that all Dune packages still build after my changes (there
don't seem to be any other packages that depend on the dune-* packages).
Those builds were done using the updated suitesparse package that I've
submitted in bug #39839.

Felix Gruber (4):
  gnu: dune-*: set up MPI for tests
  gnu: add dune-uggrid 2.6.0
  gnu: Add dune-subgrid
  gnu: dune-istl: Build with suitesparse

 gnu/packages/maths.scm | 207 +++++++++++++++++++++--------------------
 1 file changed, 106 insertions(+), 101 deletions(-)

-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Sun, 01 Mar 2020 20:25:02 GMT) Full text and rfc822 format available.

Message #8 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>
Subject: [PATCH 1/4] gnu: dune-*: set up MPI for tests
Date: Sun,  1 Mar 2020 21:23:59 +0100
* gnu/packages/maths.scm (dune-common, dune-grid, dune-istl,
dune-alugrid): [arguments]: correctly set up MPI instead of disabling
tests that require MPI.
---
 gnu/packages/maths.scm | 110 ++++-------------------------------------
 1 file changed, 10 insertions(+), 100 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index cee626f179..effba8956f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4583,36 +4583,8 @@ linear algebra primitives specifically targeting graph analytics.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "remoteindicestest"
-                                      "remoteindicestest-mpi-2"
-                                      "syncertest"
-                                      "syncertest-mpi-2"
-                                      "variablesizecommunicatortest"
-                                      "variablesizecommunicatortest-mpi-2"
-                                      "arithmetictestsuitetest"
-                                      "assertandreturntest"
-                                      "assertandreturntest_ndebug"
-                                      "concept"
-                                      "debugaligntest"
-                                      "mpicollectivecommunication"
-                                      "mpicollectivecommunication-mpi-2"
-                                      "mpiguardtest"
-                                      "mpiguardtest-mpi-2"
-                                      "mpihelpertest"
-                                      "mpihelpertest-mpi-2"
-                                      "mpihelpertest2"
-                                      "mpihelpertest2-mpi-2")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("gmp" ,gmp)
        ("metis" ,metis)
@@ -4693,54 +4665,8 @@ This package contains the basic DUNE geometry classes.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "scsgmappertest"
-                                      "conformvolumevtktest"
-                                      "gnuplottest"
-                                      "nonconformboundaryvtktest"
-                                      "subsamplingvtktest"
-                                      "vtktest"
-                                      "vtktest-mpi-2"
-                                      "vtksequencetest"
-                                      "gmshtest-onedgrid"
-                                      "test-dgf-yasp"
-                                      "test-dgf-yasp-offset"
-                                      "test-dgf-oned"
-                                      "test-geogrid-yaspgrid"
-                                      "test-gridinfo"
-                                      "test-identitygrid"
-                                      "testiteratorranges"
-                                      "test-hierarchicsearch"
-                                      "test-parallel-ug-mpi-2"
-                                      "test-yaspgrid-backuprestore-equidistant"
-                                      "test-yaspgrid-backuprestore-equidistant-mpi-2"
-                                      "test-yaspgrid-backuprestore-equidistantoffset"
-                                      "test-yaspgrid-backuprestore-equidistantoffset-mpi-2"
-                                      "test-yaspgrid-backuprestore-tensor"
-                                      "test-yaspgrid-backuprestore-tensor-mpi-2"
-                                      "test-yaspgrid-tensorgridfactory"
-                                      "test-yaspgrid-tensorgridfactory-mpi-2"
-                                      "test-yaspgrid-yaspfactory-1d"
-                                      "test-yaspgrid-yaspfactory-1d-mpi-2"
-                                      "test-yaspgrid-yaspfactory-2d"
-                                      "test-yaspgrid-yaspfactory-2d-mpi-2"
-                                      "test-yaspgrid-yaspfactory-3d"
-                                      "test-yaspgrid-yaspfactory-3d-mpi-2"
-                                      "globalindexsettest"
-                                      "persistentcontainertest"
-                                      "structuredgridfactorytest"
-                                      "tensorgridfactorytest"
-                                      "vertexordertest")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
@@ -4783,24 +4709,8 @@ This package contains the basic DUNE grid classes.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "galerkintest"
-	                              "hierarchytest"
-	                              "pamgtest"
-	                              "pamg_comm_repart_test"
-	                              "matrixredisttest"
-	                              "vectorcommtest"
-	                              "matrixmarkettest")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("openmpi" ,openmpi)
@@ -4886,9 +4796,7 @@ assemble global function spaces on finite-element grids.")
          "1l9adgyjpra8mvwm445s0lpjshnb63jag85fb2hisbjn6bm320yj"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; 7 of 8 tests fail because they need a full MPI
-                   ; environment
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-include
            (lambda _
@@ -4900,7 +4808,9 @@ assemble global function spaces on finite-element grids.")
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "dune-grid") "/share"))
-             (apply invoke "make" "build_tests" make-flags))))))
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Sun, 01 Mar 2020 20:26:02 GMT) Full text and rfc822 format available.

Message #11 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>
Subject: [PATCH 2/4] gnu: add dune-uggrid 2.6.0
Date: Sun,  1 Mar 2020 21:24:50 +0100
* gnu/packages/maths.scm (dune-uggrid): New variable.
* gnu/packages/maths.scm (dune-grid): [propagated-inputs]: Add
dune-uggrid dependency, so that the UGGrid class in dune-grid can be
used by packages that have dune-grid as input.
* gnu/packages/maths.scm (dune-functions): [arguments]: enable tests
that previously weren't built as they require dune-uggrid.
---
 gnu/packages/maths.scm | 53 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index effba8956f..f78ed51454 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4646,6 +4646,42 @@ This package contains the basic DUNE geometry classes.")
     ;; GPL version 2 with "runtime exception"
     (license license:gpl2)))
 
+(define-public dune-uggrid
+  (package
+    (name "dune-uggrid")
+    (version "2.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://dune-project.org/download/"
+                           version "/dune-uggrid-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05l7a1gb78mny49anyxk6rjvn66rhgm30y72v5cjg0m5kfgr1a1f"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags))))))
+    (inputs
+     `(("dune-common" ,dune-common)
+       ("openmpi" ,openmpi)))
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://dune-project.org/")
+    (synopsis "Distributed and Unified Numerics Environment")
+    (description "DUNE, the Distributed and Unified Numerics Environment is a
+modular toolbox for solving @dfn{partial differential equations} (PDEs) with
+grid-based methods.  It supports the easy implementation of methods like
+@dfn{Finite Elements} (FE), @dfn{Finite Volumes} (FV), and also @dfn{Finite
+Differences} (FD).
+
+This package contains the DUNE UG grid classes.")
+    (license license:lgpl2.1)))
+
 (define-public dune-grid
   (package
     (name "dune-grid")
@@ -4675,6 +4711,8 @@ This package contains the basic DUNE geometry classes.")
        ("openblas" ,openblas)
        ("openmpi" ,openmpi)
        ("python" ,python)))
+    (propagated-inputs
+     `(("dune-uggrid" ,dune-uggrid)))
     (native-inputs
      `(("gfortran" ,gfortran)
        ("pkg-config" ,pkg-config)))
@@ -4888,7 +4926,20 @@ operating on statically typed trees of objects.")
         (base32
          "1an8gb477n8j0kzpbrv7nr1snh8pxip0gsxq6w63jc83gg3dj200"))))
     (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ; FIXME: tests require dune-uugrid
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           (lambda _
+             (setenv "ARGS"
+                     ;; unable to load GMSH file in this test
+                     "--exclude-regex gridviewfunctionspacebasistest")
+            #t))
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-istl" ,dune-istl)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Sun, 01 Mar 2020 20:26:02 GMT) Full text and rfc822 format available.

Message #14 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>
Subject: [PATCH 3/4] gnu: Add dune-subgrid
Date: Sun,  1 Mar 2020 21:25:07 +0100
* gnu/packages/maths.scm (dune-subgrid): New variable.
---
 gnu/packages/maths.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index f78ed51454..77ff0ede08 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4871,6 +4871,49 @@ implementation of the DUNE grid interface supporting either simplices or
 cubes.")
     (license license:gpl2+)))
 
+(define-public dune-subgrid
+  (package
+    (name "dune-subgrid")
+    (version "2.6.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+         (url "https://git.imp.fu-berlin.de/agnumpde/dune-subgrid")
+         (commit "releases/2.6-1")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+          "1gcv35rx3knqd54r4pp9rzd639db4j8w2r2ibq43w1mgwdcqhs64"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
+    (inputs
+     `(("dune-common" ,dune-common)
+       ("dune-geometry" ,dune-geometry)
+       ("dune-grid" ,dune-grid)
+       ("openmpi" ,openmpi)
+       ;; Optional
+       ("metis" ,metis)
+       ("openblas" ,openblas)
+       ("gmp" ,gmp)))
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://numerik.mi.fu-berlin.de/dune-subgrid/index.php")
+    (synopsis "Distributed and Unified Numerics Environment")
+    (description "The dune-subgrid module allows to mark elements of
+another hierarchical dune grid.  The set of marked elements can then be
+accessed as a hierarchical dune grid in its own right.  Dune-Subgrid
+provides the full grid interface including adaptive mesh refinement.")
+    (license license:gpl2+)))
+
 (define-public dune-typetree
   (package
     (name "dune-typetree")
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Sun, 01 Mar 2020 20:26:03 GMT) Full text and rfc822 format available.

Message #17 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>
Subject: [PATCH 4/4] gnu: dune-istl: Build with suitesparse
Date: Sun,  1 Mar 2020 21:25:23 +0100
* gnu/packages/maths.scm (dune-istl)[inputs]: Add suitesparse to build
additional solvers in dune-istl.
---
 gnu/packages/maths.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 77ff0ede08..8b59d8dfaf 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4754,6 +4754,7 @@ This package contains the basic DUNE grid classes.")
        ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
+       ("suitesparse" ,suitesparse)
        ("superlu" ,superlu)
        ("openblas" ,openblas)
        ("gmp" ,gmp)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Mon, 02 Mar 2020 14:54:02 GMT) Full text and rfc822 format available.

Message #20 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: zimoun <zimon.toutoune <at> gmail.com>
To: Felix Gruber <felgru <at> posteo.net>
Cc: 39862 <at> debbugs.gnu.org
Subject: Re: [bug#39862] [PATCH 0/4] update Dune finite element packages
Date: Mon, 2 Mar 2020 15:53:27 +0100
Hi Felix,

Thank for working on that.

On Sun, 1 Mar 2020 at 21:07, Felix Gruber <felgru <at> posteo.net> wrote:

> I've updated the packages of the Dune finite element library to properly
> set up OpenMPI before running their tests instead of disabling all the
> tests that failed due to mis-configured OpenMPI.
> BTW, some other packages exist in variants with and without OpenMPI,
> e.g. the dealii and dealii-openmpi packages. Do you think that it would
> be useful to provide similar variants for the dune-* packages, which
> could also be built without OpenMPI?

As an end-user, I prefer regular packages 'dune-*' without the input
'openmpi' and so with the related tests disabled and then their
variants; say 'dune-*-openmpi' with the input 'openmpi' correctly
setup-ed, as in your patch.


> I've checked that all Dune packages still build after my changes (there
> don't seem to be any other packages that depend on the dune-* packages).
> Those builds were done using the updated suitesparse package that I've
> submitted in bug #39839.

Usually, 'guix refresh -l' lists the packages that would need to be
rebuilt when upgrading a particular one.


All the best,
simon




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Mon, 02 Mar 2020 21:57:01 GMT) Full text and rfc822 format available.

Message #23 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: zimoun <zimon.toutoune <at> gmail.com>
Cc: 39862 <at> debbugs.gnu.org
Subject: Re: [bug#39862] [PATCH 0/4] update Dune finite element packages
Date: Mon, 2 Mar 2020 22:56:20 +0100
Hi Simon,

Thank you for your feedback.

On 3/2/20 3:53 PM, zimoun wrote:
> On Sun, 1 Mar 2020 at 21:07, Felix Gruber <felgru <at> posteo.net> wrote:
> 
>> BTW, some other packages exist in variants with and without OpenMPI,
>> e.g. the dealii and dealii-openmpi packages. Do you think that it would
>> be useful to provide similar variants for the dune-* packages, which
>> could also be built without OpenMPI?
> 
> As an end-user, I prefer regular packages 'dune-*' without the input
> 'openmpi' and so with the related tests disabled and then their
> variants; say 'dune-*-openmpi' with the input 'openmpi' correctly
> setup-ed, as in your patch.

Cool, I'll create an additional patch which splits all the dune packages
in those two variants. Still struggling a bit with guile to replace all
the dune-* packages with dune-*-openmpi in an inputs list without copy
pasting the whole list and changing the packages manually.

>> I've checked that all Dune packages still build after my changes (there
>> don't seem to be any other packages that depend on the dune-* packages).
>> Those builds were done using the updated suitesparse package that I've
>> submitted in bug #39839.
> 
> Usually, 'guix refresh -l' lists the packages that would need to be
> rebuilt when upgrading a particular one.

A `guix refresh -l dune-common` only gives me three other dune-*
packages that would result in rebuilding 10 packages overall. Since
dune-common is in the input of all the other dune-* packages, I think
that tells me that there are no non-dune packages that depend on any
dune-* package.

Best,
Felix




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:31:02 GMT) Full text and rfc822 format available.

Message #26 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 0/6] Update Dune finite element packages
Date: Tue, 10 Mar 2020 20:29:04 +0100
The first four patches in this patch set are identical to v1. I've added
two new patches that remove the openmpi dependency from all dune-*
packages and add new dedicated dune-*-openmpi packages instead.
To create these openmpi variants of the dune-* packages without a lot of
duplication, I've added a helper function add-openmpi-to-dune-package
that takes a dune-* package and returns its openmpi variant with the
correct dependencies and the setup code necessary to make Dune's tests
work with openmpi.

Felix Gruber (6):
  gnu: dune-*: set up MPI for tests
  gnu: add dune-uggrid 2.6.0
  gnu: Add dune-subgrid
  gnu: dune-istl: Build with suitesparse
  gnu: dune-*: remove openmpi dependency
  gnu: define dune-*-openmpi packages

 gnu/packages/maths.scm | 285 +++++++++++++++++++++++++----------------
 1 file changed, 172 insertions(+), 113 deletions(-)

-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:31:02 GMT) Full text and rfc822 format available.

Message #29 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 1/6] gnu: dune-*: set up MPI for tests
Date: Tue, 10 Mar 2020 20:29:05 +0100
* gnu/packages/maths.scm (dune-common, dune-grid, dune-istl,
dune-alugrid): [arguments]: correctly set up MPI instead of disabling
tests that require MPI.
---
 gnu/packages/maths.scm | 110 ++++-------------------------------------
 1 file changed, 10 insertions(+), 100 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index a990ffc45e..bec490ebc3 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4583,36 +4583,8 @@ linear algebra primitives specifically targeting graph analytics.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "remoteindicestest"
-                                      "remoteindicestest-mpi-2"
-                                      "syncertest"
-                                      "syncertest-mpi-2"
-                                      "variablesizecommunicatortest"
-                                      "variablesizecommunicatortest-mpi-2"
-                                      "arithmetictestsuitetest"
-                                      "assertandreturntest"
-                                      "assertandreturntest_ndebug"
-                                      "concept"
-                                      "debugaligntest"
-                                      "mpicollectivecommunication"
-                                      "mpicollectivecommunication-mpi-2"
-                                      "mpiguardtest"
-                                      "mpiguardtest-mpi-2"
-                                      "mpihelpertest"
-                                      "mpihelpertest-mpi-2"
-                                      "mpihelpertest2"
-                                      "mpihelpertest2-mpi-2")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("gmp" ,gmp)
        ("metis" ,metis)
@@ -4693,54 +4665,8 @@ This package contains the basic DUNE geometry classes.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "scsgmappertest"
-                                      "conformvolumevtktest"
-                                      "gnuplottest"
-                                      "nonconformboundaryvtktest"
-                                      "subsamplingvtktest"
-                                      "vtktest"
-                                      "vtktest-mpi-2"
-                                      "vtksequencetest"
-                                      "gmshtest-onedgrid"
-                                      "test-dgf-yasp"
-                                      "test-dgf-yasp-offset"
-                                      "test-dgf-oned"
-                                      "test-geogrid-yaspgrid"
-                                      "test-gridinfo"
-                                      "test-identitygrid"
-                                      "testiteratorranges"
-                                      "test-hierarchicsearch"
-                                      "test-parallel-ug-mpi-2"
-                                      "test-yaspgrid-backuprestore-equidistant"
-                                      "test-yaspgrid-backuprestore-equidistant-mpi-2"
-                                      "test-yaspgrid-backuprestore-equidistantoffset"
-                                      "test-yaspgrid-backuprestore-equidistantoffset-mpi-2"
-                                      "test-yaspgrid-backuprestore-tensor"
-                                      "test-yaspgrid-backuprestore-tensor-mpi-2"
-                                      "test-yaspgrid-tensorgridfactory"
-                                      "test-yaspgrid-tensorgridfactory-mpi-2"
-                                      "test-yaspgrid-yaspfactory-1d"
-                                      "test-yaspgrid-yaspfactory-1d-mpi-2"
-                                      "test-yaspgrid-yaspfactory-2d"
-                                      "test-yaspgrid-yaspfactory-2d-mpi-2"
-                                      "test-yaspgrid-yaspfactory-3d"
-                                      "test-yaspgrid-yaspfactory-3d-mpi-2"
-                                      "globalindexsettest"
-                                      "persistentcontainertest"
-                                      "structuredgridfactorytest"
-                                      "tensorgridfactorytest"
-                                      "vertexordertest")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
@@ -4783,24 +4709,8 @@ This package contains the basic DUNE grid classes.")
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags)))
-         ;; These tests fail because they require a fully functional MPI
-         ;; environment.
-         (add-after 'unpack 'disable-failing-tests
-           (lambda _
-             (setenv "ARGS"
-                     (string-append "--exclude-regex '("
-                                    (string-join
-                                     (list
-                                      "galerkintest"
-	                              "hierarchytest"
-	                              "pamgtest"
-	                              "pamg_comm_repart_test"
-	                              "matrixredisttest"
-	                              "vectorcommtest"
-	                              "matrixmarkettest")
-                                     "|")
-                                    ")'"))
-             #t)))))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("openmpi" ,openmpi)
@@ -4886,9 +4796,7 @@ assemble global function spaces on finite-element grids.")
          "1l9adgyjpra8mvwm445s0lpjshnb63jag85fb2hisbjn6bm320yj"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; 7 of 8 tests fail because they need a full MPI
-                   ; environment
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-include
            (lambda _
@@ -4900,7 +4808,9 @@ assemble global function spaces on finite-element grids.")
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "dune-grid") "/share"))
-             (apply invoke "make" "build_tests" make-flags))))))
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:31:03 GMT) Full text and rfc822 format available.

Message #32 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 2/6] gnu: add dune-uggrid 2.6.0
Date: Tue, 10 Mar 2020 20:29:06 +0100
* gnu/packages/maths.scm (dune-uggrid): New variable.
* gnu/packages/maths.scm (dune-grid): [propagated-inputs]: Add
dune-uggrid dependency, so that the UGGrid class in dune-grid can be
used by packages that have dune-grid as input.
* gnu/packages/maths.scm (dune-functions): [arguments]: enable tests
that previously weren't built as they require dune-uggrid.
---
 gnu/packages/maths.scm | 53 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 52 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index bec490ebc3..3f89efeff4 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4646,6 +4646,42 @@ This package contains the basic DUNE geometry classes.")
     ;; GPL version 2 with "runtime exception"
     (license license:gpl2)))
 
+(define-public dune-uggrid
+  (package
+    (name "dune-uggrid")
+    (version "2.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://dune-project.org/download/"
+                           version "/dune-uggrid-" version ".tar.gz"))
+       (sha256
+        (base32
+         "05l7a1gb78mny49anyxk6rjvn66rhgm30y72v5cjg0m5kfgr1a1f"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags))))))
+    (inputs
+     `(("dune-common" ,dune-common)
+       ("openmpi" ,openmpi)))
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://dune-project.org/")
+    (synopsis "Distributed and Unified Numerics Environment")
+    (description "DUNE, the Distributed and Unified Numerics Environment is a
+modular toolbox for solving @dfn{partial differential equations} (PDEs) with
+grid-based methods.  It supports the easy implementation of methods like
+@dfn{Finite Elements} (FE), @dfn{Finite Volumes} (FV), and also @dfn{Finite
+Differences} (FD).
+
+This package contains the DUNE UG grid classes.")
+    (license license:lgpl2.1)))
+
 (define-public dune-grid
   (package
     (name "dune-grid")
@@ -4675,6 +4711,8 @@ This package contains the basic DUNE geometry classes.")
        ("openblas" ,openblas)
        ("openmpi" ,openmpi)
        ("python" ,python)))
+    (propagated-inputs
+     `(("dune-uggrid" ,dune-uggrid)))
     (native-inputs
      `(("gfortran" ,gfortran)
        ("pkg-config" ,pkg-config)))
@@ -4888,7 +4926,20 @@ operating on statically typed trees of objects.")
         (base32
          "1an8gb477n8j0kzpbrv7nr1snh8pxip0gsxq6w63jc83gg3dj200"))))
     (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ; FIXME: tests require dune-uugrid
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           (lambda _
+             (setenv "ARGS"
+                     ;; unable to load GMSH file in this test
+                     "--exclude-regex gridviewfunctionspacebasistest")
+            #t))
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-istl" ,dune-istl)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:31:03 GMT) Full text and rfc822 format available.

Message #35 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 3/6] gnu: Add dune-subgrid
Date: Tue, 10 Mar 2020 20:29:07 +0100
* gnu/packages/maths.scm (dune-subgrid): New variable.
---
 gnu/packages/maths.scm | 43 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 3f89efeff4..9da38aad68 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4871,6 +4871,49 @@ implementation of the DUNE grid interface supporting either simplices or
 cubes.")
     (license license:gpl2+)))
 
+(define-public dune-subgrid
+  (package
+    (name "dune-subgrid")
+    (version "2.6.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+         (url "https://git.imp.fu-berlin.de/agnumpde/dune-subgrid")
+         (commit "releases/2.6-1")))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+          "1gcv35rx3knqd54r4pp9rzd639db4j8w2r2ibq43w1mgwdcqhs64"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'build 'build-tests
+           (lambda* (#:key make-flags #:allow-other-keys)
+             (apply invoke "make" "build_tests" make-flags)))
+         (add-before 'check 'mpi-setup
+           ,%openmpi-setup))))
+    (inputs
+     `(("dune-common" ,dune-common)
+       ("dune-geometry" ,dune-geometry)
+       ("dune-grid" ,dune-grid)
+       ("openmpi" ,openmpi)
+       ;; Optional
+       ("metis" ,metis)
+       ("openblas" ,openblas)
+       ("gmp" ,gmp)))
+    (native-inputs
+     `(("gfortran" ,gfortran)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://numerik.mi.fu-berlin.de/dune-subgrid/index.php")
+    (synopsis "Distributed and Unified Numerics Environment")
+    (description "The dune-subgrid module allows to mark elements of
+another hierarchical dune grid.  The set of marked elements can then be
+accessed as a hierarchical dune grid in its own right.  Dune-Subgrid
+provides the full grid interface including adaptive mesh refinement.")
+    (license license:gpl2+)))
+
 (define-public dune-typetree
   (package
     (name "dune-typetree")
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:31:04 GMT) Full text and rfc822 format available.

Message #38 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 4/6] gnu: dune-istl: Build with suitesparse
Date: Tue, 10 Mar 2020 20:29:08 +0100
* gnu/packages/maths.scm (dune-istl)[inputs]: Add suitesparse to build
additional solvers in dune-istl.
---
 gnu/packages/maths.scm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9da38aad68..2c03c00366 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4754,6 +4754,7 @@ This package contains the basic DUNE grid classes.")
        ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
+       ("suitesparse" ,suitesparse)
        ("superlu" ,superlu)
        ("openblas" ,openblas)
        ("gmp" ,gmp)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:32:01 GMT) Full text and rfc822 format available.

Message #41 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 5/6] gnu: dune-*: remove openmpi dependency
Date: Tue, 10 Mar 2020 20:29:09 +0100
* gnu/packages/maths.scm (dune-*)[inputs]: Remove openmpi dependency.
  [arguments]: remove code to setup openmpi for tests.
---
 gnu/packages/maths.scm | 37 +++++++------------------------------
 1 file changed, 7 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2c03c00366..33a5efd2f0 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4582,13 +4582,10 @@ linear algebra primitives specifically targeting graph analytics.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("gmp" ,gmp)
        ("metis" ,metis)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("python" ,python)
        ("superlu" ,superlu)))
@@ -4626,7 +4623,6 @@ Differences} (FD).")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("gmp" ,gmp)
@@ -4666,8 +4662,7 @@ This package contains the basic DUNE geometry classes.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
-     `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)))
+     `(("dune-common" ,dune-common)))
     (native-inputs
      `(("gfortran" ,gfortran)
        ("pkg-config" ,pkg-config)))
@@ -4700,16 +4695,13 @@ This package contains the DUNE UG grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("gmp" ,gmp)
        ("metis" ,metis)
        ("openblas" ,openblas)
-       ("openmpi" ,openmpi)
        ("python" ,python)))
     (propagated-inputs
      `(("dune-uggrid" ,dune-uggrid)))
@@ -4746,12 +4738,9 @@ This package contains the basic DUNE grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("suitesparse" ,suitesparse)
@@ -4799,7 +4788,6 @@ aggregation-based algebraic multigrid.")
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("superlu" ,superlu)
@@ -4847,14 +4835,11 @@ assemble global function spaces on finite-element grids.")
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "dune-grid") "/share"))
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4892,14 +4877,11 @@ cubes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4938,7 +4920,6 @@ provides the full grid interface including adaptive mesh refinement.")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("python" ,python)
@@ -4981,9 +4962,7 @@ operating on statically typed trees of objects.")
             #t))
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-istl" ,dune-istl)
@@ -4991,7 +4970,6 @@ operating on statically typed trees of objects.")
        ("dune-grid" ,dune-grid)
        ("dune-geometry" ,dune-geometry)
        ("dune-typetree" ,dune-typetree)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("metis" ,metis)
        ("python" ,python)
@@ -5032,7 +5010,6 @@ implemented as callable objects, and bases of finite element spaces.")
        ("dune-grid" ,dune-grid)
        ("dune-typetree" ,dune-typetree)
        ("dune-functions" ,dune-functions)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("eigen" ,eigen)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Tue, 10 Mar 2020 19:32:02 GMT) Full text and rfc822 format available.

Message #44 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>, zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v2 6/6] gnu: define dune-*-openmpi packages
Date: Tue, 10 Mar 2020 20:29:10 +0100
* gnu/packages/maths.scm (dune-*-openmpi): New variables.
* gnu/packages/maths.scm (add-openmpi-to-dune-package): New function to
  add openmpi to the inputs of a dune-* package and replace all dune-*
  packages in its input with the corresponding dune-*-openmpi package.
---
 gnu/packages/maths.scm | 79 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 78 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 33a5efd2f0..e904ca1bd8 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -126,7 +126,9 @@
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages wxwidgets)
   #:use-module (gnu packages xml)
-  #:use-module (srfi srfi-1))
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-34)
+  #:use-module (srfi srfi-35))
 
 (define-public aris
   (package
@@ -5027,6 +5029,81 @@ built on top of DUNE, the Distributed and Unified Numerics Environment.")
     ;; Either GPL version 2 with "runtime exception" or LGPLv3+.
     (license (list license:lgpl3+ license:gpl2))))
 
+(define add-openmpi-to-dune-package
+  (let ((transformed-packages '()))
+   (lambda (p)
+    (let* ((p-name (package-name p))
+           (replace-package
+             (lambda (mapping)
+               (let* ((name (car mapping))
+                      (p (cadr mapping))
+                      (new-p
+                        (match (assoc-ref transformed-packages name)
+                          (#f
+                           (if (string-prefix? "dune-" name)
+                               (raise (condition
+                                 (&message
+                                  (message
+                                   (format #f "Need to call \
+add-openmpi-to-dune-package on '~a' before '~a'."
+                                           name p-name)))))
+                               p))
+                          (transformed-p transformed-p))))
+                `(,name ,new-p))))
+           (substitute-mpi-packages (lambda (inputs)
+                                      (map replace-package inputs)))
+           (mpi-p
+             (package (inherit p)
+               (name (string-append p-name "-openmpi"))
+               (inputs `(,@(substitute-mpi-packages (package-inputs p))
+                         ("openmpi" ,openmpi)))
+               (propagated-inputs
+                 (substitute-mpi-packages (package-propagated-inputs p)))
+               (arguments
+                (substitute-keyword-arguments (package-arguments p)
+                  ((#:phases phases '%standard-phases)
+                   `(modify-phases ,phases
+                      (add-before 'check 'mpi-setup
+                        ,%openmpi-setup)))))
+               (synopsis (string-append (package-synopsis p) " (with MPI support)")))))
+     (begin
+      (set! transformed-packages
+            (acons p-name mpi-p transformed-packages))
+      mpi-p)))))
+
+(define-public dune-common-openmpi
+  (add-openmpi-to-dune-package dune-common))
+
+(define-public dune-geometry-openmpi
+  (add-openmpi-to-dune-package dune-geometry))
+
+(define-public dune-istl-openmpi
+  (add-openmpi-to-dune-package dune-istl))
+
+(define-public dune-typetree-openmpi
+  (add-openmpi-to-dune-package dune-typetree))
+
+(define-public dune-uggrid-openmpi
+  (add-openmpi-to-dune-package dune-uggrid))
+
+(define-public dune-grid-openmpi
+  (add-openmpi-to-dune-package dune-grid))
+
+(define-public dune-alugrid-openmpi
+  (add-openmpi-to-dune-package dune-alugrid))
+
+(define-public dune-subgrid-openmpi
+  (add-openmpi-to-dune-package dune-subgrid))
+
+(define-public dune-localfunctions-openmpi
+  (add-openmpi-to-dune-package dune-localfunctions))
+
+(define-public dune-functions-openmpi
+  (add-openmpi-to-dune-package dune-functions))
+
+(define-public dune-pdelab-openmpi
+  (add-openmpi-to-dune-package dune-pdelab))
+
 (define-public mlucas
   (package
     (name "mlucas")
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Thu, 12 Mar 2020 10:47:02 GMT) Full text and rfc822 format available.

Message #47 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Felix Gruber <felgru <at> posteo.net>
Cc: zimoun <zimon.toutoune <at> gmail.com>, 39862 <at> debbugs.gnu.org
Subject: Re: [bug#39862] [PATCH v2 0/6] Update Dune finite element packages
Date: Thu, 12 Mar 2020 11:46:08 +0100
Hi Felix,

Felix Gruber <felgru <at> posteo.net> skribis:

> The first four patches in this patch set are identical to v1. I've added
> two new patches that remove the openmpi dependency from all dune-*
> packages and add new dedicated dune-*-openmpi packages instead.
> To create these openmpi variants of the dune-* packages without a lot of
> duplication, I've added a helper function add-openmpi-to-dune-package
> that takes a dune-* package and returns its openmpi variant with the
> correct dependencies and the setup code necessary to make Dune's tests
> work with openmpi.
>
> Felix Gruber (6):
>   gnu: dune-*: set up MPI for tests
>   gnu: add dune-uggrid 2.6.0
>   gnu: Add dune-subgrid
>   gnu: dune-istl: Build with suitesparse

I applied all these.

>   gnu: dune-*: remove openmpi dependency
>   gnu: define dune-*-openmpi packages

I’ll comment on these separately.

Thank you!

Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Thu, 12 Mar 2020 12:43:01 GMT) Full text and rfc822 format available.

Message #50 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Felix Gruber <felgru <at> posteo.net>
Cc: zimoun <zimon.toutoune <at> gmail.com>, 39862 <at> debbugs.gnu.org
Subject: Re: [bug#39862] [PATCH v2 6/6] gnu: define dune-*-openmpi packages
Date: Thu, 12 Mar 2020 13:42:37 +0100
Hi again,

Felix Gruber <felgru <at> posteo.net> skribis:

> +(define add-openmpi-to-dune-package
> +  (let ((transformed-packages '()))
> +   (lambda (p)
> +    (let* ((p-name (package-name p))
> +           (replace-package
> +             (lambda (mapping)
> +               (let* ((name (car mapping))
> +                      (p (cadr mapping))
> +                      (new-p
> +                        (match (assoc-ref transformed-packages name)
> +                          (#f
> +                           (if (string-prefix? "dune-" name)
> +                               (raise (condition
> +                                 (&message
> +                                  (message
> +                                   (format #f "Need to call \
> +add-openmpi-to-dune-package on '~a' before '~a'."
> +                                           name p-name)))))
> +                               p))
> +                          (transformed-p transformed-p))))
> +                `(,name ,new-p))))
> +           (substitute-mpi-packages (lambda (inputs)
> +                                      (map replace-package inputs)))
> +           (mpi-p
> +             (package (inherit p)
> +               (name (string-append p-name "-openmpi"))
> +               (inputs `(,@(substitute-mpi-packages (package-inputs p))
> +                         ("openmpi" ,openmpi)))
> +               (propagated-inputs
> +                 (substitute-mpi-packages (package-propagated-inputs p)))
> +               (arguments
> +                (substitute-keyword-arguments (package-arguments p)
> +                  ((#:phases phases '%standard-phases)
> +                   `(modify-phases ,phases
> +                      (add-before 'check 'mpi-setup
> +                        ,%openmpi-setup)))))
> +               (synopsis (string-append (package-synopsis p) " (with MPI support)")))))
> +     (begin
> +      (set! transformed-packages
> +            (acons p-name mpi-p transformed-packages))
> +      mpi-p)))))

I think it’s a good idea to add those “-openmpi” packages.  However, I
have suggestions regarding the code above.  :-)

A general note: set!, car, cdr, etc. are frowned upon in Guix:

  https://guix.gnu.org/manual/en/html_node/Coding-Style.html

It seems to me that ‘replace-package’ above is overly generic: since
it’s an internal procedure, we don’t need to add error cases, messages,
etc.

Last, could it be written in terms of ‘package-mapping’?  That takes
care of graph traversal and memoization.

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Thu, 12 Mar 2020 21:06:01 GMT) Full text and rfc822 format available.

Message #53 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH v3 0/2] Add dune-*-openmpi packages
Date: Thu, 12 Mar 2020 22:05:11 +0100
Hi Ludo’,

thanks for your suggestions regarding the creation of the dune-*-openmpi
packages. I've rewritten the add-openmpi-to-dune-package in terms of
package-mapping as you suggested.

You'll find the modified version of my last two patches in the following
two emails.

Many thanks,
Felix

Felix Gruber (2):
  gnu: dune-*: remove openmpi dependency
  gnu: define dune-*-openmpi packages

 gnu/packages/maths.scm | 90 ++++++++++++++++++++++++++++--------------
 1 file changed, 60 insertions(+), 30 deletions(-)

-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Thu, 12 Mar 2020 21:06:02 GMT) Full text and rfc822 format available.

Message #56 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH v3 1/2] gnu: dune-*: remove openmpi dependency
Date: Thu, 12 Mar 2020 22:05:12 +0100
* gnu/packages/maths.scm (dune-*)[inputs]: Remove openmpi dependency.
  [arguments]: remove code to setup openmpi for tests.
---
 gnu/packages/maths.scm | 37 +++++++------------------------------
 1 file changed, 7 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2c03c00366..33a5efd2f0 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4582,13 +4582,10 @@ linear algebra primitives specifically targeting graph analytics.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("gmp" ,gmp)
        ("metis" ,metis)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("python" ,python)
        ("superlu" ,superlu)))
@@ -4626,7 +4623,6 @@ Differences} (FD).")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("gmp" ,gmp)
@@ -4666,8 +4662,7 @@ This package contains the basic DUNE geometry classes.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
-     `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)))
+     `(("dune-common" ,dune-common)))
     (native-inputs
      `(("gfortran" ,gfortran)
        ("pkg-config" ,pkg-config)))
@@ -4700,16 +4695,13 @@ This package contains the DUNE UG grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("gmp" ,gmp)
        ("metis" ,metis)
        ("openblas" ,openblas)
-       ("openmpi" ,openmpi)
        ("python" ,python)))
     (propagated-inputs
      `(("dune-uggrid" ,dune-uggrid)))
@@ -4746,12 +4738,9 @@ This package contains the basic DUNE grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("suitesparse" ,suitesparse)
@@ -4799,7 +4788,6 @@ aggregation-based algebraic multigrid.")
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("superlu" ,superlu)
@@ -4847,14 +4835,11 @@ assemble global function spaces on finite-element grids.")
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "dune-grid") "/share"))
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4892,14 +4877,11 @@ cubes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4938,7 +4920,6 @@ provides the full grid interface including adaptive mesh refinement.")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("python" ,python)
@@ -4981,9 +4962,7 @@ operating on statically typed trees of objects.")
             #t))
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-istl" ,dune-istl)
@@ -4991,7 +4970,6 @@ operating on statically typed trees of objects.")
        ("dune-grid" ,dune-grid)
        ("dune-geometry" ,dune-geometry)
        ("dune-typetree" ,dune-typetree)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("metis" ,metis)
        ("python" ,python)
@@ -5032,7 +5010,6 @@ implemented as callable objects, and bases of finite element spaces.")
        ("dune-grid" ,dune-grid)
        ("dune-typetree" ,dune-typetree)
        ("dune-functions" ,dune-functions)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("eigen" ,eigen)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Thu, 12 Mar 2020 21:07:01 GMT) Full text and rfc822 format available.

Message #59 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH v3 2/2] gnu: define dune-*-openmpi packages
Date: Thu, 12 Mar 2020 22:05:13 +0100
* gnu/packages/maths.scm (dune-*-openmpi): New variables.
* gnu/packages/maths.scm (add-openmpi-to-dune-package): New function to
  add openmpi to the inputs of a dune-* package and replace all dune-*
  packages in its input with the corresponding dune-*-openmpi package.
---
 gnu/packages/maths.scm | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 33a5efd2f0..ac89064a7f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5027,6 +5027,59 @@ built on top of DUNE, the Distributed and Unified Numerics Environment.")
     ;; Either GPL version 2 with "runtime exception" or LGPLv3+.
     (license (list license:lgpl3+ license:gpl2))))
 
+(define add-openmpi-to-dune-package
+  (let ((dune-package?
+          (lambda (p) (string-prefix? "dune-" (package-name p)))))
+    (package-mapping
+      (lambda (p)
+        (if (dune-package? p)
+            (package (inherit p)
+              (name (string-append (package-name p) "-openmpi"))
+              (inputs `(,@(package-inputs p)
+                        ("openmpi" ,openmpi)))
+              (arguments
+               (substitute-keyword-arguments (package-arguments p)
+                 ((#:phases phases '%standard-phases)
+                  `(modify-phases ,phases
+                     (add-before 'check 'mpi-setup
+                       ,%openmpi-setup)))))
+              (synopsis (string-append (package-synopsis p) " (with MPI support)")))
+            p))
+      (lambda (p) (not (dune-package? p))))))
+
+(define-public dune-common-openmpi
+  (add-openmpi-to-dune-package dune-common))
+
+(define-public dune-geometry-openmpi
+  (add-openmpi-to-dune-package dune-geometry))
+
+(define-public dune-istl-openmpi
+  (add-openmpi-to-dune-package dune-istl))
+
+(define-public dune-typetree-openmpi
+  (add-openmpi-to-dune-package dune-typetree))
+
+(define-public dune-uggrid-openmpi
+  (add-openmpi-to-dune-package dune-uggrid))
+
+(define-public dune-grid-openmpi
+  (add-openmpi-to-dune-package dune-grid))
+
+(define-public dune-alugrid-openmpi
+  (add-openmpi-to-dune-package dune-alugrid))
+
+(define-public dune-subgrid-openmpi
+  (add-openmpi-to-dune-package dune-subgrid))
+
+(define-public dune-localfunctions-openmpi
+  (add-openmpi-to-dune-package dune-localfunctions))
+
+(define-public dune-functions-openmpi
+  (add-openmpi-to-dune-package dune-functions))
+
+(define-public dune-pdelab-openmpi
+  (add-openmpi-to-dune-package dune-pdelab))
+
 (define-public mlucas
   (package
     (name "mlucas")
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Fri, 13 Mar 2020 09:43:02 GMT) Full text and rfc822 format available.

Message #62 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Felix Gruber <felgru <at> posteo.net>
Cc: 39862 <at> debbugs.gnu.org
Subject: Re: [PATCH v3 2/2] gnu: define dune-*-openmpi packages
Date: Fri, 13 Mar 2020 10:42:42 +0100
Hi Felix,

Felix Gruber <felgru <at> posteo.net> skribis:

> * gnu/packages/maths.scm (dune-*-openmpi): New variables.
> * gnu/packages/maths.scm (add-openmpi-to-dune-package): New function to
>   add openmpi to the inputs of a dune-* package and replace all dune-*
>   packages in its input with the corresponding dune-*-openmpi package.

Nitpick: no need to repeat the file name above.  It would also be great
if you could list all the new variables.

> +      (lambda (p) (not (dune-package? p))))))

You can replace the lambda with:

  (negate dune-package?)

One last thing: could you look at the output of, say, ‘guix graph
dune-geometry-openmpi’ and ensure we’re not duplicating more nodes than
needed in the graph?

For example, you can compare node counts with:

  guix graph dune-geometry | grep 'label =' | wc -l
  guix graph dune-geometry-openmpi | grep 'label =' | wc -l

The difference should be less than:

  guix graph openmpi | grep 'label =' | wc -l

If that works well, please send an updated patch and we should be ready
to go!

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Fri, 13 Mar 2020 17:27:01 GMT) Full text and rfc822 format available.

Message #65 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 39862 <at> debbugs.gnu.org
Subject: Re: [PATCH v3 2/2] gnu: define dune-*-openmpi packages
Date: Fri, 13 Mar 2020 18:26:11 +0100
Hi Ludo’,

On 3/13/20 10:42 AM, Ludovic Courtès wrote:
> Felix Gruber <felgru <at> posteo.net> skribis:
> 
>> * gnu/packages/maths.scm (dune-*-openmpi): New variables.
>> * gnu/packages/maths.scm (add-openmpi-to-dune-package): New function to
>>   add openmpi to the inputs of a dune-* package and replace all dune-*
>>   packages in its input with the corresponding dune-*-openmpi package.
> 
> Nitpick: no need to repeat the file name above.  It would also be great
> if you could list all the new variables.

Sure, no problem.

>> +      (lambda (p) (not (dune-package? p))))))
> 
> You can replace the lambda with:
> 
>   (negate dune-package?)

Thanks for this hint, as I'm new to Scheme, my knowledge of its standard
library is still pretty limited. The negate function is quite useful.

> One last thing: could you look at the output of, say, ‘guix graph
> dune-geometry-openmpi’ and ensure we’re not duplicating more nodes than
> needed in the graph?
> 
> For example, you can compare node counts with:
> 
>   guix graph dune-geometry | grep 'label =' | wc -l
>   guix graph dune-geometry-openmpi | grep 'label =' | wc -l
> 
> The difference should be less than:
> 
>   guix graph openmpi | grep 'label =' | wc -l
> 
> If that works well, please send an updated patch and we should be ready
> to go!

I get the following numbers:

 graph dune-geometry | grep 'label =' | wc -l
 70

 guix graph dune-geometry-openmpi | grep 'label =' | wc -l
 143

 guix graph openmpi | grep 'label =' | wc -l
 137

The difference seems to be OK: 143 - 70 = 73 < 137.

I'll send the updated patch ASAP.

Best Regards,
Felix




Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Fri, 13 Mar 2020 17:32:02 GMT) Full text and rfc822 format available.

Message #68 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH v4 1/2] gnu: dune-*: remove openmpi dependency
Date: Fri, 13 Mar 2020 18:30:37 +0100
* gnu/packages/maths.scm (dune-*)[inputs]: Remove openmpi dependency.
  [arguments]: remove code to setup openmpi for tests.
---
 gnu/packages/maths.scm | 37 +++++++------------------------------
 1 file changed, 7 insertions(+), 30 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 2c03c00366..33a5efd2f0 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4582,13 +4582,10 @@ linear algebra primitives specifically targeting graph analytics.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("gmp" ,gmp)
        ("metis" ,metis)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("python" ,python)
        ("superlu" ,superlu)))
@@ -4626,7 +4623,6 @@ Differences} (FD).")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("gmp" ,gmp)
@@ -4666,8 +4662,7 @@ This package contains the basic DUNE geometry classes.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
-     `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)))
+     `(("dune-common" ,dune-common)))
     (native-inputs
      `(("gfortran" ,gfortran)
        ("pkg-config" ,pkg-config)))
@@ -4700,16 +4695,13 @@ This package contains the DUNE UG grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("gmp" ,gmp)
        ("metis" ,metis)
        ("openblas" ,openblas)
-       ("openmpi" ,openmpi)
        ("python" ,python)))
     (propagated-inputs
      `(("dune-uggrid" ,dune-uggrid)))
@@ -4746,12 +4738,9 @@ This package contains the basic DUNE grid classes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("suitesparse" ,suitesparse)
@@ -4799,7 +4788,6 @@ aggregation-based algebraic multigrid.")
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("superlu" ,superlu)
@@ -4847,14 +4835,11 @@ assemble global function spaces on finite-element grids.")
            (lambda* (#:key inputs make-flags #:allow-other-keys)
              (setenv "CPLUS_INCLUDE_PATH"
                      (string-append (assoc-ref inputs "dune-grid") "/share"))
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4892,14 +4877,11 @@ cubes.")
        (modify-phases %standard-phases
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-geometry" ,dune-geometry)
        ("dune-grid" ,dune-grid)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("metis" ,metis)
        ("openblas" ,openblas)
@@ -4938,7 +4920,6 @@ provides the full grid interface including adaptive mesh refinement.")
              (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("python" ,python)
@@ -4981,9 +4962,7 @@ operating on statically typed trees of objects.")
             #t))
          (add-after 'build 'build-tests
            (lambda* (#:key make-flags #:allow-other-keys)
-             (apply invoke "make" "build_tests" make-flags)))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
+             (apply invoke "make" "build_tests" make-flags))))))
     (inputs
      `(("dune-common" ,dune-common)
        ("dune-istl" ,dune-istl)
@@ -4991,7 +4970,6 @@ operating on statically typed trees of objects.")
        ("dune-grid" ,dune-grid)
        ("dune-geometry" ,dune-geometry)
        ("dune-typetree" ,dune-typetree)
-       ("openmpi" ,openmpi)
        ("openblas" ,openblas)
        ("metis" ,metis)
        ("python" ,python)
@@ -5032,7 +5010,6 @@ implemented as callable objects, and bases of finite element spaces.")
        ("dune-grid" ,dune-grid)
        ("dune-typetree" ,dune-typetree)
        ("dune-functions" ,dune-functions)
-       ("openmpi" ,openmpi)
        ;; Optional
        ("openblas" ,openblas)
        ("eigen" ,eigen)
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Fri, 13 Mar 2020 17:32:02 GMT) Full text and rfc822 format available.

Message #71 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Felix Gruber <felgru <at> posteo.net>
To: 39862 <at> debbugs.gnu.org
Cc: Felix Gruber <felgru <at> posteo.net>,
 Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH v4 2/2] gnu: define dune-*-openmpi packages
Date: Fri, 13 Mar 2020 18:30:38 +0100
* gnu/packages/maths.scm (dune-common-openmpi, dune-geometry-openmpi,
dune-istl-openmpi, dune-typetree-openmpi, dune-uggrid-openmpi,
dune-grid-openmpi, dune-alugrid-openmpi, dune-subgrid-openmpi,
dune-localfunctions-openmpi, dune-functions-openmpi,
dune-pdelab-openmpi): New variables.
(add-openmpi-to-dune-package): New function to add openmpi to the
inputs of a dune-* package and replace all dune-* packages in its
input with the corresponding dune-*-openmpi package.
---
 gnu/packages/maths.scm | 53 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 33a5efd2f0..6c2813f100 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5027,6 +5027,59 @@ built on top of DUNE, the Distributed and Unified Numerics Environment.")
     ;; Either GPL version 2 with "runtime exception" or LGPLv3+.
     (license (list license:lgpl3+ license:gpl2))))
 
+(define add-openmpi-to-dune-package
+  (let ((dune-package?
+          (lambda (p) (string-prefix? "dune-" (package-name p)))))
+    (package-mapping
+      (lambda (p)
+        (if (dune-package? p)
+            (package (inherit p)
+              (name (string-append (package-name p) "-openmpi"))
+              (inputs `(,@(package-inputs p)
+                        ("openmpi" ,openmpi)))
+              (arguments
+               (substitute-keyword-arguments (package-arguments p)
+                 ((#:phases phases '%standard-phases)
+                  `(modify-phases ,phases
+                     (add-before 'check 'mpi-setup
+                       ,%openmpi-setup)))))
+              (synopsis (string-append (package-synopsis p) " (with MPI support)")))
+            p))
+      (negate dune-package?))))
+
+(define-public dune-common-openmpi
+  (add-openmpi-to-dune-package dune-common))
+
+(define-public dune-geometry-openmpi
+  (add-openmpi-to-dune-package dune-geometry))
+
+(define-public dune-istl-openmpi
+  (add-openmpi-to-dune-package dune-istl))
+
+(define-public dune-typetree-openmpi
+  (add-openmpi-to-dune-package dune-typetree))
+
+(define-public dune-uggrid-openmpi
+  (add-openmpi-to-dune-package dune-uggrid))
+
+(define-public dune-grid-openmpi
+  (add-openmpi-to-dune-package dune-grid))
+
+(define-public dune-alugrid-openmpi
+  (add-openmpi-to-dune-package dune-alugrid))
+
+(define-public dune-subgrid-openmpi
+  (add-openmpi-to-dune-package dune-subgrid))
+
+(define-public dune-localfunctions-openmpi
+  (add-openmpi-to-dune-package dune-localfunctions))
+
+(define-public dune-functions-openmpi
+  (add-openmpi-to-dune-package dune-functions))
+
+(define-public dune-pdelab-openmpi
+  (add-openmpi-to-dune-package dune-pdelab))
+
 (define-public mlucas
   (package
     (name "mlucas")
-- 
2.25.1





Information forwarded to guix-patches <at> gnu.org:
bug#39862; Package guix-patches. (Fri, 13 Mar 2020 21:29:01 GMT) Full text and rfc822 format available.

Message #74 received at 39862 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Felix Gruber <felgru <at> posteo.net>
Cc: 39862 <at> debbugs.gnu.org
Subject: Re: [PATCH v3 2/2] gnu: define dune-*-openmpi packages
Date: Fri, 13 Mar 2020 22:28:11 +0100
Hi,

Felix Gruber <felgru <at> posteo.net> skribis:

>>> +      (lambda (p) (not (dune-package? p))))))
>> 
>> You can replace the lambda with:
>> 
>>   (negate dune-package?)
>
> Thanks for this hint, as I'm new to Scheme, my knowledge of its standard
> library is still pretty limited.

Sure, I think sharing knowledge is one of the goals of review.

>> One last thing: could you look at the output of, say, ‘guix graph
>> dune-geometry-openmpi’ and ensure we’re not duplicating more nodes than
>> needed in the graph?
>> 
>> For example, you can compare node counts with:
>> 
>>   guix graph dune-geometry | grep 'label =' | wc -l
>>   guix graph dune-geometry-openmpi | grep 'label =' | wc -l
>> 
>> The difference should be less than:
>> 
>>   guix graph openmpi | grep 'label =' | wc -l
>> 
>> If that works well, please send an updated patch and we should be ready
>> to go!
>
> I get the following numbers:
>
>  graph dune-geometry | grep 'label =' | wc -l
>  70
>
>  guix graph dune-geometry-openmpi | grep 'label =' | wc -l
>  143
>
>  guix graph openmpi | grep 'label =' | wc -l
>  137
>
> The difference seems to be OK: 143 - 70 = 73 < 137.

Looks good, thanks!

Ludo’.




Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Sat, 14 Mar 2020 16:56:02 GMT) Full text and rfc822 format available.

Notification sent to Felix Gruber <felgru <at> posteo.net>:
bug acknowledged by developer. (Sat, 14 Mar 2020 16:56:02 GMT) Full text and rfc822 format available.

Message #79 received at 39862-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Felix Gruber <felgru <at> posteo.net>
Cc: 39862-done <at> debbugs.gnu.org
Subject: Re: [PATCH v4 1/2] gnu: dune-*: remove openmpi dependency
Date: Sat, 14 Mar 2020 17:55:34 +0100
Hi,

Felix Gruber <felgru <at> posteo.net> skribis:

> * gnu/packages/maths.scm (dune-*)[inputs]: Remove openmpi dependency.
>   [arguments]: remove code to setup openmpi for tests.

[...]

> * gnu/packages/maths.scm (dune-common-openmpi, dune-geometry-openmpi,
> dune-istl-openmpi, dune-typetree-openmpi, dune-uggrid-openmpi,
> dune-grid-openmpi, dune-alugrid-openmpi, dune-subgrid-openmpi,
> dune-localfunctions-openmpi, dune-functions-openmpi,
> dune-pdelab-openmpi): New variables.
> (add-openmpi-to-dune-package): New function to add openmpi to the
> inputs of a dune-* package and replace all dune-* packages in its
> input with the corresponding dune-*-openmpi package.

Pushed, thanks!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 12 Apr 2020 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 351 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.