unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: "Nicolò Balzarotti" <anothersms@gmail.com>
To: zimoun <zimon.toutoune@gmail.com>
Cc: 38546@debbugs.gnu.org
Subject: [bug#38546] [PATCH v5] Julia: Update to 1.3.1
Date: Wed, 26 Feb 2020 13:32:19 +0100	[thread overview]
Message-ID: <87blplwmuk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <87fteywndk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

Hi,

v5 of the Julia 1.3.1 update patch.

This patch updates julia to 1.3.1.  According to previous simon email,
fixes to julia build system and julia package submissions will be done
separately.

Thanks, Nicolò


[-- Attachment #2: v5-0001-gnu-Add-dsfmt.patch --]
[-- Type: text/x-patch, Size: 4201 bytes --]

From aa02b06ade12613f81ddc0415fb0eecffb808352 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:06:28 +0100
Subject: [PATCH v5 1/2] gnu: Add dsfmt.

* gnu/packages/maths.scm (dsfmt): New variable.
---
 gnu/packages/maths.scm | 72 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 10071c10d5..1c55334a7d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -33,6 +33,7 @@
 ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
 ;;; Copyright © 2019 Robert Smith <robertsmith@posteo.net>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -373,6 +374,77 @@ semiconductors.")
     (license license:gpl3+)
     (home-page "https://www.gnu.org/software/dionysus/")))
 
+(define-public dsfmt
+  (package
+    (name "dsfmt")
+    (version "2.2.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-"
+         version ".tar.gz"))
+       (sha256
+        (base32
+         "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"))
+       ;; julia needs those (and is the only program depending on dsfmt now)
+       (patches
+        (list
+         (origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://raw.githubusercontent.com/JuliaLang/julia/"
+                 "v1.3.0/deps/patches/dSFMT.c.patch"))
+           (sha256 (base32
+                    "09mhv11bms8jsmkmdqvlcgljwhzw3b6n9nncpi2b6dla9798hw2y"))
+           (file-name "dSFMT.c.patch"))
+         (origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://raw.githubusercontent.com/JuliaLang/julia/"
+                 "v1.3.0/deps/patches/dSFMT.h.patch"))
+           (sha256 (base32
+                    "1py5rd0yxic335lzka23f6x2dhncrpizpyrk57gi2f28c0p98y5n"))
+           (file-name "dSFMT.h.patch"))))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)            ;no configure script
+         (replace 'build
+           ;; upstream Makefile does not build a shared library
+           (lambda _
+             (invoke
+              "gcc"
+              ;; flags copied from julia
+              ;; https://github.com/JuliaLang/julia/blob/v1.3.0/deps/dsfmt.mk
+              "-DNDEBUG" "-DDSFMT_MEXP=19937"
+              "-fPIC" "-DDSFMT_DO_NOT_USE_OLD_NAMES"
+              "-O3" "-finline-functions" "-fomit-frame-pointer"
+              "-fno-strict-aliasing" "--param" "max-inline-insns-single=1800"
+              "-Wmissing-prototypes" "-Wall" "-std=c99" "-shared" "dSFMT.c"
+              "-o" "libdSFMT.so")))
+         (replace 'install              ;no "install" target
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((lib (string-append (assoc-ref outputs "out")
+                                       "/lib"))
+                   (inc (string-append (assoc-ref outputs "out")
+                                       "/include")))
+               (install-file "libdSFMT.so" lib)
+               (install-file "dSFMT.h" inc)
+               #t))))))
+    (synopsis "Double precision SIMD-oriented Fast Mersenne Twister")
+    (description
+     "The dSMFT package speeds up Fast Mersenne Twister generation by avoiding
+the expensive conversion of integer to double (floating point).  dSFMT directly
+generates double precision floating point pseudorandom numbers which have the
+IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985)
+format.  dSFMT is only available on the CPUs which use IEEE 754 format double
+precision floating point numbers.")
+    (home-page "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/")
+    (license license:bsd-3)))
+
 (define-public gsl
   (package
     (name "gsl")
-- 
2.25.0


[-- Attachment #3: v5-0002-gnu-julia-Update-to-1.3.1.patch --]
[-- Type: text/x-patch, Size: 27154 bytes --]

From 76584b9e84ee988d038a1f6ad61333207353e001 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:07:27 +0100
Subject: [PATCH v5 2/2] gnu: julia: Update to 1.3.1.

* gnu/packages/julia.scm (julia): Update to 1.3.1.
* gnu/packages/julia.scm (libuv-julia): Update to 2.0.0.
* gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch: New file.
* gnu/local.mk: Add julia-SOURCE_DATE_EPOCH-mtime.patch.
* gnu/packages/julia.scm (llvm-patch, llvm-patch-url): Rename to...
(julia-patch, llvm-patch-rul): ... these.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/julia.scm                        | 348 +++++++++---------
 .../julia-SOURCE_DATE_EPOCH-mtime.patch       |  22 ++
 3 files changed, 188 insertions(+), 184 deletions(-)
 create mode 100644 gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 1f7cad9d32..c2273d5745 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -26,6 +26,7 @@
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
 # Copyright © 2019 Brett Gilio <brettg@gnu.org>
 # Copyright © 2019 Amin Bandali <mab@gnu.org>
+# Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 #
 # This file is part of GNU Guix.
 #
@@ -1038,6 +1039,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/java-xerces-bootclasspath.patch	\
   %D%/packages/patches/java-xerces-build_dont_unzip.patch	\
   %D%/packages/patches/java-xerces-xjavac_taskdef.patch	\
+  %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch	\
   %D%/packages/patches/jbig2dec-ignore-testtest.patch		\
   %D%/packages/patches/jfsutils-add-sysmacros.patch		\
   %D%/packages/patches/jfsutils-include-systypes.patch		\
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 65a5e42beb..74d214930e 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,6 +29,7 @@
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages llvm)
@@ -43,18 +45,18 @@
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages ssh)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "26dbe5672c33fc885462c509fe2a9b36f35866fd")
-        (revision "6"))
-    ;; When upgrading Julia, also upgrade this.
-    ;; Get the commit from https://github.com/JuliaLang/julia/blob/v1.1.1/deps/libuv.version
+  (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1"))
+    ;; When upgrading Julia, also upgrade this.  Get the commit from
+    ;; https://github.com/JuliaLang/julia/blob/v1.3.1/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
-      (version (string-append "1.9.0-" revision "." (string-take commit 8)))
+      (version (string-append "2.0.0" "." (string-take commit 8)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -63,7 +65,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "17pn2xmqaramilx897s9grs966i5246gi6sric5alch4g9j4685n"))))
+                  "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -72,14 +74,37 @@
              (delete 'autogen)))))
       (home-page "https://github.com/JuliaLang/libuv"))))
 
-(define (llvm-patch-url version name)
+(define libunwind-julia
+  ;; The Julia projects requires their patched version.
+  ;; Get from https://github.com/JuliaLang/julia/tree/master/deps/patches
+  (package
+    (inherit libunwind)
+    (name "libunwind-julia")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/libunwind/libunwind-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
+       (patches
+        (list
+         (julia-patch "libunwind-prefer-extbl"
+                      "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
+         (julia-patch "libunwind-static-arm"
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+    (home-page "https://github.com/JuliaLang/tree/master/deps/")))
+
+(define (julia-patch-url version name)
   (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
-		 "/deps/patches/" name))
+                 "/deps/patches/" name ".patch"))
 
-(define (llvm-patch name sha)
-  (let ((version "1.1.1"))
+(define (julia-patch name sha)
+  (let ((version "1.3.1"))
     (origin (method url-fetch)
-	    (uri (llvm-patch-url version name))
+	    (uri (julia-patch-url version name))
 	    (sha256 (base32 sha))
 	    (file-name name))))
 
@@ -98,41 +123,44 @@
               ;; but they are required to build Julia.
               ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
               (patches
-               (list
-	        (llvm-patch "llvm-6.0-D44650.patch"
-			    "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
-	        (llvm-patch "llvm-6.0-DISABLE_ABI_CHECKS.patch"
-			    "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
-	        (llvm-patch "llvm-6.0-NVPTX-addrspaces.patch"
-			    "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
-	        (llvm-patch "llvm-6.0.0_D27296-libssp.patch"
-			    "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
-	        (llvm-patch "llvm-D27629-AArch64-large_model_6.0.1.patch"
-			    "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-	        (llvm-patch "llvm-D34078-vectorize-fdiv.patch"
-			    "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
-	        (llvm-patch "llvm-D42262-jumpthreading-not-i1.patch"
-			    "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
-	        (llvm-patch "llvm-D44892-Perf-integration.patch"
-			    "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
-	        (llvm-patch "llvm-D46460.patch"
-			    "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
-	        (llvm-patch "llvm-D49832-SCEVPred.patch"
-			    "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
-	        (llvm-patch "llvm-D50010-VNCoercion-ni.patch"
-			    "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
-	        (llvm-patch "llvm-D50167-scev-umin.patch"
-			    "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
-	        (llvm-patch "llvm-OProfile-line-num.patch"
-			    "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
-	        (llvm-patch "llvm-PPC-addrspaces.patch"
-			    "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
-	        (llvm-patch "llvm-rL323946-LSRTy.patch"
-			    "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
-	        (llvm-patch "llvm-rL326967-aligned-load.patch"
-			    "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
-	        (llvm-patch "llvm-rL327898.patch"
-			    "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))
+               (map (match-lambda
+                      ((name hash)
+                       (julia-patch name hash)))
+                    (list
+                     '("llvm-6.0-D44650"
+                       "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
+                     '("llvm-6.0-DISABLE_ABI_CHECKS"
+                       "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
+                     '("llvm-6.0-NVPTX-addrspaces"
+                       "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
+                     '("llvm-6.0.0_D27296-libssp"
+                       "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
+                     '("llvm-D27629-AArch64-large_model_6.0.1"
+                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
+                     '("llvm-D34078-vectorize-fdiv"
+                       "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
+                     '("llvm-D42262-jumpthreading-not-i1"
+                       "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
+                     '("llvm-D44892-Perf-integration"
+                       "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
+                     '("llvm-D46460"
+                       "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
+                     '("llvm-D49832-SCEVPred"
+                       "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
+                     '("llvm-D50010-VNCoercion-ni"
+                       "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
+                     '("llvm-D50167-scev-umin"
+                       "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
+                     '("llvm-OProfile-line-num"
+                       "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
+                     '("llvm-PPC-addrspaces"
+                       "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
+                     '("llvm-rL323946-LSRTy"
+                       "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
+                     '("llvm-rL326967-aligned-load"
+                       "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
+                     '("llvm-rL327898"
+                       "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq"))))))
     (arguments
      (substitute-keyword-arguments (package-arguments llvm-6)
        ((#:configure-flags flags)
@@ -158,7 +186,7 @@
 (define-public julia
   (package
     (name "julia")
-    (version "1.1.1")
+    (version "1.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -166,7 +194,9 @@
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "0hk983mywimclgnjc41zmlppm5kfdz2aj85ky07p49ilcqxi998f"))))
+                "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))
+              (patches
+               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -188,30 +218,25 @@
          (add-after 'unpack 'prepare-deps
            (lambda* (#:key inputs #:allow-other-keys)
              (mkdir "deps/srccache")
-             (copy-file (assoc-ref inputs "dsfmt")
-                        "deps/srccache/dsfmt-2.2.3.tar.gz")
+             ;; no USE_SYSTEM_{OBJCONV/LIBWHICH}
              (copy-file (assoc-ref inputs "objconv")
                         "deps/srccache/objconv.zip")
-             (copy-file (assoc-ref inputs "suitesparse")
-                        "deps/srccache/SuiteSparse-4.4.5.tar.gz")
-             (copy-file (string-append (assoc-ref inputs "virtualenv")
-                                       "/bin/virtualenv")
-                        "julia-env")
              (copy-file (assoc-ref inputs "libwhich")
                         (string-append "deps/srccache/libwhich-"
                                        "81e9723c0273d78493dc8c8ed570f68d9ce7e89e"
                                        ".tar.gz"))
-             (copy-file (assoc-ref inputs "rmath")
-                        "deps/srccache/Rmath-julia-0.1.tar.gz")
 
 	     ;; needed by libwhich
 	     (setenv "LD_LIBRARY_PATH"
 		     (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "fftw" "gmp" "lapack"
-			                 "libgit2" "mpfr" "openblas" "openlibm"
-			                 "openspecfun" "pcre2"))
+                                       '("arpack-ng" "curl" "dsfmt"
+                                         "gmp" "lapack"
+                                         "libssh2" "libgit2"
+                                         "mbedtls" "mpfr"
+                                         "openblas" "openlibm" "pcre2"
+                                         "suitesparse"))
                                   ":"))
 	     #t))
          ;; FIXME: Building the documentation requires Julia packages that
@@ -233,44 +258,12 @@
           ;; using the output of "/sbin/ldconfig -p".  Since ldconfig is not
           ;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
           (lambda* (#:key inputs #:allow-other-keys)
-            (use-modules (ice-9 match))
-            (substitute* "src/runtime_ccall.cpp"
-              ;; Patch out invocations of '/sbin/ldconfig' to avoid getting
-              ;; error messages about missing '/sbin/ldconfig' on Guix System.
-              (("popen\\(.*ldconfig.*\\);")
-               "NULL;\n")
-
-              ;; Populate 'sonameMap'.
-              (("jl_read_sonames.*;")
-               (string-join
-                (map (match-lambda
-                       ((input libname soname)
-                        (string-append
-                         "sonameMap[\"" libname "\"] = "
-                         "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
-                     '(("libc"        "libc"           "libc.so.6")
-                       ("pcre2"       "libpcre2-8"     "libpcre2-8.so")
-                       ("mpfr"        "libmpfr"        "libmpfr.so")
-                       ("openblas"    "libblas"        "libopenblas.so")
-                       ("arpack-ng"   "libarpack"      "libarpack.so")
-                       ("lapack"      "liblapack"      "liblapack.so")
-                       ("libgit2"     "libgit2"        "libgit2.so")
-                       ("gmp"         "libgmp"         "libgmp.so")
-                       ("openspecfun" "libopenspecfun" "libopenspecfun.so")
-                       ("fftw"        "libfftw3"       "libfftw3_threads.so")
-                       ("fftwf"       "libfftw3f"      "libfftw3f_threads.so"))))))
-            (substitute* "base/math.jl"
-              (("const libm = Base.libm_name")
-               (string-append "const libm = \""
-                              (assoc-ref inputs "openlibm")
-                              "/lib/libopenlibm.so"
-                              "\""))
-              (("const openspecfun = \"libopenspecfun\"")
-               (string-append "const openspecfun = \""
-                              (assoc-ref inputs "openspecfun")
-                              "/lib/libopenspecfun.so"
-                              "\"")))
-            #t))
+             (substitute* "base/math.jl"
+               (("const libm = Base.libm_name")
+                (string-append "const libm = \""
+                               (assoc-ref inputs "openlibm")
+                               "/lib/libopenlibm.so"
+                               "\"")))))
          (add-before 'build 'fix-include-and-link-paths
           (lambda* (#:key inputs #:allow-other-keys)
             ;; LIBUTF8PROC is a linker flag, not a build target.  It is
@@ -278,10 +271,10 @@
             ;; collection of build targets and a list of libraries to link
             ;; against.
             (substitute* "src/flisp/Makefile"
-              (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
-               "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
-              (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
-               "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
+               (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
+                "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
+               (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
+                "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
             ;; The REPL must be linked with libuv.
             (substitute* "ui/Makefile"
@@ -296,39 +289,50 @@
                               "/include/uv/errno.h")))
             #t))
          (add-before 'build 'replace-default-shell
-          (lambda _
-            (substitute* "base/client.jl"
-              (("/bin/sh") (which "sh")))
-            #t))
-         (add-after 'unpack 'hardcode-paths
            (lambda _
-             (substitute* "stdlib/InteractiveUtils/src/InteractiveUtils.jl"
-               (("`which") (string-append "`" (which "which")))
-               (("`wget")  (string-append "`" (which "wget"))))
+             (substitute* "base/client.jl"
+               (("/bin/sh") (which "sh")))
+             #t))
+         (add-before 'build 'fix-precompile
+           (lambda _
+             (substitute* "base/loading.jl"
+               (("something(Base.active_project(), \"\")") "\"\""))
              #t))
          (add-before 'check 'disable-broken-tests
            (lambda _
-             (define (touch file-name)
-               (call-with-output-file file-name (const #t)))
-	     ;; FIXME: All git tests works except this one. But *THIS* "fix"
-             ;; is not working, so right now I'm disabling all libgit2.jl tests
-	     ;; (substitute* "stdlib/LibGit2/test/libgit2.jl"
-	     ;; (("!LibGit2.use_http_path(cfg, github_cred)") "true")
-	     ;; (("LibGit2.use_http_path(cfg, mygit_cred)") "true"))
-             (map (lambda (test)
-                    (delete-file test)
-                    (touch test))
-	          '("stdlib/Sockets/test/runtests.jl"
-		    "stdlib/Distributed/test/runtests.jl"
-                    ;; FIXME: see above
-		    "stdlib/LibGit2/test/libgit2.jl"))
-	     (substitute* "test/choosetests.jl"
-	       ;; These tests fail, probably because some of the input
-	       ;; binaries have been stripped and thus backtraces don't look
-	       ;; as expected.
-	       (("\"backtrace\",") "")
-	       (("\"cmdlineargs\",") ""))
-	     #t)))
+             (substitute* "test/choosetests.jl"
+               (("tests = testnames")
+                ;; Those failings are not deterministic.  They depends on the
+                ;; running order.  I think it depends on the number of
+                ;; runners, disabling it for now
+                ;; https://github.com/JuliaLang/julia/issues/34330
+                "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\",
+                                          \"stress\",\"precompile\",
+                                          \"client\",\"stacktraces\"]),
+                                       testnames)"))
+             ;; When HOME is not set, julia calls uv_os_homedir, which in
+             ;; turns call getpwuid_r. Add the HOME env variable to the
+             ;; external julia call to fix this
+             (substitute* "test/cmdlineargs.jl"
+               (("\"JULIA_PROJECT\"") "\"HOME\"=>\"/tmp\", \"JULIA_PROJECT\""))
+             ;; Marking the test as broken as it's a known bug:
+             ;; https://github.com/JuliaLang/julia/issues/32377
+             (substitute* "stdlib/REPL/test/replcompletions.jl"
+               (("@test count") "@test_broken count"))
+             #t))
+	 (add-after 'install 'make-wrapper
+	   (lambda* (#:key inputs outputs #:allow-other-keys)
+	     (let* ((out (assoc-ref outputs "out"))
+		    (bin (string-append out "/bin"))
+		    (program "julia"))
+	       (with-directory-excursion bin
+		 (wrap-program program
+		   `("JULIA_LOAD_PATH" ":" prefix
+		     ("" "$JULIA_LOAD_PATH")))
+		 (wrap-program program
+		   `("JULIA_DEPOT_PATH" ":" prefix
+		     ("" "$JULIA_DEPOT_PATH"))))
+	       #t))))
        #:make-flags
        (list
         (string-append "prefix=" (assoc-ref %outputs "out"))
@@ -346,25 +350,20 @@
            (_ "MARCH=UNSUPPORTED"))
 
         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
-        "USE_SYSTEM_DSFMT=0"    ;not packaged for Guix and upstream has no
-                                ;build system for a shared library.
+        ;; list of "USE_SYSTEM_*" is here:
+        ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
+        "USE_SYSTEM_DSFMT=1"
+        "USE_SYSTEM_P7ZIP=1"
         "USE_SYSTEM_LAPACK=1"
         "USE_SYSTEM_BLAS=1"
         "USE_BLAS64=0"          ;needed when USE_SYSTEM_BLAS=1
         "LIBBLAS=-lopenblas"
         "LIBBLASNAME=libopenblas"
 
-        "USE_SYSTEM_FFTW=1"
-        "LIBFFTWNAME=libfftw3"
-        "LIBFFTWFNAME=libfftw3f"
-
-        ;; TODO: Suitesparse does not install shared libraries, so we cannot
-        ;; use the suitesparse package.
-        ;; "USE_SYSTEM_SUITESPARSE=1"
-        ;; (string-append "SUITESPARSE_INC=-I "
-        ;;                (assoc-ref %build-inputs "suitesparse")
-        ;;                "/include")
-
+        "USE_SYSTEM_SUITESPARSE=1"
+        (string-append "SUITESPARSE_INC=-I "
+                       (assoc-ref %build-inputs "suitesparse")
+                       "/include")
         "USE_GPL_LIBS=1"        ;proudly
         "USE_SYSTEM_UTF8PROC=1"
         (string-append "UTF8PROC_INC="
@@ -390,11 +389,16 @@
 	"USE_SYSTEM_MPFR=1"
 	"USE_SYSTEM_ARPACK=1"
 	"USE_SYSTEM_LIBGIT2=1"
-	"USE_SYSTEM_ZLIB=1"
-	"USE_SYSTEM_OPENSPECFUN=1")))
+        (string-append "LIBUV="
+                       (assoc-ref %build-inputs "libuv")
+                       "/lib/libuv.so")
+        (string-append "LIBUV_INC="
+                       (assoc-ref %build-inputs "libuv")
+                       "/include")
+        "USE_SYSTEM_ZLIB=1")))
     (inputs
      `(("llvm" ,llvm-julia)
-
+       ("p7zip" ,p7zip)
        ;; The bundled version is 3.3.0 so stick to that version.  With other
        ;; versions, we get test failures in 'linalg/arnoldi' as described in
        ;; <https://bugs.gnu.org/30282>.
@@ -403,12 +407,12 @@
        ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
        ("openblas" ,openblas) ;Julia does not build with Atlas
-       ("libunwind" ,libunwind)
+       ("libunwind" ,libunwind-julia)
        ("openlibm" ,openlibm)
-       ("openspecfun" ,openspecfun)
+       ("mbedtls" ,mbedtls-apache)
+       ("curl" ,curl)
        ("libgit2" ,libgit2)
-       ("fftw" ,fftw)
-       ("fftwf" ,fftwf)
+       ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
        ("libuv" ,libuv-julia)
        ("pcre2" ,pcre2)
@@ -418,31 +422,12 @@
        ("which" ,which)
        ("zlib" ,zlib)
        ("gmp" ,gmp)
-       ("virtualenv" ,python2-virtualenv)
+       ("suitesparse" ,suitesparse)
        ;; FIXME: The following inputs are downloaded from upstream to allow us
        ;; to use the lightweight Julia release tarball.  Ideally, these inputs
        ;; would eventually be replaced with proper Guix packages.
-
-       ;; TODO: run "make -f contrib/repackage_system_suitesparse4.make" to copy static lib
-       ;; Find dependency versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/77a2c1e245c85812dc1c7687540beedecc52758f/deps/Versions.make
-       ("rmath"
-	,(origin
-	   (method git-fetch)
-	   (uri (git-reference
-                 (url "https://github.com/JuliaLang/Rmath-julia")
-                 (commit "v0.1")))
-           (file-name "rmath-julia-0.1-checkout")
-	   (sha256
-	    (base32
-	     "1zkpy0cg5zivq40zbhbdgj9128fqzs2j94wkwih8nc6xaj3gp9p6"))))
-       ("suitesparse"
-        ,(origin
-           (method url-fetch)
-           (uri "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.5.tar.gz")
-           (sha256
-            (base32
-             "1jcbxb8jx5wlcixzf6n5dca2rcfx6mlcms1k2rl5gp67ay3bix43"))))
+       ;; Find dependencies versions here:
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
        ("objconv"
         ,(origin
            (method url-fetch)
@@ -466,16 +451,8 @@
                                        ".tar.gz"))
 	     (sha256
 	      (base32
-	       "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b")))))
-       ("dsfmt"
-        ,(origin
-           (method url-fetch)
-           (uri (string-append
-                 "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/"
-                 "SFMT/dSFMT-src-2.2.3.tar.gz"))
-           (sha256
-            (base32
-             "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"))))))
+               "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b")))))
+       ("dsfmt" ,dsfmt)))
     (native-inputs
      `(("openssl" ,openssl)
        ("perl" ,perl)
@@ -485,7 +462,10 @@
     (native-search-paths
      (list (search-path-specification
             (variable "JULIA_LOAD_PATH")
-            (files (list "share/julia/packages/")))))
+            (files (list "share/julia/packages/")))
+           (search-path-specification
+            (variable "JULIA_DEPOT_PATH")
+            (files (list "share/julia/")))))
     ;; Julia is not officially released for ARM and MIPS.
     ;; See https://github.com/JuliaLang/julia/issues/10639
     (supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
diff --git a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
new file mode 100644
index 0000000000..b60f284923
--- /dev/null
+++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
@@ -0,0 +1,22 @@
+Fix one of upstream non-determinism, tracked here:
+
+https://github.com/JuliaLang/julia/issues/34115
+https://github.com/JuliaLang/julia/issues/25900
+
+
+Patch by Nicoló Balzarotti <nicolo@nixo.xyz>.
+
+--- a/base/loading.jl
++++ b/base/loading.jl
+@@ -807,7 +807,10 @@
+         path = normpath(joinpath(dirname(prev), _path))
+     end
+     if _track_dependencies[]
+-        push!(_require_dependencies, (mod, path, mtime(path)))
++          push!(_require_dependencies,
++                (mod, path,
++                 haskey(ENV, "SOURCE_DATE_EPOCH") ?
++                 parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+     end
+     return path, prev
+ end
-- 
2.25.0


[-- Attachment #4: Type: text/plain, Size: 1384 bytes --]



Nicolò Balzarotti <anothersms@gmail.com> writes:

> zimoun <zimon.toutoune@gmail.com> writes:
>
>> Hi Nicolò,
>>
>> On Mon, 24 Feb 2020 at 21:59, Nicolò Balzarotti <anothersms@gmail.com> wrote:
>>
>>> Here's a friendly 1.3.1 + HTTP.jl + dependencies patch submission.
>>> Hopefully this time it's fine.  Package precompilation should be working
>>> now (except json, whose cache, for some reason, is not valid and gets
>>> rebuilt).
>>
>> Cool! Thank you.
>> I would like to first push 1.3.1, i.e., the patches v4.
>>
> OOk
>> Then let open another bug report with the patches attached here.
>> Otherwise, it seems a non-ending process. ;-)
>>
>>
>> About processing, if you use Magit to generate your patches, do not
>> forget to increment the reroll-count (W c C-m v) otherwise "git
>> format-patch -v5". It eases to know which version of the patches we
>> are talking about. For example, here it is the fifth.
>>
> Thanks! Didn't know about it. Should I re-submit them with the v5 prefix?
>>
>>> As a reminder: determinism is still not addressed and will be fixed in
>>> the 1.4.0 release (hopefully, upstream is still not that responsive).
>>> However, there are dozens of julia packages that I want to package, so
>>> if this first batch is finally fine, more will come.
>>
>> Yes, hope soon. :-)
>>
> Nicolò
>>
>> Cheers,
>> simon

  reply	other threads:[~2020-02-26 12:33 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87pnfgvqgt.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>
2019-12-09 13:36 ` [bug#38546] [PATCH 0/3] Julia: fix package build and add julia-xyz nixo
2019-10-10 15:49   ` [bug#38546] [PATCH 3/3] gnu: julia-xyz: Add julia-compat Nicolò Balzarotti
2019-12-15 21:46     ` Ludovic Courtès
2019-10-10 15:49   ` [bug#38546] [PATCH 1/3] gnu: julia: Set to JULIA_LOAD_PATH and JULIA_DEPOT_PATH variables Nicolò Balzarotti
2019-12-15 21:43     ` Ludovic Courtès
2019-10-10 15:49   ` [bug#38546] [PATCH 2/3] gnu: julia-build-system: Enable tests Nicolò Balzarotti
2019-12-15 21:45     ` Ludovic Courtès
2019-12-12  8:43   ` [bug#38546] [PATCH 01/11] gnu: julia: Update to 1.3.1 nixo
2019-12-15 21:40   ` [bug#38546] [PATCH 0/3] Julia: fix package build and add julia-xyz Ludovic Courtès
2020-01-10  9:25   ` [bug#38546] [PATCH 03/11] gnu: julia: Adjust indentation nixo
2020-01-17 18:40   ` [bug#38546] [PATCH 05/11] gnu: build: julia-build-system: fix package nixo
2020-01-18 12:58   ` [bug#38546] [PATCH 02/11] gnu: julia: use SOURCE_DATE_EPOCH for precompilation timestamp nixo
2020-01-18 13:05   ` [bug#38546] [PATCH 06/11] gnu: Add julia-compat nixo
2020-01-18 13:06   ` [bug#38546] [PATCH 07/11] gnu: Add julia-inifile nixo
2020-01-18 13:07   ` [bug#38546] [PATCH 08/11] gnu: Add julia-sha nixo
2020-01-18 13:07   ` [bug#38546] [PATCH 09/11] gnu: Add julia-binaryprovider nixo
2020-01-18 13:11   ` [bug#38546] [PATCH 10/11] gnu: Add julia-mbedtls nixo
2020-01-18 13:11   ` [bug#38546] [PATCH 11/11] gnu: Add julia-http nixo
2020-01-18 13:23   ` [bug#38546] [PATCH 04/11] use wrapper to set JULIA_LOAD_PATH and JULIA_DEPOT_PATH nixo
2020-01-18 13:32   ` [bug#38546] [Nicolò Balzarotti] [PATCH 00/11] Update julia to 1.3.1, fix precompilation, add HTTP.jl Nicolò Balzarotti
2020-01-18 13:36   ` [bug#38546] [nixo] [PATCH 01/11] gnu: julia: Update to 1.3.1 Nicolò Balzarotti
2020-01-18 13:42   ` [bug#38546] [Nicolò Balzarotti] [PATCH 00/10] Update julia to 1.3.1, fix precompilation, add HTTP.jl Nicolò Balzarotti
2020-01-18 13:59   ` [bug#38546] [00/11] Update Julia, Fix " Nicolò Balzarotti
2020-01-20 18:49     ` zimoun
2020-01-21 13:45       ` Nicolò Balzarotti
2020-01-22  9:22         ` zimoun
2020-01-22  9:59           ` Nicolò Balzarotti
2020-01-24 17:26             ` zimoun
2020-02-04 18:03               ` zimoun
2020-02-07 12:06                 ` zimoun
2020-02-11 14:51                 ` zimoun
2020-02-11 15:10                   ` Nicolò Balzarotti
2020-02-11 15:19                     ` zimoun
2020-02-11 15:24                       ` Nicolò Balzarotti
2020-01-18 14:35   ` [bug#38546] Julia patches v3 Nicolò Balzarotti
2020-02-11 17:58   ` [bug#38546] [PATCH v4] Update Julia 1.3.1: almost done zimoun
2020-02-24 12:50     ` zimoun
2020-02-24 20:59       ` Nicolò Balzarotti
2020-02-25 16:12         ` zimoun
2020-02-25 18:08           ` Nicolò Balzarotti
2020-02-26 12:32             ` Nicolò Balzarotti [this message]
2020-03-16 10:06               ` [bug#38546] [PATCH v5] Julia: Update to 1.3.1 Efraim Flashner
2020-03-17  7:51                 ` Nicolò Balzarotti
2020-03-17  8:12                   ` Efraim Flashner
2020-03-17 12:21                     ` Marius Bakke
2020-03-17 13:37                       ` Nicolò Balzarotti
2020-03-19 12:28                         ` Marius Bakke
2020-04-06  6:09                           ` Efraim Flashner
2020-04-06  8:18                             ` Nicolò Balzarotti
2020-04-06  8:37                               ` Efraim Flashner
2020-04-06 23:18                                 ` Nicolò Balzarotti
2020-04-07  5:41                                   ` Efraim Flashner
2020-04-07  6:05                                     ` Efraim Flashner
2020-04-07 14:35                                   ` bug#38546: " Efraim Flashner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87blplwmuk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me \
    --to=anothersms@gmail.com \
    --cc=38546@debbugs.gnu.org \
    --cc=zimon.toutoune@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).