summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorEric Bavier <bavier@member.fsf.org>2016-07-08 17:44:30 -0500
committerEric Bavier <bavier@member.fsf.org>2016-07-20 21:16:25 -0500
commit29080870134c4ebc380d64a683d6445594357d2b (patch)
tree28fcb362db7a688191a01dad83358b32014d3856 /gnu
parent8787c555d9552a13be4917c4f4a0e37b61ab7b5e (diff)
downloadguix-patches-29080870134c4ebc380d64a683d6445594357d2b.tar
guix-patches-29080870134c4ebc380d64a683d6445594357d2b.tar.gz
gnu: superlu-dist: Remove non-free source.
* gnu/packages/maths.scm (superlu-dist)[source]: Replace non-free mc64ad.c source with stub.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/maths.scm24
1 files changed, 24 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 464cf8d412..7b5b2abd21 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1281,6 +1281,30 @@ also provides threshold-based ILU factorization preconditioners.")
"superlu_dist_" version ".tar.gz"))
(sha256
(base32 "1hnak09yxxp026blq8zhrl7685yip16svwngh1wysqxf8z48vzfj"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Replace the non-free implementation of MC64 with a stub
+ '(begin
+ (use-modules (ice-9 regex)
+ (ice-9 rdelim))
+ (call-with-output-file "SRC/mc64ad.c"
+ (lambda (port)
+ (display "
+#include <stdio.h>
+#include <stdlib.h>
+void mc64id_(int *a) {
+ fprintf (stderr, \"SuperLU_DIST: non-free MC64 not available. Aborting.\\n\");
+ abort ();
+}
+void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g,
+ int *h, int *i, int *j, int *k, double *l, int *m, int *n) {
+ fprintf (stderr, \"SuperLU_DIST: non-free MC64 not available. Aborting.\\n\");
+ abort ();
+}\n" port)))
+ (delete-file "SRC/mc64ad.f.bak")
+ (substitute* "SRC/util.c" ;adjust default algorithm
+ (("RowPerm[[:blank:]]*=[[:blank:]]*LargeDiag")
+ "RowPerm = NOROWPERM"))))
(patches (search-patches "superlu-dist-scotchmetis.patch"))))
(build-system gnu-build-system)
(native-inputs