diff --git a/gnu-system.am b/gnu-system.am index 91e5e521f8..cbf9223424 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -550,6 +550,7 @@ dist_patch_DATA = \ gnu/packages/patches/polkit-drop-test.patch \ gnu/packages/patches/portaudio-audacity-compat.patch \ gnu/packages/patches/procps-make-3.82.patch \ + gnu/packages/patches/pt-scotch-build-parallelism.patch \ gnu/packages/patches/pulseaudio-fix-mult-test.patch \ gnu/packages/patches/pulseaudio-longer-test-timeout.patch \ gnu/packages/patches/pycairo-wscript.patch \ diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 4e0b1eee9c..e4fe03bbbb 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014 John Darrington -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2015 Eric Bavier ;;; Copyright © 2014 Federico Beffa ;;; Copyright © 2014 Mathieu Lirzin ;;; Copyright © 2015 Ricardo Wurmus @@ -785,15 +785,16 @@ implemented in ANSI C, and MPI for communications.") (define-public scotch (package (name "scotch") - (version "6.0.0") + (version "6.0.4") (source (origin (method url-fetch) - (uri (string-append "https://gforge.inria.fr/frs/download.php/31831/" + (uri (string-append "https://gforge.inria.fr/frs/download.php/34618/" "scotch_" version ".tar.gz")) (sha256 - (base32 "0yfqf9lk7chb3h42777x42x4adx0v3n0b41q0cdqrdmscp4iczp5")) - (patches (list (search-patch "scotch-test-threading.patch"))))) + (base32 "1ir088mvrqggyqdkx9qfynmiaffqbyih5qfl5mga2nrlm1qlsgzm")) + (patches (list (search-patch "scotch-test-threading.patch") + (search-patch "pt-scotch-build-parallelism.patch"))))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) @@ -820,7 +821,7 @@ CCS = gcc CCP = mpicc CCD = gcc CPPFLAGS =~{ -D~a~} -CFLAGS = -O2 -g $(CPPFLAGS) +CFLAGS = -O2 -g -fPIC $(CPPFLAGS) LDFLAGS = -lz -lm -lrt -lpthread CP = cp LEX = flex -Pscotchyy -olex.yy.c @@ -833,8 +834,7 @@ YACC = bison -pscotchyy -y -b y '("COMMON_FILE_COMPRESS_GZ" "COMMON_PTHREAD" "COMMON_RANDOM_FIXED_SEED" - ;; TODO: Define once our MPI supports - ;; MPI_THREAD_MULTIPLE + ;; XXX: Causes invalid frees in superlu-dist tests ;; "SCOTCH_PTHREAD" ;; "SCOTCH_PTHREAD_NUMBER=2" "restrict=__restrict"))))) diff --git a/gnu/packages/patches/pt-scotch-build-parallelism.patch b/gnu/packages/patches/pt-scotch-build-parallelism.patch new file mode 100644 index 0000000000..2ac5f27f52 --- /dev/null +++ b/gnu/packages/patches/pt-scotch-build-parallelism.patch @@ -0,0 +1,13 @@ +Building with -j may cause the esmumps_main target to fail with a "no rule for +dependency libptesmumps.a" error. Fix the dependency name. + +--- scotch_6.0.4/src/esmumps/Makefile 2012-12-01 08:29:29.000000000 -0600 ++++ scotch_6.0.4/src/esmumps/Makefile 2015-06-15 17:29:23.279605734 -0500 +@@ -160,6 +160,6 @@ + order.h \ + symbol.h \ + esmumps.h \ +- lib$(ESMUMPSLIB)$(LIB) \ ++ libesmumps$(LIB) \ + $(libdir)/lib$(SCOTCHLIB)$(LIB) \ + $(libdir)/lib$(SCOTCHLIB)errexit$(LIB) diff --git a/gnu/packages/patches/scotch-test-threading.patch b/gnu/packages/patches/scotch-test-threading.patch index 2527a6e6dd..de8cc49c41 100644 --- a/gnu/packages/patches/scotch-test-threading.patch +++ b/gnu/packages/patches/scotch-test-threading.patch @@ -1,139 +1,22 @@ -* These tests assume threading support, even when the library is compiled - without it. Protect these checks. +Fix this test so that it succeeds when the library is not compiled with +SCOTCH_PTHREAD. -* Tests should not require keyboard interaction. - ---- a/src/check/test_scotch_dgraph_band.c 2012-09-27 10:46:42.000000000 -0500 -+++ b/src/check/test_scotch_dgraph_band.c 2014-05-13 14:36:07.479270243 -0500 -@@ -99,10 +99,12 @@ - errorPrint ("main: Cannot initialize (1)"); - exit (1); - } -+#ifdef SCOTCH_PTHREAD - if (thrdlvlreqval > thrdlvlproval) { - errorPrint ("main: Cannot initialize (2)"); - exit (1); - } -+#endif - - if (argc != 2) { - errorPrint ("main: invalid number of parameters"); -@@ -115,12 +117,14 @@ - - fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); - -+#ifdef SCOTCH_DEBUG_CHECK2 - if (proclocnum == 0) { /* Synchronize on keybord input */ - char c; - - printf ("Waiting for key press...\n"); - scanf ("%c", &c); - } -+#endif /* SCOTCH_DEBUG_CHECK2 */ - - if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); ---- a/src/check/test_scotch_dgraph_grow.c 2012-11-30 12:19:33.000000000 -0600 -+++ b/src/check/test_scotch_dgraph_grow.c 2014-05-13 14:35:31.307269303 -0500 -@@ -103,10 +103,12 @@ - errorPrint ("main: Cannot initialize (1)"); - exit (1); - } -+#ifdef SCOTCH_PTHREAD - if (thrdlvlreqval > thrdlvlproval) { - errorPrint ("main: Cannot initialize (2)"); - exit (1); - } -+#endif - - if (argc != 2) { - errorPrint ("main: invalid number of parameters"); -@@ -119,12 +121,14 @@ - - fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); - -+#ifdef SCOTCH_DEBUG_CHECK2 - if (proclocnum == 0) { /* Synchronize on keybord input */ - char c; - - printf ("Waiting for key press...\n"); - scanf ("%c", &c); - } -+#endif /* SCOTCH_DEBUG_CHECK2 */ - - if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */ - errorPrint ("main: cannot communicate"); ---- a/src/check/test_scotch_dgraph_redist.c 2012-09-26 11:42:27.000000000 -0500 -+++ b/src/check/test_scotch_dgraph_redist.c 2014-05-13 14:34:30.323267722 -0500 -@@ -98,10 +98,12 @@ - errorPrint ("main: Cannot initialize (1)"); - exit (1); - } -+#ifdef SCOTCH_PTHREAD - if (thrdlvlreqval > thrdlvlproval) { - errorPrint ("main: Cannot initialize (2)"); - exit (1); - } -+#endif - - if (argc != 2) { - errorPrint ("main: invalid number of parameters"); -@@ -114,7 +116,6 @@ - - fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ()); - --#define SCOTCH_DEBUG_CHECK2 - #ifdef SCOTCH_DEBUG_CHECK2 - if (proclocnum == 0) { /* Synchronize on keybord input */ - char c; ---- /tmp/nix-build-scotch-6.0.0.drv-9/scotch_6.0.0/src/check/test_common_thread.c 2012-11-30 11:05:23.000000000 -0600 -+++ scotch_6.0.0/src/check/test_common_thread.c 2014-05-13 17:26:27.159535244 -0500 -@@ -90,7 +90,7 @@ - /* */ - /*************************/ - --#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) -+#ifdef SCOTCH_PTHREAD - - static - void -@@ -161,7 +161,7 @@ - return (o); - } - --#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ -+#endif /* SCOTCH_PTHREAD */ - - /*********************/ - /* */ +--- scotch_6.0.4/src/check/test_common_thread.c 2014-09-28 11:39:59.000000000 -0500 ++++ scotch_6.0.4/src/check/test_common_thread.c 2015-01-10 00:52:00.076229542 -0600 @@ -175,14 +175,14 @@ char * argv[]) { TestThreadGroup groudat; -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) -+#ifdef SCOTCH_PTHREAD ++#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD)) TestThread * restrict thrdtab; int thrdnbr; --#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ -+#endif /* SCOTCH_PTHREAD */ + #endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ SCOTCH_errorProg (argv[0]); -#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) -+#ifdef SCOTCH_PTHREAD ++#if ((defined COMMON_PTHREAD) && (defined SCOTCH_PTHREAD)) thrdnbr = SCOTCH_PTHREAD_NUMBER; groudat.redusum = COMPVAL (thrdnbr); -@@ -197,9 +197,9 @@ - errorPrint ("main: cannot launch or run threads"); - return (1); - } --#else /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ -- printf ("Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD\n"); --#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */ -+#else /* not SCOTCH_PTHREAD */ -+ printf ("Scotch not compiled with SCOTCH_PTHREAD\n"); -+#endif /* not SCOTCH_PTHREAD */ - - return (0); - }