summary refs log tree commit diff
path: root/gnu/packages/mpi.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludovic.courtes@inria.fr>2022-01-17 16:03:57 +0100
committerLudovic Courtès <ludo@gnu.org>2022-01-17 19:05:48 +0100
commit7bf85e63c180e5ee235a8b0596096e1df34fd5d2 (patch)
tree4457ef2dc83d79732a5a844676177ed25117c6f8 /gnu/packages/mpi.scm
parentbf23862abc5fba6db2ab5481dd458487df6a784a (diff)
downloadguix-7bf85e63c180e5ee235a8b0596096e1df34fd5d2.tar.gz
gnu: mpich: Allow compilation with GCC 10.
Fixes <https://issues.guix.gnu.org/53320>
Reported by Clément Barthelemy <clement.barthelemy@inria.fr>.

* gnu/packages/mpi.scm (mpich)[arguments]: Add 'define-gfortran-wrapper'
phase.
Diffstat (limited to 'gnu/packages/mpi.scm')
-rw-r--r--gnu/packages/mpi.scm27
1 files changed, 25 insertions, 2 deletions
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index 16c42378fb..749214817d 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2017 Dave Love <fx@gnu.org>
@@ -502,7 +502,30 @@ arrays) that expose a buffer interface.")
                           before after)
                          (string-append "pmpi_convenience_libs = "
                                         before " " after)))
-                      #t)))))
+                      #t))
+                  (add-before 'configure 'define-gfortran-wrapper
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      ;; 'configure' checks whether the Fortran compiler
+                      ;; allows argument type mismatch.  Since gfortran >= 10
+                      ;; does not, provide a wrapper that passes
+                      ;; '-fallow-argument-mismatch' to get the desired
+                      ;; behavior.
+                      (mkdir-p ".gfortran-wrapper/bin")
+                      (call-with-output-file ".gfortran-wrapper/bin/gfortran"
+                        (lambda (port)
+                          (display (string-append "#!" (which "sh") "\n")
+                                   port)
+                          (display
+                           (string-append "exec \"" (which "gfortran")
+                                          "\" -fallow-argument-mismatch"
+                                          " \"$@\"\n")
+                           port)
+                          (chmod port #o755)))
+
+                      (setenv "PATH"
+                              (string-append (getcwd) "/"
+                                             ".gfortran-wrapper/bin:"
+                                             (getenv "PATH"))))))))
     (home-page "https://www.mpich.org/")
     (synopsis "Implementation of the Message Passing Interface (MPI)")
     (description