civodul pushed a commit to branch master
in repository guix.
commit 7bf85e63c180e5ee235a8b0596096e1df34fd5d2
Author: Ludovic Courtès <[email protected]>
AuthorDate: Mon Jan 17 16:03:57 2022 +0100
gnu: mpich: Allow compilation with GCC 10.
Fixes <https://issues.guix.gnu.org/53320>
Reported by Clément Barthelemy <[email protected]>.
* gnu/packages/mpi.scm (mpich)[arguments]: Add 'define-gfortran-wrapper'
phase.
---
gnu/packages/mpi.scm | 27 +++++++++++++++++++++++++--
1 file 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 <[email protected]>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès
<[email protected]>
+;;; Copyright © 2014-2022 Ludovic Courtès <[email protected]>
;;; Copyright © 2014 Ian Denhardt <[email protected]>
;;; Copyright © 2016 Andreas Enge <[email protected]>
;;; Copyright © 2017 Dave Love <[email protected]>
@@ -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