unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#48325] update of julia to 1.6.1
@ 2021-05-09 21:53 Jean-Baptiste Volatier via Guix-patches via
  2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
  0 siblings, 1 reply; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-05-09 21:53 UTC (permalink / raw)
  To: 48325

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

Hi !
I would like to submit this patch to update julia to 1.6.1.
Best regards,
JB.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: julia.patch --]
[-- Type: text/x-patch; name=julia.patch, Size: 32473 bytes --]

From d0fad0eab1f41420c00cb4d4c233ce7079b58ec3 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Sun, 9 May 2021 23:36:03 +0200
Subject: [PATCH] gnu: julia: update to 1.6.1

gnu: openlibm: update to 0.7.4
gnu: pcre2: update to 10.56
gnu: utf8proc: update to 2.6.1
---
 gnu/packages/julia.scm     | 349 ++++++++++++++++++++++++-------------
 gnu/packages/maths.scm     |   6 +-
 gnu/packages/pcre.scm      |   4 +-
 gnu/packages/textutils.scm |  21 ++-
 4 files changed, 242 insertions(+), 138 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..73ccdc80ee 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
@@ -48,14 +50,15 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
-        (revision "2"))
+  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
+        (revision "3"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.6.0/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -68,7 +71,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
+                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -97,7 +100,9 @@
          (julia-patch "libunwind-prefer-extbl"
                       "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
          (julia-patch "libunwind-static-arm"
-                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+         (julia-patch "libunwind-cfa-rsp"
+                      "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))
     (home-page "https://github.com/JuliaLang/tree/master/deps/")))
 
 (define (julia-patch-url version name)
@@ -105,7 +110,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.3"))
+  (let ((version "1.6.1"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -113,71 +118,77 @@
 
 (define llvm-julia
   (package
-    (inherit llvm-9)
+    (inherit llvm-11)
     (name "llvm-julia")
-    (source (origin
-              (inherit (package-source llvm-9))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm-exegesis-mingw"
-                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
-                     '("llvm-test-plugin-mingw"
-                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-8.0-D66657-codegen-degenerate"
-                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
-                     '("llvm-8.0-D71495-vectorize-freduce"
-                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
-                     '("llvm-D75072-SCEV-add-type"
-                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
-                     '("llvm-9.0-D65174-limit-merge-stores"
-                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
-                     '("llvm9-D71443-PPC-MC-redef-symbol"
-                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
-                     '("llvm-9.0-D78196"
-                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-9.0-D85499"
-                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
-              (patch-flags '("-p1"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-9)
+     (substitute-keyword-arguments (package-arguments llvm-11)
        ((#:configure-flags flags)
         `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
-           "-DCMAKE_BUILD_TYPE=Release"
+          "-DCMAKE_BUILD_TYPE=Release"
+
+          ;; Build a native compiler and the NVPTX backend (NVIDIA) since
+          ;; Julia insists on it, nothing more.  This reduces build times and
+          ;; disk usage.
+          ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
+          "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
 
-           ;; Build a native compiler and the NVPTX backend (NVIDIA) since
-           ;; Julia insists on it, nothing more.  This reduces build times and
-           ;; disk usage.
-           ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
-           "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
+          "-DLLVM_INSTALL_UTILS=ON"
+          "-DLLVM_BUILD_TESTS=ON"
+          "-DLLVM_ENABLE_FFI=ON"
+          "-DLLVM_ENABLE_RTTI=ON"
+          ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
+          ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
+          ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
+          "-DLLVM_ENABLE_DUMP=ON"
+          "-DLLVM_LINK_LLVM_DYLIB=ON"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; applying patches from julia
+           ;; list of patches can be found in deps/llvm.mk in julia source
+           (add-after 'unpack 'julia-patches
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((patch
+                      (lambda (patchname flag)
+                        (invoke "patch" flag "-i" (string-append "julia-src/deps/patches/" patchname ".patch")))))
+                 (mkdir-p "julia-src")
+                 (invoke "tar" "xf" (assoc-ref inputs "julia-source") "-C" "julia-src" "--strip-components=1")
+                 (map (lambda (patchname)
+                        (patch patchname "-p1")) (list "llvm-D27629-AArch64-large_model_6.0.1"
+                                                       "llvm8-D34078-vectorize-fdiv"
+                                                       "llvm-7.0-D44650"
+                                                       "llvm-6.0-DISABLE_ABI_CHECKS"
+                                                       "llvm9-D50010-VNCoercion-ni"
+                                                       "llvm7-revert-D44485"
+                                                       "llvm-11-D75072-SCEV-add-type"
+                                                       "llvm-julia-tsan-custom-as"
+                                                       "llvm-D80101"
+                                                       "llvm-D84031"
+                                                       "llvm-10-D85553"
+                                                       "llvm-10-unique_function_clang-sa"
+                                                       "llvm-11-D85313-debuginfo-empty-arange"
+                                                       "llvm-11-D90722-rtdyld-absolute-relocs"
+                                                       "llvm-invalid-addrspacecast-sink"
+                                                       "llvm-11-D92906-ppc-setjmp"
+                                                       "llvm-11-PR48458-X86ISelDAGToDAG"
+                                                       "llvm-11-D93092-ppc-knownbits"
+                                                       "llvm-11-D93154-globalisel-as"
+                                                       "llvm-11-ppc-half-ctr"
+                                                       "llvm-11-ppc-sp-from-bp"
+                                                       "llvm-rGb498303066a6-gcc11-header-fix"
+                                                       "llvm-11-D94813-mergeicmps"
+                                                       "llvm-11-D94980-CTR-half"
+                                                       "llvm-11-D94058-sext-atomic-ops"
+                                                       "llvm-11-D96283-dagcombine-half"))
+                 (map (lambda (patchname)
+                        (patch patchname "-p2")) (list "llvm-11-AArch64-FastIsel-bug"
+                                                       "llvm-11-D97435-AArch64-movaddrreg"
+                                                       "llvm-11-D97571-AArch64-loh"
+                                                       "llvm-11-aarch64-addrspace"))
 
-           "-DLLVM_INSTALL_UTILS=ON"
-           "-DLLVM_BUILD_TESTS=ON"
-           "-DLLVM_ENABLE_FFI=ON"
-           "-DLLVM_ENABLE_RTTI=ON"
-           ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
-           ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
-           ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
-           "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+                 #t)))))))
+    (inputs
+     `(("julia-source" ,(package-source julia))
+       ,@(package-inputs llvm-11)))))
 
 (define-public libwhich
   (package
@@ -223,7 +234,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -231,9 +242,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
+                "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -259,12 +268,12 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                      (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "curl" "dsfmt"
+                                       '("curl" "dsfmt"
                                          "gmp" "lapack"
-                                         "libssh2" "libgit2"
+                                         "libssh2" "libnghttp2" "libgit2"
                                          "mbedtls" "mpfr"
                                          "openblas" "openlibm" "pcre2"
-                                         "suitesparse"))
+                                         "suitesparse" "libfortran"))
                                   ":"))
              #t))
          ;; FIXME: Building the documentation requires Julia packages that
@@ -304,7 +313,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
              ;; The REPL must be linked with libuv.
-             (substitute* "ui/Makefile"
+             (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
                                (assoc-ref %build-inputs "libuv")
@@ -320,27 +329,82 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              (substitute* "base/client.jl"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before 'build 'fix-precompile
-           (lambda _
-             (substitute* "base/loading.jl"
-               (("something(Base.active_project(), \"\")") "\"\""))
+         (add-before 'build 'shared-objects-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jlpath
+                    (lambda (pkgname)
+                      (string-append "stdlib/" pkgname "_jll/src/" pkgname "_jll.jl")))
+                   (from
+                    (lambda (libname)
+                      (string-append "const " libname " = .*\\.so")))
+                   (to
+                    (lambda* (pkg libname #:optional libname_jl)
+                      (string-append
+                       "const " (or libname_jl libname)  "= \""
+                       (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "dSFMT")
+                 (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
+               (substitute* (jlpath "GMP")
+                 (((from "libgmp")) (to "gmp" "libgmp"))
+                 (((from "libgmpxx")) (to "gmp" "libgmpxx")))
+               (substitute* (jlpath "libLLVM")
+                 (((from "libLLVM")) (to "llvm" "libLLVM")))
+               (substitute* (jlpath "LibCURL")
+                 (((from "libcurl")) (to "curl" "libcurl")))
+               (substitute* (jlpath "LibGit2")
+                 (((from "libgit2")) (to "libgit2" "libgit2")))
+               (substitute* (jlpath "LibSSH2")
+                 (((from "libssh2")) (to "libssh2" "libssh2")))
+               (substitute* (jlpath "LibUV")
+                 (((from "libuv")) (to "libuv" "libuv")))
+               (substitute* (jlpath "LibUnwind")
+                 (((from "libunwind")) (to "libunwind" "libunwind")))
+               (substitute* (jlpath "MPFR")
+                 (((from "libmpfr")) (to "mpfr" "libmpfr")))
+               (substitute* (jlpath "MbedTLS")
+                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+               (substitute* (jlpath "nghttp2")
+                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
+               ;; FAILING: OpenBLAS
+               (substitute* (jlpath "OpenBLAS")
+                 (((from "libopenblas")) (to "openblas" "libopenblas")))
+               (substitute* (jlpath "OpenLibm")
+                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
+               (substitute* (jlpath "PCRE2")
+                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+               (substitute* (jlpath "SuiteSparse")
+                 (((from "libamd")) (to "suitesparse" "libamd"))
+                 (((from "libbtf")) (to "suitesparse" "libbtf"))
+                 (((from "libcamd")) (to "suitesparse" "libcamd"))
+                 (((from "libccolamd")) (to "suitesparse" "libccolamd"))
+                 (((from "libcholmod")) (to "suitesparse" "libcholmod"))
+                 (((from "libcolamd")) (to "suitesparse" "libcolamd"))
+                 (((from "libklu")) (to "suitesparse" "libklu"))
+                 (((from "libldl")) (to "suitesparse" "libldl"))
+                 (((from "librbio")) (to "suitesparse" "librbio"))
+                 (((from "libspqr")) (to "suitesparse" "libspqr"))
+                 (((from "libsuitesparse")) (to "suitesparse" "libsuitesparse"))
+                 (((from "libsuitesparseconfig")) (to "suitesparse" "libsuitesparseconfig"))
+                 (((from "libumfpack")) (to "suitesparse" "libumfpack")))
+               (substitute* (jlpath "Zlib")
+                 (((from "libz")) (to "zlib" "libz"))))
+             #t))
+         (add-before 'check 'fix-setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; some tests execute julia in an environment that needs to propagate GUIX_LOCPATH
+             (substitute* "test/cmdlineargs.jl"
+               (("\"HOME\"\\s=>\\shomedir\\(\\)") "\"HOME\" => homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))
              #t))
          (add-before 'check 'disable-broken-tests
            (lambda _
              (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\",\"precompile\",
-                                           \"client\",\"stacktraces\"]),
-                                       testnames)"))
-             ;; 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"))
-             ;; Dates has a similar bug:
+               (("skip_tests = \\[\\]")
+                ;; disabling REPL tests because they require a stdin
+                ;; disabling tests for MPFR, MbedTLS and SuiteSparse because they only check for hardcoded versions
+                "skip_tests = [\"REPL\", \"MPFR_jll\", \"MbedTLS_jll\", \"SuiteSparse_jll\"]"))
+             ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
              (substitute* "stdlib/Dates/test/io.jl"
                (("\"Dates.Date") "\"Date")
@@ -349,11 +413,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/issues/35785
              (substitute* "test/file.jl"
                (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
-             ;; Deprecation test fails with --depwarn=no
-             ;; https://github.com/JuliaLang/julia/issues/37673
-             (substitute* "test/Makefile"
-               (("./runtests.jl") "--depwarn=error ./runtests.jl"))
+             ;; julia embeds a certificate, we are not doing that
+             (substitute* "stdlib/MozillaCACerts_jll/test/runtests.jl"
+               (("@test isfile\\(MozillaCACerts_jll.cacert\\)") "@test_broken isfile(MozillaCACerts_jll.cacert)"))
+             ;; since certificate is not present some tests are failing in network option
+             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+               (("@test isfile\\(bundled_ca_roots\\(\\)\\)") "@test_broken isfile(bundled_ca_roots())")
+               (("@test ispath\\(ca_roots_path\\(\\)\\)") "@test_broken ispath(ca_roots_path())")
+               (("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)") "@test_broken ca_roots_path() != bundled_ca_roots()"))
              #t))
+         (add-before 'install 'symlink-libraries ;; FIXME change build to install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname dir pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file dir))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "curl" "usr/lib/" "\\.so") ;; missing libpthreads libLLVM-11jl
+               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
+               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
+               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
+               (link "libuv" "usr/lib/julia/" "libuv\\.so")
+               (link "zlib" "usr/lib/julia/" "libz\\.so")
+               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
+               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")
+               #t)))
+         (add-after 'install 'symlink-llvm-utf8proc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file (string-append (assoc-ref outputs "out") "/lib/julia/")))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "llvm" "libLLVM-11\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               #t)))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -371,27 +467,28 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        (list
         (string-append "prefix=" (assoc-ref %outputs "out"))
 
-         ;; Passing the MARCH flag is necessary to build binary substitutes for
-         ;; the supported architectures.
-         ,(match (or (%current-target-system)
-                     (%current-system))
-                 ("x86_64-linux" "MARCH=x86-64")
-                 ("i686-linux" "MARCH=pentium4")
-                 ("aarch64-linux" "MARCH=armv8-a")
-                 ;; Prevent errors when querying this package on unsupported
-                 ;; platforms, e.g. when running "guix package --search="
-                 (_ "MARCH=UNSUPPORTED"))
+        ;; Passing the MARCH flag is necessary to build binary substitutes for
+        ;; the supported architectures.
+        ,(match (or (%current-target-system)
+                    (%current-system))
+           ("x86_64-linux" "MARCH=x86-64")
+           ("i686-linux" "MARCH=pentium4")
+           ("aarch64-linux" "MARCH=armv8-a")
+           ;; Prevent errors when querying this package on unsupported
+           ;; platforms, e.g. when running "guix package --search="
+           (_ "MARCH=UNSUPPORTED"))
 
-         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
-         ;; 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"
+        "CONFIG_SHELL=bash"             ;needed to build bundled libraries
+        ;; list of "USE_SYSTEM_*" is here:
+        ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+        "USE_SYSTEM_CSL=1"
+        "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_SUITESPARSE=1"
          (string-append "SUITESPARSE_INC=-I "
@@ -403,7 +500,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
          "USE_SYSTEM_LLVM=1"
-         "LLVM_VER=9.0.1"
+         "LLVM_VER=11.0.0"
 
          "USE_LLVM_SHLIB=1"
          "USE_SYSTEM_LIBUNWIND=1"
@@ -416,43 +513,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         "/include")
          "USE_SYSTEM_PATCHELF=1"
          "USE_SYSTEM_PCRE=1"
+         "USE_SYSTEM_NGHTTP2=1"
          "USE_SYSTEM_OPENLIBM=1"
          "USE_SYSTEM_MBEDTLS=1"
          "USE_SYSTEM_LIBSSH2=1"
          "USE_SYSTEM_GMP=1"
          "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_ARPACK=1"
          "USE_SYSTEM_LIBGIT2=1"
          "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>.
-       ("arpack-ng" ,arpack-ng-3.3.0)
-
-       ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
+       ("coreutils" ,coreutils)         ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
-       ("openblas" ,openblas) ;Julia does not build with Atlas
+       ("openblas" ,openblas)           ;Julia does not build with Atlas
        ("libunwind" ,libunwind-julia)
        ("openlibm" ,openlibm)
        ("mbedtls" ,mbedtls-apache)
        ("curl" ,curl)
-       ("libgit2" ,libgit2-0.28)
+       ("libnghttp2" ,nghttp2 "lib")
+       ("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
+       ;; required for libgcc_s.so
+       ("libfortran" ,gfortran "lib")
        ("libuv" ,libuv-julia)
        ("pcre2" ,pcre2)
        ("utf8proc" ,utf8proc)
        ("mpfr" ,mpfr)
+       ("nss-certs" ,nss-certs)         ; required to precompile
+       ("glibc-locales" ,glibc-locales)
        ("wget" ,wget)
        ("which" ,which)
        ("zlib" ,zlib)
        ("gmp" ,gmp)
        ("suitesparse" ,suitesparse)
        ;; Find dependencies versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.6.0/deps/Versions.make
        ("libwhich" ,libwhich)
        ("dsfmt" ,dsfmt)))
     (native-inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9f7bdb9bb1..7be5d418e7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3959,7 +3959,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
 (define-public openlibm
   (package
     (name "openlibm")
-    (version "0.6.0")
+    (version "0.7.4")
     (source
      (origin
        (method git-fetch)
@@ -3968,11 +3968,11 @@ access to BLIS implementations via traditional BLAS routine calls.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
+        (base32 "1azms0lpxb7vxb3bln5lyz0wpwx6jnzbffkclclpq2v5aiw8d14i"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
-       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")
        #:phases
        ;; no configure script
        (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..42b2052598 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -89,14 +89,14 @@ POSIX regular expression API.")
 (define-public pcre2
   (package
     (name "pcre2")
-    (version "10.35")
+    (version "10.36")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pcre/pcre2/"
                                   version "/pcre2-" version ".tar.bz2"))
               (sha256
                (base32
-                "04s6kmk9qdd4rjz477h547j4bx7hfz0yalpvrm381rqc5ghaijww"))))
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..d82675bf79 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -63,6 +63,7 @@
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages slang)
   #:use-module (gnu packages web))
 
@@ -146,7 +147,7 @@ libenca and several charset conversion libraries and tools.")
 (define-public utf8proc
   (package
     (name "utf8proc")
-    (version "2.5.0")
+    (version "2.6.1")
     (source
      (origin
        (method git-fetch)
@@ -155,7 +156,7 @@ libenca and several charset conversion libraries and tools.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xlkazhdnja4lksn5c9nf4bln5gjqa35a8gwlam5r0728w0h83qq"))))
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
     (build-system gnu-build-system)
     (native-inputs
      (let ((UNICODE_VERSION "13.0.0"))  ; defined in data/Makefile
@@ -167,6 +168,13 @@ libenca and several charset conversion libraries and tools.")
                                  UNICODE_VERSION "/ucd/NormalizationTest.txt"))
              (sha256
               (base32 "07g0ya4f6zfzvpp24ccxkb2yq568kh83gls85rjl950nv5fya3nn"))))
+         ("DerivedCoreProperties.txt"
+          ,(origin
+             (method url-fetch)
+             (uri (string-append "https://www.unicode.org/Public/"
+                                 UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+             (sha256
+              (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
          ("GraphemeBreakTest.txt"
           ,(origin
              (method url-fetch)
@@ -177,10 +185,12 @@ libenca and several charset conversion libraries and tools.")
               (base32 "07f8rrvcsq4pibdz6zxggxy8w7zjjqyw2ggclqlhalyv45yv7prj"))))
 
          ;; For tests.
-         ("perl" ,perl))))
+         ("perl" ,perl)
+         ("ruby" ,ruby))))
     (arguments
      '(#:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:tests? #t
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -189,10 +199,7 @@ libenca and several charset conversion libraries and tools.")
              (for-each (lambda (i)
                          (copy-file (assoc-ref inputs i)
                                     (string-append "data/" i)))
-                       '("NormalizationTest.txt" "GraphemeBreakTest.txt"))
-             (substitute* "data/GraphemeBreakTest.txt"
-               (("÷") "/")
-               (("×") "+"))
+                       '("NormalizationTest.txt" "DerivedCoreProperties.txt" "GraphemeBreakTest.txt"))
              #t)))))
     (home-page "https://juliastrings.github.io/utf8proc/")
     (synopsis "C library for processing UTF-8 Unicode data")
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
       [not found]         ` <87pmxzfth8.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>
@ 2021-05-10  7:07           ` Nicolò Balzarotti
  2021-05-10 11:29             ` Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 17+ messages in thread
From: Nicolò Balzarotti @ 2021-05-10  7:07 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: 48325

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

I'll forward here the review I sent you privately.

I want to add that it built ok.  I tried building but
julia-benchmarktools and julia-staticarrays are failing.

Version 0.7.0 works fine and should work both on 1.6 (tested) and 1.5
(untested) [fn:1] so we should apply it before the julia update.


I tried updating StaticArrays, but the build still fails.  I opened a
bug report here [fn:2].

I attached here the patch, if you can please apply it before yours, apply my
suggestions and send the updated patch

[fn:1] https://github.com/JuliaCI/BenchmarkTools.jl/blob/e058ff249215671c196f2c24a0a3f401de27b718/test/TrialsTests.jl#L217
[fn:2] https://github.com/JuliaArrays/StaticArrays.jl/issues/912



[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-julia-benchmarktools-Update-to-0.7.0.patch --]
[-- Type: text/x-patch, Size: 1302 bytes --]

From 1376c9103b315492b123eeea1ffc93f81163a809 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 10 May 2021 08:55:16 +0200
Subject: [PATCH] gnu: julia-benchmarktools: Update to 0.7.0.

* gnu/packages/julia-xyz.scm (julia-benchmarktools): Update to 0.7.0.
---
 gnu/packages/julia-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 9812162ce1..04eddbd8b2 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -76,7 +76,7 @@ be GPU compatible without throwing away the wrapper.")
 (define-public julia-benchmarktools
   (package
     (name "julia-benchmarktools")
-    (version "0.5.0")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -85,7 +85,7 @@ be GPU compatible without throwing away the wrapper.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0nsx21m3i5h22lkgyrmfj6r085va6ag40khwssqs8y7l0wz98lvp"))))
+        (base32 "000izw9pj7cbh9r35nnwg2ijkb9dpfd5nkl2889b8b2dpsh4fi63"))))
     (build-system julia-build-system)
     (propagated-inputs `(("julia-json" ,julia-json)))
     (home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
-- 
2.31.1


[-- Attachment #3: Type: text/plain, Size: 4424 bytes --]



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

> seems to be ok (applied fine).  A few notes about the patch
>
> [...]
>>          `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
>> -           "-DCMAKE_BUILD_TYPE=Release"
>> +          "-DCMAKE_BUILD_TYPE=Release"
>> +
>> +          ;; Build a native compiler and the NVPTX backend (NVIDIA) since
>> +          ;; Julia insists on it, nothing more.  This reduces build times and
>> +          ;; disk usage.
>> +          ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
>> +          "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
>>  
>> -           ;; Build a native compiler and the NVPTX backend (NVIDIA) since
>> -           ;; Julia insists on it, nothing more.  This reduces build times and
>> -           ;; disk usage.
>> -           ,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
>> -           "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
> Here it's difficult to see if there are changes, you should undo the
> indent edit.  If indentation is wrong, it should be fixed in a separate commit.
>
>> +          ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
>> +          ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
>> +          ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
> Those seems to be taken from nixos, but is there a reason why are those
> commented?
>
>> +                        (invoke "patch" flag "-i" (string-append
>> "julia-src/deps/patches/" patchname ".patch")))))
> Line too long
>
>> +                 (mkdir-p "julia-src")
>> +                 (invoke "tar" "xf" (assoc-ref inputs "julia-source")
>> "-C" "julia-src" "--strip-components=1")
> DITTO
>
>> +                 (map (lambda (patchname)
>> +                        (patch patchname "-p1")) (list
>> "llvm-D27629-AArch64-large_model_6.0.1"
> Here we can slpit the line before (list
>
>>  
>> -           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
>> +                 #t)))))))
> Returning #t should not be needed anymore
>
>> +    (inputs
>> +     `(("julia-source" ,(package-source julia))
>> +       ,@(package-inputs llvm-11)))))
>>  
>> -                                         "suitesparse"))
>> +                                         "suitesparse" "libfortran"))
>>                                    ":"))
>>               #t))
> We can remove this #t now
>
>> +                      (string-append "stdlib/" pkgname "_jll/src/"
>> pkgname "_jll.jl")))
> Long line
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             ;; some tests execute julia in an environment that needs
>> to propagate GUIX_LOCPATH
> Good catch, I was wondering which ENV variable was needed
>
>> +             (substitute* "test/cmdlineargs.jl"
>> +               (("\"HOME\"\\s=>\\shomedir\\(\\)") "\"HOME\" =>
>> homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))
>>               #t))
> again, long line and #t
>> +         (add-before 'install 'symlink-libraries ;; FIXME change
>> build to install
> What does this comment refer to?
>>          (string-append "prefix=" (assoc-ref %outputs "out"))
>>  
>> -         ;; Passing the MARCH flag is necessary to build binary substitutes for
>> -         ;; the supported architectures.
>> -         ,(match (or (%current-target-system)
>> -                     (%current-system))
>> -                 ("x86_64-linux" "MARCH=x86-64")
>> -                 ("i686-linux" "MARCH=pentium4")
>> -                 ("aarch64-linux" "MARCH=armv8-a")
>> -                 ;; Prevent errors when querying this package on unsupported
>> -                 ;; platforms, e.g. when running "guix package --search="
>> -                 (_ "MARCH=UNSUPPORTED"))
>> +        ;; Passing the MARCH flag is necessary to build binary substitutes for
>> +        ;; the supported architectures.
>> +        ,(match (or (%current-target-system)
>> +                    (%current-system))
>> +           ("x86_64-linux" "MARCH=x86-64")
>> +           ("i686-linux" "MARCH=pentium4")
>> +           ("aarch64-linux" "MARCH=armv8-a")
>> +           ;; Prevent errors when querying this package on unsupported
>> +           ;; platforms, e.g. when running "guix package --search="
>> +           (_ "MARCH=UNSUPPORTED"))
>>
> Again the indentation stuff
>
>

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-10  7:07           ` [bug#48325] julia-1.6 guix Nicolò Balzarotti
@ 2021-05-10 11:29             ` Jean-Baptiste Volatier via Guix-patches via
  2021-05-11  0:07               ` zimoun
  0 siblings, 1 reply; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-05-10 11:29 UTC (permalink / raw)
  To: Nicolò Balzarotti; +Cc: 48325

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

Hi,
Find attached the updated patch. I applied your suggestions.

Nicolò Balzarotti wrote:
>>> -            ;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
>>> -            ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
>>> -            ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
>> Those seems to be taken from nixos, but is there a reason why are those
>> commented?

No clue, this was already there.

>>> build to install
>>>
>>> What does this comment refer to?

Some leftover I forgot to remove.

Cheers,
jB

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-julia-update-to-1.6.1.patch --]
[-- Type: text/x-patch; name=0001-gnu-julia-update-to-1.6.1.patch, Size: 30369 bytes --]

From e610dacab669ce84fe8f263a01aefff1fe49b6aa Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Mon, 10 May 2021 09:57:23 +0200
Subject: [PATCH] gnu: julia: update to 1.6.1

gnu: openlibm: update to 0.7.4
gnu: pcre2: update to 10.56
gnu: utf8proc: update to 2.6.1
gnu: julia-benchmarktools: update to 0.7.0
---
 gnu/packages/julia-xyz.scm |   4 +-
 gnu/packages/julia.scm     | 293 +++++++++++++++++++++++++------------
 gnu/packages/maths.scm     |   6 +-
 gnu/packages/pcre.scm      |   4 +-
 gnu/packages/textutils.scm |  21 ++-
 5 files changed, 219 insertions(+), 109 deletions(-)

diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index db3e3b846d..b6272c0b4d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -100,7 +100,7 @@ be GPU compatible without throwing away the wrapper.")
 (define-public julia-benchmarktools
   (package
     (name "julia-benchmarktools")
-    (version "0.5.0")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -109,7 +109,7 @@ be GPU compatible without throwing away the wrapper.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0nsx21m3i5h22lkgyrmfj6r085va6ag40khwssqs8y7l0wz98lvp"))))
+        (base32 "000izw9pj7cbh9r35nnwg2ijkb9dpfd5nkl2889b8b2dpsh4fi63"))))
     (build-system julia-build-system)
     (propagated-inputs `(("julia-json" ,julia-json)))
     (home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..39627eeed0 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
@@ -48,14 +50,15 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
-        (revision "2"))
+  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
+        (revision "3"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.6.0/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -68,7 +71,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
+                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -97,7 +100,9 @@
          (julia-patch "libunwind-prefer-extbl"
                       "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
          (julia-patch "libunwind-static-arm"
-                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+         (julia-patch "libunwind-cfa-rsp"
+                      "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))
     (home-page "https://github.com/JuliaLang/tree/master/deps/")))
 
 (define (julia-patch-url version name)
@@ -105,7 +110,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.3"))
+  (let ((version "1.6.1"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -113,52 +118,10 @@
 
 (define llvm-julia
   (package
-    (inherit llvm-9)
+    (inherit llvm-11)
     (name "llvm-julia")
-    (source (origin
-              (inherit (package-source llvm-9))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm-exegesis-mingw"
-                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
-                     '("llvm-test-plugin-mingw"
-                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-8.0-D66657-codegen-degenerate"
-                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
-                     '("llvm-8.0-D71495-vectorize-freduce"
-                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
-                     '("llvm-D75072-SCEV-add-type"
-                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
-                     '("llvm-9.0-D65174-limit-merge-stores"
-                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
-                     '("llvm9-D71443-PPC-MC-redef-symbol"
-                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
-                     '("llvm-9.0-D78196"
-                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-9.0-D85499"
-                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
-              (patch-flags '("-p1"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-9)
+     (substitute-keyword-arguments (package-arguments llvm-11)
        ((#:configure-flags flags)
         `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
            "-DCMAKE_BUILD_TYPE=Release"
@@ -177,7 +140,61 @@
            ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
            ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
            "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+           "-DLLVM_LINK_LLVM_DYLIB=ON"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; applying patches from julia
+           ;; list of patches can be found in deps/llvm.mk in julia source
+           (add-after 'unpack 'julia-patches
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((patch
+                      (lambda (patchname flag)
+                        (invoke "patch" flag "-i"
+                                (string-append
+                                 "julia-src/deps/patches/"
+                                 patchname
+                                 ".patch")))))
+                 (mkdir-p "julia-src")
+                 (invoke "tar" "xf"
+                         (assoc-ref inputs "julia-source")
+                         "-C" "julia-src" "--strip-components=1")
+                 (map (lambda (patchname)
+                        (patch patchname "-p1"))
+                      (list "llvm-D27629-AArch64-large_model_6.0.1"
+                            "llvm8-D34078-vectorize-fdiv"
+                            "llvm-7.0-D44650"
+                            "llvm-6.0-DISABLE_ABI_CHECKS"
+                            "llvm9-D50010-VNCoercion-ni"
+                            "llvm7-revert-D44485"
+                            "llvm-11-D75072-SCEV-add-type"
+                            "llvm-julia-tsan-custom-as"
+                            "llvm-D80101"
+                            "llvm-D84031"
+                            "llvm-10-D85553"
+                            "llvm-10-unique_function_clang-sa"
+                            "llvm-11-D85313-debuginfo-empty-arange"
+                            "llvm-11-D90722-rtdyld-absolute-relocs"
+                            "llvm-invalid-addrspacecast-sink"
+                            "llvm-11-D92906-ppc-setjmp"
+                            "llvm-11-PR48458-X86ISelDAGToDAG"
+                            "llvm-11-D93092-ppc-knownbits"
+                            "llvm-11-D93154-globalisel-as"
+                            "llvm-11-ppc-half-ctr"
+                            "llvm-11-ppc-sp-from-bp"
+                            "llvm-rGb498303066a6-gcc11-header-fix"
+                            "llvm-11-D94813-mergeicmps"
+                            "llvm-11-D94980-CTR-half"
+                            "llvm-11-D94058-sext-atomic-ops"
+                            "llvm-11-D96283-dagcombine-half"))
+                 (map (lambda (patchname)
+                        (patch patchname "-p2"))
+                      (list "llvm-11-AArch64-FastIsel-bug"
+                            "llvm-11-D97435-AArch64-movaddrreg"
+                            "llvm-11-D97571-AArch64-loh"
+                            "llvm-11-aarch64-addrspace")))))))))
+    (inputs
+     `(("julia-source" ,(package-source julia))
+       ,@(package-inputs llvm-11)))))
 
 (define-public libwhich
   (package
@@ -223,7 +240,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -231,9 +248,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
+                "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -259,14 +274,13 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                      (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "curl" "dsfmt"
+                                       '("curl" "dsfmt"
                                          "gmp" "lapack"
-                                         "libssh2" "libgit2"
+                                         "libssh2" "libnghttp2" "libgit2"
                                          "mbedtls" "mpfr"
                                          "openblas" "openlibm" "pcre2"
-                                         "suitesparse"))
-                                  ":"))
-             #t))
+                                         "suitesparse" "libfortran"))
+                                  ":"))))
          ;; FIXME: Building the documentation requires Julia packages that
          ;; would be downloaded from the Internet.  We should build them in a
          ;; separate build phase.
@@ -304,7 +318,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
              ;; The REPL must be linked with libuv.
-             (substitute* "ui/Makefile"
+             (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
                                (assoc-ref %build-inputs "libuv")
@@ -320,27 +334,83 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              (substitute* "base/client.jl"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before 'build 'fix-precompile
-           (lambda _
-             (substitute* "base/loading.jl"
-               (("something(Base.active_project(), \"\")") "\"\""))
+         (add-before 'build 'shared-objects-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jlpath
+                    (lambda (pkgname)
+                      (string-append
+                       "stdlib/" pkgname "_jll/src/" pkgname "_jll.jl")))
+                   (from
+                    (lambda (libname)
+                      (string-append "const " libname " = .*\\.so")))
+                   (to
+                    (lambda* (pkg libname #:optional libname_jl)
+                      (string-append
+                       "const " (or libname_jl libname)  "= \""
+                       (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "dSFMT")
+                 (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
+               (substitute* (jlpath "GMP")
+                 (((from "libgmp")) (to "gmp" "libgmp"))
+                 (((from "libgmpxx")) (to "gmp" "libgmpxx")))
+               (substitute* (jlpath "libLLVM")
+                 (((from "libLLVM")) (to "llvm" "libLLVM")))
+               (substitute* (jlpath "LibCURL")
+                 (((from "libcurl")) (to "curl" "libcurl")))
+               (substitute* (jlpath "LibGit2")
+                 (((from "libgit2")) (to "libgit2" "libgit2")))
+               (substitute* (jlpath "LibSSH2")
+                 (((from "libssh2")) (to "libssh2" "libssh2")))
+               (substitute* (jlpath "LibUV")
+                 (((from "libuv")) (to "libuv" "libuv")))
+               (substitute* (jlpath "LibUnwind")
+                 (((from "libunwind")) (to "libunwind" "libunwind")))
+               (substitute* (jlpath "MPFR")
+                 (((from "libmpfr")) (to "mpfr" "libmpfr")))
+               (substitute* (jlpath "MbedTLS")
+                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+               (substitute* (jlpath "nghttp2")
+                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
+               ;; FAILING: OpenBLAS
+               (substitute* (jlpath "OpenBLAS")
+                 (((from "libopenblas")) (to "openblas" "libopenblas")))
+               (substitute* (jlpath "OpenLibm")
+                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
+               (substitute* (jlpath "PCRE2")
+                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+               (substitute* (jlpath "SuiteSparse")
+                 (((from "libamd")) (to "suitesparse" "libamd"))
+                 (((from "libbtf")) (to "suitesparse" "libbtf"))
+                 (((from "libcamd")) (to "suitesparse" "libcamd"))
+                 (((from "libccolamd")) (to "suitesparse" "libccolamd"))
+                 (((from "libcholmod")) (to "suitesparse" "libcholmod"))
+                 (((from "libcolamd")) (to "suitesparse" "libcolamd"))
+                 (((from "libklu")) (to "suitesparse" "libklu"))
+                 (((from "libldl")) (to "suitesparse" "libldl"))
+                 (((from "librbio")) (to "suitesparse" "librbio"))
+                 (((from "libspqr")) (to "suitesparse" "libspqr"))
+                 (((from "libsuitesparse")) (to "suitesparse" "libsuitesparse"))
+                 (((from "libsuitesparseconfig")) (to "suitesparse" "libsuitesparseconfig"))
+                 (((from "libumfpack")) (to "suitesparse" "libumfpack")))
+               (substitute* (jlpath "Zlib")
+                 (((from "libz")) (to "zlib" "libz"))))
              #t))
+         (add-before 'check 'fix-setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; some tests execute julia in an environment that needs to propagate GUIX_LOCPATH
+             (substitute* "test/cmdlineargs.jl"
+               (("\"HOME\"\\s=>\\shomedir\\(\\)")
+                "\"HOME\" => homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))))
          (add-before 'check 'disable-broken-tests
            (lambda _
              (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\",\"precompile\",
-                                           \"client\",\"stacktraces\"]),
-                                       testnames)"))
-             ;; 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"))
-             ;; Dates has a similar bug:
+               (("skip_tests = \\[\\]")
+                ;; disabling REPL tests because they require a stdin
+                ;; disabling tests for MPFR, MbedTLS and SuiteSparse because they only check for hardcoded versions
+                "skip_tests = [\"REPL\", \"MPFR_jll\", \"MbedTLS_jll\", \"SuiteSparse_jll\"]"))
+             ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
              (substitute* "stdlib/Dates/test/io.jl"
                (("\"Dates.Date") "\"Date")
@@ -349,11 +419,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/issues/35785
              (substitute* "test/file.jl"
                (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
-             ;; Deprecation test fails with --depwarn=no
-             ;; https://github.com/JuliaLang/julia/issues/37673
-             (substitute* "test/Makefile"
-               (("./runtests.jl") "--depwarn=error ./runtests.jl"))
+             ;; julia embeds a certificate, we are not doing that
+             (substitute* "stdlib/MozillaCACerts_jll/test/runtests.jl"
+               (("@test isfile\\(MozillaCACerts_jll.cacert\\)") "@test_broken isfile(MozillaCACerts_jll.cacert)"))
+             ;; since certificate is not present some tests are failing in network option
+             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+               (("@test isfile\\(bundled_ca_roots\\(\\)\\)") "@test_broken isfile(bundled_ca_roots())")
+               (("@test ispath\\(ca_roots_path\\(\\)\\)") "@test_broken ispath(ca_roots_path())")
+               (("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)") "@test_broken ca_roots_path() != bundled_ca_roots()"))
              #t))
+         (add-before 'install 'symlink-libraries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname dir pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file dir))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "curl" "usr/lib/" "\\.so") ;; missing libpthreads libLLVM-11jl
+               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
+               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
+               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
+               (link "libuv" "usr/lib/julia/" "libuv\\.so")
+               (link "zlib" "usr/lib/julia/" "libz\\.so")
+               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
+               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")
+               #t)))
+         (add-after 'install 'symlink-llvm-utf8proc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file (string-append (assoc-ref outputs "out") "/lib/julia/")))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "llvm" "libLLVM-11\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               #t)))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -384,7 +486,6 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 
          "CONFIG_SHELL=bash"     ;needed to build bundled libraries
          ;; 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"
@@ -392,6 +493,8 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
          "USE_BLAS64=0"          ;needed when USE_SYSTEM_BLAS=1
          "LIBBLAS=-lopenblas"
          "LIBBLASNAME=libopenblas"
+         ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+         "USE_SYSTEM_CSL=1"
 
          "USE_SYSTEM_SUITESPARSE=1"
          (string-append "SUITESPARSE_INC=-I "
@@ -403,7 +506,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
          "USE_SYSTEM_LLVM=1"
-         "LLVM_VER=9.0.1"
+         "LLVM_VER=11.0.0"
 
          "USE_LLVM_SHLIB=1"
          "USE_SYSTEM_LIBUNWIND=1"
@@ -416,43 +519,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         "/include")
          "USE_SYSTEM_PATCHELF=1"
          "USE_SYSTEM_PCRE=1"
+         "USE_SYSTEM_NGHTTP2=1"
          "USE_SYSTEM_OPENLIBM=1"
          "USE_SYSTEM_MBEDTLS=1"
          "USE_SYSTEM_LIBSSH2=1"
          "USE_SYSTEM_GMP=1"
          "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_ARPACK=1"
          "USE_SYSTEM_LIBGIT2=1"
          "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>.
-       ("arpack-ng" ,arpack-ng-3.3.0)
-
-       ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
+       ("coreutils" ,coreutils)         ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
-       ("openblas" ,openblas) ;Julia does not build with Atlas
+       ("openblas" ,openblas)           ;Julia does not build with Atlas
        ("libunwind" ,libunwind-julia)
        ("openlibm" ,openlibm)
        ("mbedtls" ,mbedtls-apache)
        ("curl" ,curl)
-       ("libgit2" ,libgit2-0.28)
+       ("libnghttp2" ,nghttp2 "lib")
+       ("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
+       ;; required for libgcc_s.so
+       ("libfortran" ,gfortran "lib")
        ("libuv" ,libuv-julia)
        ("pcre2" ,pcre2)
        ("utf8proc" ,utf8proc)
        ("mpfr" ,mpfr)
+       ("nss-certs" ,nss-certs)         ; required to precompile
+       ("glibc-locales" ,glibc-locales)
        ("wget" ,wget)
        ("which" ,which)
        ("zlib" ,zlib)
        ("gmp" ,gmp)
        ("suitesparse" ,suitesparse)
        ;; Find dependencies versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.6.0/deps/Versions.make
        ("libwhich" ,libwhich)
        ("dsfmt" ,dsfmt)))
     (native-inputs
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9f7bdb9bb1..7be5d418e7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3959,7 +3959,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
 (define-public openlibm
   (package
     (name "openlibm")
-    (version "0.6.0")
+    (version "0.7.4")
     (source
      (origin
        (method git-fetch)
@@ -3968,11 +3968,11 @@ access to BLIS implementations via traditional BLAS routine calls.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
+        (base32 "1azms0lpxb7vxb3bln5lyz0wpwx6jnzbffkclclpq2v5aiw8d14i"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
-       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")
        #:phases
        ;; no configure script
        (modify-phases %standard-phases (delete 'configure))
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..42b2052598 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -89,14 +89,14 @@ POSIX regular expression API.")
 (define-public pcre2
   (package
     (name "pcre2")
-    (version "10.35")
+    (version "10.36")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pcre/pcre2/"
                                   version "/pcre2-" version ".tar.bz2"))
               (sha256
                (base32
-                "04s6kmk9qdd4rjz477h547j4bx7hfz0yalpvrm381rqc5ghaijww"))))
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..d82675bf79 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -63,6 +63,7 @@
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages slang)
   #:use-module (gnu packages web))
 
@@ -146,7 +147,7 @@ libenca and several charset conversion libraries and tools.")
 (define-public utf8proc
   (package
     (name "utf8proc")
-    (version "2.5.0")
+    (version "2.6.1")
     (source
      (origin
        (method git-fetch)
@@ -155,7 +156,7 @@ libenca and several charset conversion libraries and tools.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xlkazhdnja4lksn5c9nf4bln5gjqa35a8gwlam5r0728w0h83qq"))))
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
     (build-system gnu-build-system)
     (native-inputs
      (let ((UNICODE_VERSION "13.0.0"))  ; defined in data/Makefile
@@ -167,6 +168,13 @@ libenca and several charset conversion libraries and tools.")
                                  UNICODE_VERSION "/ucd/NormalizationTest.txt"))
              (sha256
               (base32 "07g0ya4f6zfzvpp24ccxkb2yq568kh83gls85rjl950nv5fya3nn"))))
+         ("DerivedCoreProperties.txt"
+          ,(origin
+             (method url-fetch)
+             (uri (string-append "https://www.unicode.org/Public/"
+                                 UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+             (sha256
+              (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
          ("GraphemeBreakTest.txt"
           ,(origin
              (method url-fetch)
@@ -177,10 +185,12 @@ libenca and several charset conversion libraries and tools.")
               (base32 "07f8rrvcsq4pibdz6zxggxy8w7zjjqyw2ggclqlhalyv45yv7prj"))))
 
          ;; For tests.
-         ("perl" ,perl))))
+         ("perl" ,perl)
+         ("ruby" ,ruby))))
     (arguments
      '(#:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:tests? #t
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -189,10 +199,7 @@ libenca and several charset conversion libraries and tools.")
              (for-each (lambda (i)
                          (copy-file (assoc-ref inputs i)
                                     (string-append "data/" i)))
-                       '("NormalizationTest.txt" "GraphemeBreakTest.txt"))
-             (substitute* "data/GraphemeBreakTest.txt"
-               (("÷") "/")
-               (("×") "+"))
+                       '("NormalizationTest.txt" "DerivedCoreProperties.txt" "GraphemeBreakTest.txt"))
              #t)))))
     (home-page "https://juliastrings.github.io/utf8proc/")
     (synopsis "C library for processing UTF-8 Unicode data")
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-10 11:29             ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-05-11  0:07               ` zimoun
  2021-05-11  9:18                 ` Nicolò Balzarotti
  0 siblings, 1 reply; 17+ messages in thread
From: zimoun @ 2021-05-11  0:07 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: 48325, Nicolò Balzarotti

Hi Jean-Baptiste,

Thanks for the patch.  Here some minor comments.

On Mon, 10 May 2021 at 11:29, Jean-Baptiste Volatier <jbv@pm.me> wrote:

> From e610dacab669ce84fe8f263a01aefff1fe49b6aa Mon Sep 17 00:00:00 2001
> From: Jean-Baptiste Volatier <jbv@pm.me>
> Date: Mon, 10 May 2021 09:57:23 +0200
> Subject: [PATCH] gnu: julia: update to 1.6.1
>
> gnu: openlibm: update to 0.7.4
> gnu: pcre2: update to 10.56
> gnu: utf8proc: update to 2.6.1
> gnu: julia-benchmarktools: update to 0.7.0

Please, split this patch.  One per update, i.e., 5 patches I guess.

> diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
> index 13c9f7baf1..39627eeed0 100644
> --- a/gnu/packages/julia.scm
> +++ b/gnu/packages/julia.scm
> @@ -1,9 +1,10 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
>  ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
> -;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
> +;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>

Just to be sure, if Nicoló is co-author, it should be worth to add them
in the commit message, something like:

Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.

> -    (source (origin
> -              (inherit (package-source llvm-9))
> -              ;; Those patches are inside the Julia source repo.
> -              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
> -              ;; but they are required to build Julia.
> -              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
> -              (patches
> -               (map (match-lambda
> -                      ((name hash)
> -                       (julia-patch name hash)))
> -                    (list
> -                     '("llvm-D27629-AArch64-large_model_6.0.1"
> -                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
> -                     '("llvm8-D34078-vectorize-fdiv"
> -                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
> -                     '("llvm-7.0-D44650"
> -                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
> -                     '("llvm9-D50010-VNCoercion-ni"
> -                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
> -                     '("llvm-exegesis-mingw"
> -                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
> -                     '("llvm-test-plugin-mingw"
> -                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
> -                     '("llvm7-revert-D44485"
> -                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
> -                     '("llvm-8.0-D66657-codegen-degenerate"
> -                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
> -                     '("llvm-8.0-D71495-vectorize-freduce"
> -                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
> -                     '("llvm-D75072-SCEV-add-type"
> -                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
> -                     '("llvm-9.0-D65174-limit-merge-stores"
> -                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
> -                     '("llvm9-D71443-PPC-MC-redef-symbol"
> -                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
> -                     '("llvm-9.0-D78196"
> -                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
> -                     '("llvm-julia-tsan-custom-as"
> -                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
> -                     '("llvm-9.0-D85499"
> -                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
> -              (patch-flags '("-p1"))))
>      (arguments
> -     (substitute-keyword-arguments (package-arguments llvm-9)
> +     (substitute-keyword-arguments (package-arguments llvm-11)
>         ((#:configure-flags flags)
>          `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
>             "-DCMAKE_BUILD_TYPE=Release"
> @@ -177,7 +140,61 @@
>             ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
>             ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
>             "-DLLVM_ENABLE_DUMP=ON"
> -           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
> +           "-DLLVM_LINK_LLVM_DYLIB=ON"))
> +       ((#:phases phases)
> +        `(modify-phases ,phases
> +           ;; applying patches from julia
> +           ;; list of patches can be found in deps/llvm.mk in julia source
> +           (add-after 'unpack 'julia-patches
> +             (lambda* (#:key inputs outputs #:allow-other-keys)
> +               (let ((patch
> +                      (lambda (patchname flag)
> +                        (invoke "patch" flag "-i"
> +                                (string-append
> +                                 "julia-src/deps/patches/"
> +                                 patchname
> +                                 ".patch")))))
> +                 (mkdir-p "julia-src")
> +                 (invoke "tar" "xf"
> +                         (assoc-ref inputs "julia-source")
> +                         "-C" "julia-src" "--strip-components=1")
> +                 (map (lambda (patchname)
> +                        (patch patchname "-p1"))
> +                      (list "llvm-D27629-AArch64-large_model_6.0.1"
> +                            "llvm8-D34078-vectorize-fdiv"
> +                            "llvm-7.0-D44650"
> +                            "llvm-6.0-DISABLE_ABI_CHECKS"
> +                            "llvm9-D50010-VNCoercion-ni"
> +                            "llvm7-revert-D44485"
> +                            "llvm-11-D75072-SCEV-add-type"
> +                            "llvm-julia-tsan-custom-as"
> +                            "llvm-D80101"
> +                            "llvm-D84031"
> +                            "llvm-10-D85553"
> +                            "llvm-10-unique_function_clang-sa"
> +                            "llvm-11-D85313-debuginfo-empty-arange"
> +                            "llvm-11-D90722-rtdyld-absolute-relocs"
> +                            "llvm-invalid-addrspacecast-sink"
> +                            "llvm-11-D92906-ppc-setjmp"
> +                            "llvm-11-PR48458-X86ISelDAGToDAG"
> +                            "llvm-11-D93092-ppc-knownbits"
> +                            "llvm-11-D93154-globalisel-as"
> +                            "llvm-11-ppc-half-ctr"
> +                            "llvm-11-ppc-sp-from-bp"
> +                            "llvm-rGb498303066a6-gcc11-header-fix"
> +                            "llvm-11-D94813-mergeicmps"
> +                            "llvm-11-D94980-CTR-half"
> +                            "llvm-11-D94058-sext-atomic-ops"
> +                            "llvm-11-D96283-dagcombine-half"))
> +                 (map (lambda (patchname)
> +                        (patch patchname "-p2"))
> +                      (list "llvm-11-AArch64-FastIsel-bug"
> +                            "llvm-11-D97435-AArch64-movaddrreg"
> +                            "llvm-11-D97571-AArch64-loh"
> +                            "llvm-11-aarch64-addrspace")))))))))

I am not convinced by this move of patches from ’source’ to ’phases’.
My understanding about the usual way is to let the patch in the source
field.  Is this move motivated by something special?

> -                                       '("arpack-ng" "curl" "dsfmt"

I have not read the Julia ChangeLog.  Do they remove Arpack?  This
should be mentioned in the commit message.

> +                                       '("curl" "dsfmt"
>                                           "gmp" "lapack"
> -                                         "libssh2" "libgit2"
> +                                         "libssh2" "libnghttp2" "libgit2"

Idem for libnghttp2.

>                                           "mbedtls" "mpfr"
>                                           "openblas" "openlibm" "pcre2"
> -                                         "suitesparse"))
> -                                  ":"))
> -             #t))
> +                                         "suitesparse" "libfortran"))

Idem for libfortran.

> -         (add-before 'build 'fix-precompile
> -           (lambda _
> -             (substitute* "base/loading.jl"
> -               (("something(Base.active_project(), \"\")") "\"\""))
> +         (add-before 'build 'shared-objects-paths
> +           (lambda* (#:key inputs #:allow-other-keys)

[...]

> +               ;; FAILING: OpenBLAS

What does it mean?


> +         (add-before 'install 'symlink-libraries

[...]

> +               (link "zlib" "usr/lib/julia/" "libz\\.so")

Does this fix

   <http://issues.guix.gnu.org/48238>

?  If yes, cool and thank you! :-)  So it should be mentioned in the
commit message, something like:

--8<---------------cut here---------------start------------->8---
* gnu: julia: Update to 1.6.1.

Fixes <https://bug.gnu.org/48238>.

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[arguments]: …stuff that changed…
[inputs]: Add foo, Remove bar.

Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.
--8<---------------cut here---------------end--------------->8---

Does it make sense?

> -         "USE_SYSTEM_ARPACK=1"

What is the motivation for removing Arpack?  Sorry if my question is naive.

>           "USE_SYSTEM_LIBGIT2=1"
>           "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>.
> -       ("arpack-ng" ,arpack-ng-3.3.0)
> -
> -       ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
> +       ("coreutils" ,coreutils)         ;for bindings to "mkdir" and the like

This is not a change.  Even if the new indentation is correct, please
let avoid cosmetic change in the same commit updating a complex package.
Because then digging in the history becomes more complex. :-)

>         ("lapack" ,lapack)
> -       ("openblas" ,openblas) ;Julia does not build with Atlas
> +       ("openblas" ,openblas)           ;Julia does not build with Atlas

Idem.

>         ("libunwind" ,libunwind-julia)
>         ("openlibm" ,openlibm)
>         ("mbedtls" ,mbedtls-apache)
>         ("curl" ,curl)
> -       ("libgit2" ,libgit2-0.28)
> +       ("libnghttp2" ,nghttp2 "lib")
> +       ("libgit2" ,libgit2)
>         ("libssh2" ,libssh2)
>         ("fortran" ,gfortran)
> +       ;; required for libgcc_s.so
> +       ("libfortran" ,gfortran "lib")
>         ("libuv" ,libuv-julia)
>         ("pcre2" ,pcre2)
>         ("utf8proc" ,utf8proc)
>         ("mpfr" ,mpfr)
> +       ("nss-certs" ,nss-certs)         ; required to precompile

Hum?  Is it really necessary?

> +       ("glibc-locales" ,glibc-locales)

Idem.  Is it really necessary?  Because it is a “big“ packages which
drastically increases the closure size of the Julia package.



Thanks again for the patch.


Cheers,
simon




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11  0:07               ` zimoun
@ 2021-05-11  9:18                 ` Nicolò Balzarotti
  2021-05-11  9:53                   ` Nicolò Balzarotti
  2021-05-11  9:55                   ` zimoun
  0 siblings, 2 replies; 17+ messages in thread
From: Nicolò Balzarotti @ 2021-05-11  9:18 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier; +Cc: 48325

zimoun <zimon.toutoune@gmail.com> writes:

> Hi Jean-Baptiste,
>
> Thanks for the patch.  Here some minor comments.
>
> Please, split this patch.  One per update, i.e., 5 patches I guess.
>

Some changes should probably be committed together since current julia
will fail to build with newer deps versions, but at least for utf8proc
I'm sure this can be splitted.
 
> Just to be sure, if Nicoló is co-author, it should be worth to add them
> in the commit message, something like:
>
> Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.
>

Yep I helped a bit

>> -                                       '("arpack-ng" "curl" "dsfmt"
>
> I have not read the Julia ChangeLog.  Do they remove Arpack?  This
> should be mentioned in the commit message.

Yep, see for example:
https://github.com/JuliaLang/julia/commit/0196cf1ff549ac120d8c556d610927d76d679722

>
>> +                                       '("curl" "dsfmt"
>>                                           "gmp" "lapack"
>> -                                         "libssh2" "libgit2"
>> +                                         "libssh2" "libnghttp2" "libgit2"
>
> Idem for libnghttp2.
>
Yep they added libnghttp2
https://github.com/JuliaLang/julia/blob/bb5b98e72a151c41471d8cc14cacb495d647fb7f/stdlib/nghttp2_jll/src/nghttp2_jll.jl

>>                                           "mbedtls" "mpfr"
>>                                           "openblas" "openlibm" "pcre2"
>> -                                         "suitesparse"))
>> -                                  ":"))
>> -             #t))
>> +                                         "suitesparse" "libfortran"))
>
> Idem for libfortran.

I just realized this is not sorted, would you mind fixing it?  Also,
there are still a few #t which can be removed (like this one in
'prepare-deps)

>
>> -         (add-before 'build 'fix-precompile
>> -           (lambda _
>> -             (substitute* "base/loading.jl"
>> -               (("something(Base.active_project(), \"\")") "\"\""))
>> +         (add-before 'build 'shared-objects-paths
>> +           (lambda* (#:key inputs #:allow-other-keys)
>
> [...]
>
>> +               ;; FAILING: OpenBLAS
>
> What does it mean?
>
I think it's a leftover which can be removed

>
>> +         (add-before 'install 'symlink-libraries
>
> [...]
>
>> +               (link "zlib" "usr/lib/julia/" "libz\\.so")
>
> Does this fix
>
>    <http://issues.guix.gnu.org/48238>
>
> ?
> Does it make sense?
>
I just tried
running
> cd /gnu/store/fp5by15552ihyppxppigmbxs981rd08h-julia-1.6.1
> find -type f -exec grep '/tmp/guix-build-julia-1.5.3.drv-0' {} \;

and it returns nothing.  Also, your Pkg.add("GZip"); using GZip worked

(but it printed
┌ Error: curl_easy_setopt: 48
└ @ Downloads.Curl
~/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
which might be worth investigating)


>> -         "USE_SYSTEM_ARPACK=1"
>
> What is the motivation for removing Arpack?  Sorry if my question is
> naive.
As before, it's no longer used by Julia

>
>>           "USE_SYSTEM_LIBGIT2=1"
>>           "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>.
>> -       ("arpack-ng" ,arpack-ng-3.3.0)
>> -
>> -       ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
>> +       ("coreutils" ,coreutils)         ;for bindings to "mkdir" and the like
>
> This is not a change.  Even if the new indentation is correct, please
> let avoid cosmetic change in the same commit updating a complex package.
> Because then digging in the history becomes more complex. :-)
>

Agreed
>> +       ("nss-certs" ,nss-certs)         ; required to precompile
>
> Hum?  Is it really necessary?
>
I think that the alternative is to disable a few tests.  I opened a bug
report a few months ago here:
https://github.com/JuliaLang/julia/issues/40185

>> +       ("glibc-locales" ,glibc-locales)
>
> Idem.  Is it really necessary?  Because it is a “big“ packages which
> drastically increases the closure size of the Julia package.
>

I think it's the same as before (fixes a few tests) but I cannot verify
this, Jean-Baptiste do you know what breaks when this is removed?

>
> Thanks again for the patch.
>
Yep, thanks Jean-Baptiste and Simon for your review


Nicolò




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11  9:18                 ` Nicolò Balzarotti
@ 2021-05-11  9:53                   ` Nicolò Balzarotti
  2021-05-11  9:55                   ` zimoun
  1 sibling, 0 replies; 17+ messages in thread
From: Nicolò Balzarotti @ 2021-05-11  9:53 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier; +Cc: 48325

>> cd /gnu/store/fp5by15552ihyppxppigmbxs981rd08h-julia-1.6.1
>> find -type f -exec grep '/tmp/guix-build-julia-1.5.3.drv-0' {} \;
>
I just realized I should have run

> find -type f -exec grep '/tmp/guix-build-julia-1.6.1.drv-0' {} \;

Binary file ./bin/.julia-real matches
Binary file ./lib/julia/sys.so matches
Binary file ./lib/julia/libccalltest.so.debug matches
Binary file ./lib/julia/libjulia-internal.so.1.6 matches
Binary file ./lib/julia/libllvmcalltest.so matches
Binary file ./lib/libjulia.so.1.6 matches
Binary file ./share/julia/base.cache matches




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11  9:18                 ` Nicolò Balzarotti
  2021-05-11  9:53                   ` Nicolò Balzarotti
@ 2021-05-11  9:55                   ` zimoun
  2021-05-11 10:18                     ` Nicolò Balzarotti
  1 sibling, 1 reply; 17+ messages in thread
From: zimoun @ 2021-05-11  9:55 UTC (permalink / raw)
  To: Nicolò Balzarotti, Jean-Baptiste Volatier; +Cc: 48325

Hi,

On Tue, 11 May 2021 at 11:18, Nicolò Balzarotti <anothersms@gmail.com> wrote:
> zimoun <zimon.toutoune@gmail.com> writes:

>> Please, split this patch.  One per update, i.e., 5 patches I guess.
>
> Some changes should probably be committed together since current julia
> will fail to build with newer deps versions, but at least for utf8proc
> I'm sure this can be splitted.

The issue is that the update of pcre2 is a ’core-updates’ change, IIUC:

  guix refresh -l pcre2

so the package cannot be simply updated.  This one also should be
splitted, IMHO.

Is the current julia@1.5.3 ’will fail’ for sure or probably ’would fail’
with openlibm@0.7.4 and julia-benchmarktools@0.7.0?  I have not tried
yet. :-)


>>> +         (add-before 'install 'symlink-libraries
>>
>> [...]
>>
>>> +               (link "zlib" "usr/lib/julia/" "libz\\.so")
>>
>> Does this fix
>>
>>    <http://issues.guix.gnu.org/48238>
>>
>> ?
>> Does it make sense?
>>
> I just tried running
>> cd /gnu/store/fp5by15552ihyppxppigmbxs981rd08h-julia-1.6.1
>> find -type f -exec grep '/tmp/guix-build-julia-1.5.3.drv-0' {} \;
>
> and it returns nothing.  Also, your Pkg.add("GZip"); using GZip worked

Cool!

> (but it printed
>
> ┌ Error: curl_easy_setopt: 48
> └ @ Downloads.Curl
> ~/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
>
> which might be worth investigating)

Thanks for trying and reporting.  Did you use a --pure or --container
environment?

>>> +       ("nss-certs" ,nss-certs)         ; required to precompile
>>
>> Hum?  Is it really necessary?
>>
> I think that the alternative is to disable a few tests.  I opened a bug
> report a few months ago here:
> https://github.com/JuliaLang/julia/issues/40185
>
>>> +       ("glibc-locales" ,glibc-locales)
>>
>> Idem.  Is it really necessary?  Because it is a “big“ packages which
>> drastically increases the closure size of the Julia package.
>>
>
> I think it's the same as before (fixes a few tests) but I cannot verify
> this, Jean-Baptiste do you know what breaks when this is removed?

Well, ‘guix size glibc-locales’ reports ~922MiB.  Although this package
is probably already on the store, I would prefer to avoid to add it as
an input.  Currently, ’guix size julia’ says ~1080MiB.  How much with
the glibc-locales as inputs?

Thanks for the patch and the explanations.

Cheers,
simon




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11  9:55                   ` zimoun
@ 2021-05-11 10:18                     ` Nicolò Balzarotti
  2021-05-11 11:38                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-05-11 13:13                       ` [bug#48325] update of julia to 1.6.1 zimoun
  0 siblings, 2 replies; 17+ messages in thread
From: Nicolò Balzarotti @ 2021-05-11 10:18 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier; +Cc: 48325

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

zimoun <zimon.toutoune@gmail.com> writes:

> Hi,
>
> On Tue, 11 May 2021 at 11:18, Nicolò Balzarotti <anothersms@gmail.com> wrote:
>> zimoun <zimon.toutoune@gmail.com> writes:
>
>>> Please, split this patch.  One per update, i.e., 5 patches I guess.
>>
>> Some changes should probably be committed together since current julia
>> will fail to build with newer deps versions, but at least for utf8proc
>> I'm sure this can be splitted.
>
> The issue is that the update of pcre2 is a ’core-updates’ change, IIUC:
>
>   guix refresh -l pcre2
>
> so the package cannot be simply updated.  This one also should be
> splitted, IMHO.
>
> Is the current julia@1.5.3 ’will fail’ for sure or probably ’would fail’
> with openlibm@0.7.4 and julia-benchmarktools@0.7.0?  I have not tried
> yet. :-)
>
>
>>>> +         (add-before 'install 'symlink-libraries
>>>
>>> [...]
>>>
>>>> +               (link "zlib" "usr/lib/julia/" "libz\\.so")
>>>
>>> Does this fix
>>>
>>>    <http://issues.guix.gnu.org/48238>
>>>
>>> ?
>>> Does it make sense?
>>>
>> I just tried running
>>> cd /gnu/store/fp5by15552ihyppxppigmbxs981rd08h-julia-1.6.1
>>> find -type f -exec grep '/tmp/guix-build-julia-1.5.3.drv-0' {} \;
>>
>> and it returns nothing.  Also, your Pkg.add("GZip"); using GZip worked
>
> Cool!
>
>> (but it printed
>>
>> ┌ Error: curl_easy_setopt: 48
>> └ @ Downloads.Curl
>> ~/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
>>
>> which might be worth investigating)
>
> Thanks for trying and reporting.  Did you use a --pure or --container
> environment?

Nope, I just changed home with
> HOME=/tmp julia
>
I tried with a container now:

./pre-inst-env guix environment --ad-hoc julia nss-certs --container
export SSL_CERT_DIR=$GUIX_ENVIRONMENT/etc/ssl/certs/
export SSL_CERT_FILE=$GUIX_ENVIRONMENT/etc/ssl/certs/ca-certificates.crt
export GIT_SSL_CAINFO="$SSL_CERT_FILE"
julia  -e 'using Pkg; Pkg.add("GZip"); using GZip'

Same error
┌ Error: curl_easy_setopt: 48
└ @ Downloads.Curl /tmp/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36

But GZip works (I tried the example on the homepage:
import GZip

fh = GZip.open("infile.gz")
s = readline(fh)

close(fh))

> Well, ‘guix size glibc-locales’ reports ~922MiB.  Although this package
> is probably already on the store, I would prefer to avoid to add it as
> an input.  Currently, ’guix size julia’ says ~1080MiB.  How much with
> the glibc-locales as inputs?

./pre-inst-env guix size julia
1205.6 MiB

glibc-locales does not appear in the closure size (I attached the
output).

The biggest change seams to lie in Julia itself (~+130Mb)


[-- Attachment #2: size.log --]
[-- Type: application/octet-stream, Size: 5129 bytes --]

store item                                                       total    self
/gnu/store/xvl59r030h7qc4fdz713x5qj83g6b0px-llvm-julia-11.0.0      332.5   261.1  21.7%
/gnu/store/njx8q2cb7hwl289xavhhsrk9in2798js-julia-1.6.1           1205.6   215.1  17.8%
/gnu/store/03nf5zlk8lf6xafwn3a0p9s28c9lid27-suitesparse-5.9.0      299.2   171.3  14.2%
/gnu/store/rfm558jgb7334zlgywc82fs1jqslql52-gfortran-7.5.0         241.1   122.4  10.2%
/gnu/store/rn75fm7adgx3pw5j8pg3bczfqq1y17lk-gcc-7.5.0              178.5   107.3   8.9%
/gnu/store/bs9pl1f805ins80xaf4s3n35a0x2lyq3-openblas-0.3.9         187.2    78.0   6.5%
/gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2            132.8    53.2   4.4%
/gnu/store/741057r2x06zwg6zcmqmdyv51spm6n9i-gfortran-7.5.0-lib      76.6    38.2   3.2%
/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31              38.4    36.7   3.0%
/gnu/store/01b4w3m6mp55y531kyi1g8shh722kwqm-gcc-7.5.0-lib           71.0    32.6   2.7%
/gnu/store/jpx83q2s7dhpzjnj93w8zywxb3g7x35i-lapack-3.9.0           120.2    11.0   0.9%
/gnu/store/9h9153akbd6g2520mcl2d0vgbvyfi5qm-openssl-1.1.1i          77.4     6.4   0.5%
/gnu/store/zzkly5rbfvahwqgcs7crz0ilpi7x5g5p-ncurses-6.2             76.9     5.9   0.5%
/gnu/store/198dw01d3mp26ghdxym5hsi60lfynm9m-gnutls-3.6.15          140.8     5.4   0.4%
/gnu/store/l3bq4jyvkqwaqsmxb4dsfn4i1q2vdb10-p7zip-16.02             77.4     5.4   0.4%
/gnu/store/av65fmjs2iahr25vljpajs2vxhfl7glp-bdb-5.3.28              75.4     4.4   0.4%
/gnu/store/q5s876bc5yghh6na3ibvfxlvj6fcj17l-mit-krb5-1.18           76.3     4.3   0.4%
/gnu/store/bg69nwbnd8d3nnpgy24ihk2ijq05wnkz-pcre2-10.36             84.0     4.0   0.3%
/gnu/store/vdipv3c6f3g429rbbv8aa5m640isilxk-openldap-2.4.50        161.3     3.9   0.3%
/gnu/store/vsd9pwimckwsafmf804jrdq020bzwkm8-mbedtls-apache-2.23.0    75.8     3.8   0.3%
/gnu/store/61pv34q6kad3cii1pngyairvxbxgdm1n-isl-0.22.1              77.0     3.2   0.3%
/gnu/store/35afkywncrr5xsb4cxcljf6rpjcb7f61-gmp-6.2.0               73.8     2.7   0.2%
/gnu/store/qc926v75q54k94mwgz6gn4s02sjgrr03-tbb-2020.3              73.4     2.4   0.2%
/gnu/store/4i9lvjz9z9j4kj412jpqv4zxjcik9qcb-libunistring-0.9.10     73.4     2.4   0.2%
/gnu/store/aqi8ammnbwipg9a1aayrff3yz2ffpgxm-libgit2-1.1.0           95.6     1.9   0.2%
/gnu/store/5jf395qa3v4amdi60850rz2a15zlsrza-mpfr-4.0.2              75.6     1.8   0.2%
/gnu/store/mmhimfwmmidf09jw1plw3aw1g1zn2nkh-bash-static-5.0.16       1.6     1.6   0.1%
/gnu/store/qc3k3kd458pgrqsc7ih641160q81npwq-libgcrypt-1.8.5         74.5     1.5   0.1%
/gnu/store/knp4rkdm39ph4brkbzsp07q248nfffi1-readline-8.0.4          78.3     1.4   0.1%
/gnu/store/krpyb0zi700dcrg9cc8932w4v0qivdg9-pkg-config-0.29.2       72.3     1.3   0.1%
/gnu/store/8w6s8bfy3i6dfka46k4wmgygq310cm6s-curl-7.74.0            162.9     1.1   0.1%
/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16     39.4     1.0   0.1%
/gnu/store/fvhj74pghapbjvsvj27skvkra1by1965-bash-minimal-5.0.16     72.0     1.0   0.1%
/gnu/store/1dq8cl4i0jhpiysw98gcmw1b5kyv8fwp-openlibm-0.7.4          72.0     1.0   0.1%
/gnu/store/9rk1sdzb9lqsi38knfi2pq5gqxfxi8d0-libgpg-error-1.37       73.0     1.0   0.1%
/gnu/store/9860f1abqj8wjjnwl8a9v54pdcc3bhgf-xz-5.2.4                73.0     0.9   0.1%
/gnu/store/mz5fvdfks10rmwxf29n95bp9bim6wq7g-nettle-3.5.1            74.7     0.9   0.1%
/gnu/store/20bgydwiszx3wrdqg7py2lby20dz09bg-cyrus-sasl-2.1.27       84.2     0.9   0.1%
/gnu/store/zg126cjicrpm2p6zc08ra5vh4ddag7ww-libgc-8.0.4             71.8     0.8   0.1%
/gnu/store/53nfwpng3scv1c7w7smscvq1r4ciax7s-libssh2-1.9.0           75.5     0.7   0.1%
/gnu/store/1nfwkl6qbfrac4s6qm0rfaaz2ckgrvmj-metis-5.1.0             71.7     0.7   0.1%
/gnu/store/gh15s3j1chndm1lwibf3l9m6x4s26gbp-utf8proc-2.6.1          71.7     0.7   0.1%
/gnu/store/g5a71hqhx1i86zvgnwxj6wdpizpz1lxz-libunwind-julia-1.3.1    73.6     0.6   0.1%
/gnu/store/5yjp2rlvhjbxn02w5vby35ymrs0fmcjb-gdbm-1.18.1             71.6     0.6   0.0%
/gnu/store/pzm72ywfyqv1g0h4571p6zlhg566cwwd-libidn2-2.3.0           73.8     0.5   0.0%
/gnu/store/a9f7wmc75hbpg520phw9z4l9asm3qvsw-bzip2-1.0.8             72.5     0.4   0.0%
/gnu/store/lgrnkwh7w5yawgqaglwj1pls5vwz1nz7-mpc-1.1.0               76.0     0.4   0.0%
/gnu/store/0zawnjiv9aan8spa8vfwl1fwfmkzv5g5-nghttp2-1.41.0-lib      71.4     0.4   0.0%
/gnu/store/rnc7x74sdbgaz5nlbnjwabmwkcypknw0-libuv-julia-2.0.0-3.fb3e336    71.4     0.3   0.0%
/gnu/store/g2s5jfkfd4k973wb58476b1bbv9zpm6m-zlib-1.2.11             38.6     0.2   0.0%
/gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11             71.2     0.2   0.0%
/gnu/store/vb12knxd3cdrgnk548l4f6m628ikg8pf-libtasn1-4.16.0         71.2     0.2   0.0%
/gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3              71.2     0.2   0.0%
/gnu/store/i5a9qb07y9xjh9ry8hp6km43kji16nmd-libltdl-2.4.6           71.2     0.2   0.0%
/gnu/store/bbpvh28a0srim3hsrmx0a366i23awyyk-http-parser-2.9.4-1.ec8b5ee    71.1     0.1   0.0%
/gnu/store/12y2nvkaqsm5qp04afcva5439zxz9r6z-dsfmt-2.2.3             71.0     0.0   0.0%
/gnu/store/z9f5wz66dzgxad673w49c2v06s531i6a-libwhich-1.1.0          71.0     0.0   0.0%
total: 1205.6 MiB

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11 10:18                     ` Nicolò Balzarotti
@ 2021-05-11 11:38                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-05-12  8:43                         ` zimoun
  2021-05-11 13:13                       ` [bug#48325] update of julia to 1.6.1 zimoun
  1 sibling, 1 reply; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-05-11 11:38 UTC (permalink / raw)
  To: Nicolò Balzarotti; +Cc: 48325, zimoun

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

I splitted the patch in 5. If it is not possible to update pcre2, we only
need to disable a couple of tests.

zimoun <zimon.toutoune@gmail.com> writes:
> I am not convinced by this move of patches from ’source’ to ’phases’.
> My understanding about the usual way is to let the patch in the source
> field.  Is this move motivated by something special?

Yes. Some of the patches need to be applied with the "-p1" flag some with
"-p2". In the source field it is not possible to do so. So I would
need to modify beforehand the "p2" patches for example, and I could not
think of a nice way to do that without including the patches directly
in gnu/packages/patches which does not seem like a nice option.
And since all these patches are in julia source, I thought it was
nicer this way.

> I have not read the Julia ChangeLog.  Do they remove Arpack?  This
> should be mentioned in the commit message.

Yes they did, I updated the commit message. Same with the other new
dependencies.

>> +               (link "zlib" "usr/lib/julia/" "libz\\.so")

> Does this fix
>
>   <http://issues.guix.gnu.org/48238>

> ?  If yes, cool and thank you! :-)  So it should be mentioned in the
> commit message, something like:

No it does not. Reason for this is that the install target of the
makefile copies a bunch of libraries from the build directory
to the install directory. I guess "normally" you rely on the makefile
to also build these libraries for you. In our case many libraries are
missing in this folder at the end of the build target
so I create the symlinks so the install target works
and also julia can later on find the libraries.
For some reason utf8proc and libLLVM-11 need to be symlinked directly
in the install directory, this is done in the next phase.

>> +       ("nss-certs" ,nss-certs)         ; required to precompile

> Hum?  Is it really necessary?

I think it is necessary for some of the tests. So I moved it to
native-inputs is that correct ?

>> +       ("glibc-locales" ,glibc-locales)

> Idem.  Is it really necessary?  Because it is a “big“ packages which
> drastically increases the closure size of the Julia package.

It's not! Good find, this was committed inadvertently when I was
looking for the reason why some tests were complaining of not finding
locales. Turns out that these tests were happening in a julia process
started without the GUIX_LOCPATH environment variable.

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

> julia  -e 'using Pkg; Pkg.add("GZip"); using GZip'

> Same error
> ┌ Error: curl_easy_setopt: 48
> └ @ Downloads.Curl /tmp/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36

I have the same "bug" here though everything works correctly. I
suspect it is due to a mismatch in the libcurl version.

Cheers,
JB.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0005-gnu-julia-benchmarktools-update-to-0.7.0.patch --]
[-- Type: text/x-patch; name=0005-gnu-julia-benchmarktools-update-to-0.7.0.patch, Size: 1251 bytes --]

From 57643ede25c2bf860c847f3355295b0e351842a5 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:52:17 +0200
Subject: [PATCH 5/5] gnu: julia-benchmarktools: update to 0.7.0

---
 gnu/packages/julia-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index db3e3b846d..b6272c0b4d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -100,7 +100,7 @@ be GPU compatible without throwing away the wrapper.")
 (define-public julia-benchmarktools
   (package
     (name "julia-benchmarktools")
-    (version "0.5.0")
+    (version "0.7.0")
     (source
      (origin
        (method git-fetch)
@@ -109,7 +109,7 @@ be GPU compatible without throwing away the wrapper.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0nsx21m3i5h22lkgyrmfj6r085va6ag40khwssqs8y7l0wz98lvp"))))
+        (base32 "000izw9pj7cbh9r35nnwg2ijkb9dpfd5nkl2889b8b2dpsh4fi63"))))
     (build-system julia-build-system)
     (propagated-inputs `(("julia-json" ,julia-json)))
     (home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
-- 
2.31.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0001-gnu-utf8proc-update-to-2.6.1.patch --]
[-- Type: text/x-patch; name=0001-gnu-utf8proc-update-to-2.6.1.patch, Size: 3369 bytes --]

From a49942cd937f049f5ea8479a135ba50894fdeef5 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:49:56 +0200
Subject: [PATCH 1/5] gnu: utf8proc: update to 2.6.1

---
 gnu/packages/textutils.scm | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..d82675bf79 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -63,6 +63,7 @@
   #:use-module (gnu packages python-build)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages slang)
   #:use-module (gnu packages web))
 
@@ -146,7 +147,7 @@ libenca and several charset conversion libraries and tools.")
 (define-public utf8proc
   (package
     (name "utf8proc")
-    (version "2.5.0")
+    (version "2.6.1")
     (source
      (origin
        (method git-fetch)
@@ -155,7 +156,7 @@ libenca and several charset conversion libraries and tools.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1xlkazhdnja4lksn5c9nf4bln5gjqa35a8gwlam5r0728w0h83qq"))))
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
     (build-system gnu-build-system)
     (native-inputs
      (let ((UNICODE_VERSION "13.0.0"))  ; defined in data/Makefile
@@ -167,6 +168,13 @@ libenca and several charset conversion libraries and tools.")
                                  UNICODE_VERSION "/ucd/NormalizationTest.txt"))
              (sha256
               (base32 "07g0ya4f6zfzvpp24ccxkb2yq568kh83gls85rjl950nv5fya3nn"))))
+         ("DerivedCoreProperties.txt"
+          ,(origin
+             (method url-fetch)
+             (uri (string-append "https://www.unicode.org/Public/"
+                                 UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+             (sha256
+              (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
          ("GraphemeBreakTest.txt"
           ,(origin
              (method url-fetch)
@@ -177,10 +185,12 @@ libenca and several charset conversion libraries and tools.")
               (base32 "07f8rrvcsq4pibdz6zxggxy8w7zjjqyw2ggclqlhalyv45yv7prj"))))
 
          ;; For tests.
-         ("perl" ,perl))))
+         ("perl" ,perl)
+         ("ruby" ,ruby))))
     (arguments
      '(#:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:tests? #t
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -189,10 +199,7 @@ libenca and several charset conversion libraries and tools.")
              (for-each (lambda (i)
                          (copy-file (assoc-ref inputs i)
                                     (string-append "data/" i)))
-                       '("NormalizationTest.txt" "GraphemeBreakTest.txt"))
-             (substitute* "data/GraphemeBreakTest.txt"
-               (("÷") "/")
-               (("×") "+"))
+                       '("NormalizationTest.txt" "DerivedCoreProperties.txt" "GraphemeBreakTest.txt"))
              #t)))))
     (home-page "https://juliastrings.github.io/utf8proc/")
     (synopsis "C library for processing UTF-8 Unicode data")
-- 
2.31.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0002-gnu-pcre2-update-to-10.56.patch --]
[-- Type: text/x-patch; name=0002-gnu-pcre2-update-to-10.56.patch, Size: 1103 bytes --]

From 96ef77bba818f2260646aa78cc4abbd1d69fe063 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:50:51 +0200
Subject: [PATCH 2/5] gnu: pcre2: update to 10.56

---
 gnu/packages/pcre.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..42b2052598 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -89,14 +89,14 @@ POSIX regular expression API.")
 (define-public pcre2
   (package
     (name "pcre2")
-    (version "10.35")
+    (version "10.36")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://sourceforge/pcre/pcre2/"
                                   version "/pcre2-" version ".tar.bz2"))
               (sha256
                (base32
-                "04s6kmk9qdd4rjz477h547j4bx7hfz0yalpvrm381rqc5ghaijww"))))
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))
    (build-system gnu-build-system)
    (inputs `(("bzip2" ,bzip2)
              ("readline" ,readline)
-- 
2.31.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0003-gnu-openlibm-update-to-0.7.4.patch --]
[-- Type: text/x-patch; name=0003-gnu-openlibm-update-to-0.7.4.patch, Size: 1401 bytes --]

From 75a196730ef507ec75bcf673005154b6c7e0c2a4 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:51:11 +0200
Subject: [PATCH 3/5] gnu: openlibm: update to 0.7.4

---
 gnu/packages/maths.scm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9f7bdb9bb1..7be5d418e7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3959,7 +3959,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
 (define-public openlibm
   (package
     (name "openlibm")
-    (version "0.6.0")
+    (version "0.7.4")
     (source
      (origin
        (method git-fetch)
@@ -3968,11 +3968,11 @@ access to BLIS implementations via traditional BLAS routine calls.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
+        (base32 "1azms0lpxb7vxb3bln5lyz0wpwx6jnzbffkclclpq2v5aiw8d14i"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
-       (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")
        #:phases
        ;; no configure script
        (modify-phases %standard-phases (delete 'configure))
-- 
2.31.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0004-gnu-julia-update-to-1.6.1.patch --]
[-- Type: text/x-patch; name=0004-gnu-julia-update-to-1.6.1.patch, Size: 24553 bytes --]

From 7f380bbc3aac04f274d85b9a79041c6bd8b3c681 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 11:04:46 +0200
Subject: [PATCH 4/5] gnu: julia: update to 1.6.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[inputs]: Add nghttp2:lib, Add gfortran:lib, Remove arpack-ng
[native-inputs]: Add nss-certs

Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.
---
 gnu/packages/julia.scm | 287 ++++++++++++++++++++++++++++-------------
 1 file changed, 194 insertions(+), 93 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..cc178cb935 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,9 +1,10 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
@@ -48,14 +50,15 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
-        (revision "2"))
+  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
+        (revision "3"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.6.0/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -68,7 +71,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
+                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -97,7 +100,9 @@
          (julia-patch "libunwind-prefer-extbl"
                       "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
          (julia-patch "libunwind-static-arm"
-                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+         (julia-patch "libunwind-cfa-rsp"
+                      "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))
     (home-page "https://github.com/JuliaLang/tree/master/deps/")))
 
 (define (julia-patch-url version name)
@@ -105,7 +110,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.3"))
+  (let ((version "1.6.1"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -113,52 +118,10 @@
 
 (define llvm-julia
   (package
-    (inherit llvm-9)
+    (inherit llvm-11)
     (name "llvm-julia")
-    (source (origin
-              (inherit (package-source llvm-9))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm-exegesis-mingw"
-                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
-                     '("llvm-test-plugin-mingw"
-                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-8.0-D66657-codegen-degenerate"
-                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
-                     '("llvm-8.0-D71495-vectorize-freduce"
-                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
-                     '("llvm-D75072-SCEV-add-type"
-                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
-                     '("llvm-9.0-D65174-limit-merge-stores"
-                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
-                     '("llvm9-D71443-PPC-MC-redef-symbol"
-                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
-                     '("llvm-9.0-D78196"
-                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-9.0-D85499"
-                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
-              (patch-flags '("-p1"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-9)
+     (substitute-keyword-arguments (package-arguments llvm-11)
        ((#:configure-flags flags)
         `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
            "-DCMAKE_BUILD_TYPE=Release"
@@ -177,7 +140,61 @@
            ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
            ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
            "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+           "-DLLVM_LINK_LLVM_DYLIB=ON"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; applying patches from julia
+           ;; list of patches can be found in deps/llvm.mk in julia source
+           (add-after 'unpack 'julia-patches
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((patch
+                      (lambda (patchname flag)
+                        (invoke "patch" flag "-i"
+                                (string-append
+                                 "julia-src/deps/patches/"
+                                 patchname
+                                 ".patch")))))
+                 (mkdir-p "julia-src")
+                 (invoke "tar" "xf"
+                         (assoc-ref inputs "julia-source")
+                         "-C" "julia-src" "--strip-components=1")
+                 (map (lambda (patchname)
+                        (patch patchname "-p1"))
+                      (list "llvm-D27629-AArch64-large_model_6.0.1"
+                            "llvm8-D34078-vectorize-fdiv"
+                            "llvm-7.0-D44650"
+                            "llvm-6.0-DISABLE_ABI_CHECKS"
+                            "llvm9-D50010-VNCoercion-ni"
+                            "llvm7-revert-D44485"
+                            "llvm-11-D75072-SCEV-add-type"
+                            "llvm-julia-tsan-custom-as"
+                            "llvm-D80101"
+                            "llvm-D84031"
+                            "llvm-10-D85553"
+                            "llvm-10-unique_function_clang-sa"
+                            "llvm-11-D85313-debuginfo-empty-arange"
+                            "llvm-11-D90722-rtdyld-absolute-relocs"
+                            "llvm-invalid-addrspacecast-sink"
+                            "llvm-11-D92906-ppc-setjmp"
+                            "llvm-11-PR48458-X86ISelDAGToDAG"
+                            "llvm-11-D93092-ppc-knownbits"
+                            "llvm-11-D93154-globalisel-as"
+                            "llvm-11-ppc-half-ctr"
+                            "llvm-11-ppc-sp-from-bp"
+                            "llvm-rGb498303066a6-gcc11-header-fix"
+                            "llvm-11-D94813-mergeicmps"
+                            "llvm-11-D94980-CTR-half"
+                            "llvm-11-D94058-sext-atomic-ops"
+                            "llvm-11-D96283-dagcombine-half"))
+                 (map (lambda (patchname)
+                        (patch patchname "-p2"))
+                      (list "llvm-11-AArch64-FastIsel-bug"
+                            "llvm-11-D97435-AArch64-movaddrreg"
+                            "llvm-11-D97571-AArch64-loh"
+                            "llvm-11-aarch64-addrspace")))))))))
+    (inputs
+     `(("julia-source" ,(package-source julia))
+       ,@(package-inputs llvm-11)))))
 
 (define-public libwhich
   (package
@@ -223,7 +240,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -231,9 +248,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
+                "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -259,14 +274,13 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                      (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "curl" "dsfmt"
+                                       '("curl" "dsfmt"
                                          "gmp" "lapack"
-                                         "libssh2" "libgit2"
+                                         "libssh2" "libnghttp2" "libgit2"
                                          "mbedtls" "mpfr"
                                          "openblas" "openlibm" "pcre2"
-                                         "suitesparse"))
-                                  ":"))
-             #t))
+                                         "suitesparse" "libfortran"))
+                                  ":"))))
          ;; FIXME: Building the documentation requires Julia packages that
          ;; would be downloaded from the Internet.  We should build them in a
          ;; separate build phase.
@@ -304,7 +318,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
              ;; The REPL must be linked with libuv.
-             (substitute* "ui/Makefile"
+             (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
                                (assoc-ref %build-inputs "libuv")
@@ -320,27 +334,82 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              (substitute* "base/client.jl"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before 'build 'fix-precompile
-           (lambda _
-             (substitute* "base/loading.jl"
-               (("something(Base.active_project(), \"\")") "\"\""))
+         (add-before 'build 'shared-objects-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jlpath
+                    (lambda (pkgname)
+                      (string-append
+                       "stdlib/" pkgname "_jll/src/" pkgname "_jll.jl")))
+                   (from
+                    (lambda (libname)
+                      (string-append "const " libname " = .*\\.so")))
+                   (to
+                    (lambda* (pkg libname #:optional libname_jl)
+                      (string-append
+                       "const " (or libname_jl libname)  "= \""
+                       (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "dSFMT")
+                 (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
+               (substitute* (jlpath "GMP")
+                 (((from "libgmp")) (to "gmp" "libgmp"))
+                 (((from "libgmpxx")) (to "gmp" "libgmpxx")))
+               (substitute* (jlpath "libLLVM")
+                 (((from "libLLVM")) (to "llvm" "libLLVM")))
+               (substitute* (jlpath "LibCURL")
+                 (((from "libcurl")) (to "curl" "libcurl")))
+               (substitute* (jlpath "LibGit2")
+                 (((from "libgit2")) (to "libgit2" "libgit2")))
+               (substitute* (jlpath "LibSSH2")
+                 (((from "libssh2")) (to "libssh2" "libssh2")))
+               (substitute* (jlpath "LibUV")
+                 (((from "libuv")) (to "libuv" "libuv")))
+               (substitute* (jlpath "LibUnwind")
+                 (((from "libunwind")) (to "libunwind" "libunwind")))
+               (substitute* (jlpath "MPFR")
+                 (((from "libmpfr")) (to "mpfr" "libmpfr")))
+               (substitute* (jlpath "MbedTLS")
+                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+               (substitute* (jlpath "nghttp2")
+                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
+               (substitute* (jlpath "OpenBLAS")
+                 (((from "libopenblas")) (to "openblas" "libopenblas")))
+               (substitute* (jlpath "OpenLibm")
+                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
+               (substitute* (jlpath "PCRE2")
+                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+               (substitute* (jlpath "SuiteSparse")
+                 (((from "libamd")) (to "suitesparse" "libamd"))
+                 (((from "libbtf")) (to "suitesparse" "libbtf"))
+                 (((from "libcamd")) (to "suitesparse" "libcamd"))
+                 (((from "libccolamd")) (to "suitesparse" "libccolamd"))
+                 (((from "libcholmod")) (to "suitesparse" "libcholmod"))
+                 (((from "libcolamd")) (to "suitesparse" "libcolamd"))
+                 (((from "libklu")) (to "suitesparse" "libklu"))
+                 (((from "libldl")) (to "suitesparse" "libldl"))
+                 (((from "librbio")) (to "suitesparse" "librbio"))
+                 (((from "libspqr")) (to "suitesparse" "libspqr"))
+                 (((from "libsuitesparse")) (to "suitesparse" "libsuitesparse"))
+                 (((from "libsuitesparseconfig")) (to "suitesparse" "libsuitesparseconfig"))
+                 (((from "libumfpack")) (to "suitesparse" "libumfpack")))
+               (substitute* (jlpath "Zlib")
+                 (((from "libz")) (to "zlib" "libz"))))
              #t))
+         (add-before 'check 'fix-setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; some tests execute julia in an environment that needs to propagate GUIX_LOCPATH
+             (substitute* "test/cmdlineargs.jl"
+               (("\"HOME\"\\s=>\\shomedir\\(\\)")
+                "\"HOME\" => homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))))
          (add-before 'check 'disable-broken-tests
            (lambda _
              (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\",\"precompile\",
-                                           \"client\",\"stacktraces\"]),
-                                       testnames)"))
-             ;; 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"))
-             ;; Dates has a similar bug:
+               (("skip_tests = \\[\\]")
+                ;; disabling REPL tests because they require a stdin
+                ;; disabling tests for MPFR, MbedTLS and SuiteSparse because they only check for hardcoded versions
+                "skip_tests = [\"REPL\", \"MPFR_jll\", \"MbedTLS_jll\", \"SuiteSparse_jll\"]"))
+             ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
              (substitute* "stdlib/Dates/test/io.jl"
                (("\"Dates.Date") "\"Date")
@@ -349,11 +418,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/issues/35785
              (substitute* "test/file.jl"
                (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
-             ;; Deprecation test fails with --depwarn=no
-             ;; https://github.com/JuliaLang/julia/issues/37673
-             (substitute* "test/Makefile"
-               (("./runtests.jl") "--depwarn=error ./runtests.jl"))
+             ;; julia embeds a certificate, we are not doing that
+             (substitute* "stdlib/MozillaCACerts_jll/test/runtests.jl"
+               (("@test isfile\\(MozillaCACerts_jll.cacert\\)") "@test_broken isfile(MozillaCACerts_jll.cacert)"))
+             ;; since certificate is not present some tests are failing in network option
+             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+               (("@test isfile\\(bundled_ca_roots\\(\\)\\)") "@test_broken isfile(bundled_ca_roots())")
+               (("@test ispath\\(ca_roots_path\\(\\)\\)") "@test_broken ispath(ca_roots_path())")
+               (("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)") "@test_broken ca_roots_path() != bundled_ca_roots()"))
              #t))
+         (add-before 'install 'symlink-libraries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname dir pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file dir))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "curl" "usr/lib/" "\\.so") ;; missing libpthreads libLLVM-11jl
+               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
+               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
+               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
+               (link "libuv" "usr/lib/julia/" "libuv\\.so")
+               (link "zlib" "usr/lib/julia/" "libz\\.so")
+               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
+               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")
+               #t)))
+         (add-after 'install 'symlink-llvm-utf8proc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file (string-append (assoc-ref outputs "out") "/lib/julia/")))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "llvm" "libLLVM-11\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               #t)))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -384,7 +485,6 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
 
          "CONFIG_SHELL=bash"     ;needed to build bundled libraries
          ;; 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"
@@ -392,6 +492,8 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
          "USE_BLAS64=0"          ;needed when USE_SYSTEM_BLAS=1
          "LIBBLAS=-lopenblas"
          "LIBBLASNAME=libopenblas"
+         ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+         "USE_SYSTEM_CSL=1"
 
          "USE_SYSTEM_SUITESPARSE=1"
          (string-append "SUITESPARSE_INC=-I "
@@ -403,7 +505,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
          "USE_SYSTEM_LLVM=1"
-         "LLVM_VER=9.0.1"
+         "LLVM_VER=11.0.0"
 
          "USE_LLVM_SHLIB=1"
          "USE_SYSTEM_LIBUNWIND=1"
@@ -416,22 +518,17 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                         "/include")
          "USE_SYSTEM_PATCHELF=1"
          "USE_SYSTEM_PCRE=1"
+         "USE_SYSTEM_NGHTTP2=1"
          "USE_SYSTEM_OPENLIBM=1"
          "USE_SYSTEM_MBEDTLS=1"
          "USE_SYSTEM_LIBSSH2=1"
          "USE_SYSTEM_GMP=1"
          "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_ARPACK=1"
          "USE_SYSTEM_LIBGIT2=1"
          "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>.
-       ("arpack-ng" ,arpack-ng-3.3.0)
-
        ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
        ("openblas" ,openblas) ;Julia does not build with Atlas
@@ -439,9 +536,12 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("openlibm" ,openlibm)
        ("mbedtls" ,mbedtls-apache)
        ("curl" ,curl)
-       ("libgit2" ,libgit2-0.28)
+       ("libnghttp2" ,nghttp2 "lib")
+       ("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
+       ;; required for libgcc_s.so
+       ("libfortran" ,gfortran "lib")
        ("libuv" ,libuv-julia)
        ("pcre2" ,pcre2)
        ("utf8proc" ,utf8proc)
@@ -452,7 +552,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("gmp" ,gmp)
        ("suitesparse" ,suitesparse)
        ;; Find dependencies versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.6.0/deps/Versions.make
        ("libwhich" ,libwhich)
        ("dsfmt" ,dsfmt)))
     (native-inputs
@@ -460,6 +560,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("perl" ,perl)
        ("patchelf" ,patchelf)
        ("pkg-config" ,pkg-config)
+       ("nss-certs" ,nss-certs)
        ("python" ,python-2)))
     (native-search-paths
       (list (search-path-specification
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-05-11 10:18                     ` Nicolò Balzarotti
  2021-05-11 11:38                       ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-05-11 13:13                       ` zimoun
  2021-05-11 13:46                         ` Jean-Baptiste Volatier via Guix-patches via
  1 sibling, 1 reply; 17+ messages in thread
From: zimoun @ 2021-05-11 13:13 UTC (permalink / raw)
  To: Nicolò Balzarotti; +Cc: Jean-Baptiste Volatier, 48325

Hi Nicolò,

On mar., 11 mai 2021 at 12:18, Nicolò Balzarotti <anothersms@gmail.com> wrote:

>>>>    <http://issues.guix.gnu.org/48238>

[...]

>>> (but it printed
>>>
>>> ┌ Error: curl_easy_setopt: 48
>>> └ @ Downloads.Curl
>>> ~/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
>>>
>>> which might be worth investigating)

[...]

> Same error
> ┌ Error: curl_easy_setopt: 48
> └ @ Downloads.Curl /tmp/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36

Soemthing appears to me wrong somewhere.  Why does the build directory
appear in the output directory?  This reference should not appear, IMHO.

Applying the last 5 patches, I get (without-tests, just to speedup the
feedback :-)):

  ./pre-inst-env guix build --no-grafts julia --without-tests=julia
  /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1

  find $(./pre-inst-env guix build --no-grafts julia --without-tests=julia) \
       -type f -exec grep '/tmp/guix-build-julia-1.6.1' {} \;
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/bin/.julia-real correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/lib/julia/libllvmcalltest.so correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/lib/julia/libjulia-internal.so.1.6 correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/lib/julia/libccalltest.so.debug correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/lib/julia/sys.so correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/lib/libjulia.so.1.6 correspondant
  Fichier binaire /gnu/store/xbg7kwpylal63gqqb84185j54ib52aji-julia-1.6.1/share/julia/base.cache correspondant

Well, let first converge to a patch set updating Julia then let discuss
if this very same patch set fixes the bug or if the fix will be done in
another patch.  WDYT?


Cheers,
simon




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-05-11 13:13                       ` [bug#48325] update of julia to 1.6.1 zimoun
@ 2021-05-11 13:46                         ` Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 0 replies; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-05-11 13:46 UTC (permalink / raw)
  To: zimoun; +Cc: 48325, Nicolò Balzarotti

zimoun <zimon.toutoune@gmail.com> wrote:

>> ┌ Error: curl_easy_setopt: 48
>> └ @ Downloads.Curl /tmp/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
>
> Soemthing appears to me wrong somewhere. Why does the build directory
> appear in the output directory? This reference should not appear, IMHO.

I think this is Julia related, during the build process the code from
the stdlib is precompiled in the sysimage and the paths are stored then.
I sometimes create custom sysimage to package some julia based apps
and I have the same behavior on a non-Guix system.
Some info about sysimages [1] from the doc of PackageCompiler, a project
that makes it easy to create custom sysimages.
That could also be a potential future improvement, make it easy for users
to create variants of the julia guix package with different sysimages.
That way we can make it much faster to load julia packages that are not part
of stdlib, Plots.jl for example.

[1] https://julialang.github.io/PackageCompiler.jl/dev/sysimages/#What-is-a-sysimage-1

> Well, let first converge to a patch set updating Julia then let discuss
> if this very same patch set fixes the bug or if the fix will be done in
> another patch. WDYT?

Agreed.

Cheers,
JB




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] julia-1.6 guix
  2021-05-11 11:38                       ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-05-12  8:43                         ` zimoun
  0 siblings, 0 replies; 17+ messages in thread
From: zimoun @ 2021-05-12  8:43 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, Nicolò Balzarotti; +Cc: 48325

Hi,

On Tue, 11 May 2021 at 11:38, Jean-Baptiste Volatier <jbv@pm.me> wrote:
> I splitted the patch in 5. If it is not possible to update pcre2, we only
> need to disable a couple of tests.

Well, 1 tests are failing, if I am correct.  However, I am not sure it
is an option to remove this dependency.  The package utf8proc leads also
to a big rebuild, for instance ’subversion’ which implies a lot. :-)

I have not finished yet to test and I should send a patch set today or
tomorrow…

> zimoun <zimon.toutoune@gmail.com> writes:
>> I am not convinced by this move of patches from ’source’ to ’phases’.
>> My understanding about the usual way is to let the patch in the source
>> field.  Is this move motivated by something special?
>
> Yes. Some of the patches need to be applied with the "-p1" flag some with
> "-p2". In the source field it is not possible to do so. So I would
> need to modify beforehand the "p2" patches for example, and I could not
> think of a nice way to do that without including the patches directly
> in gnu/packages/patches which does not seem like a nice option.
> And since all these patches are in julia source, I thought it was
> nicer this way.

…because I am not clear with this, yet.


>>> +               (link "zlib" "usr/lib/julia/" "libz\\.so")
>
>> Does this fix
>>
>>   <http://issues.guix.gnu.org/48238>
>
>> ?  If yes, cool and thank you! :-)  So it should be mentioned in the
>> commit message, something like:
>
> No it does not. Reason for this is that the install target of the
> makefile copies a bunch of libraries from the build directory
> to the install directory. I guess "normally" you rely on the makefile
> to also build these libraries for you. In our case many libraries are
> missing in this folder at the end of the build target
> so I create the symlinks so the install target works
> and also julia can later on find the libraries.
> For some reason utf8proc and libLLVM-11 need to be symlinked directly
> in the install directory, this is done in the next phase.

Thanks for the explanations.  Let discuss that in the aforementioned
bug#48238. :-)

>>> +       ("nss-certs" ,nss-certs)         ; required to precompile
>
>> Hum?  Is it really necessary?
>
> I think it is necessary for some of the tests. So I moved it to
> native-inputs is that correct ?

Yes, that’s my understanding.


Cheers,
simon




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-05-13 14:13   ` Nicolò Balzarotti
@ 2021-06-05 21:38     ` Ludovic Courtès
  2021-06-06 21:26       ` Nicolò Balzarotti
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2021-06-05 21:38 UTC (permalink / raw)
  To: Nicolò Balzarotti; +Cc: 48325, Jean-Baptiste Volatier, zimoun

Hello!

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

>> About #2, it looks like; even after updating StaticArrays.jl to the
>> lastest tagged version).
>>
>> And I do not have an idea why it fails… Input welcome. :-)
>
> I opened an issue here [1], it seems not to be a problem
>
> [1] https://github.com/JuliaArrays/StaticArrays.jl/issues/912

[...]

Jean-Baptiste Volatier <jbv@pm.me> skribis:

> On Thursday, May 13th, 2021 at 4:08 PM, zimoun <zimon.toutoune@gmail.com> wrote:
>> 1.  an error at runtime about curl
>> 2.  several julia packages are broken because of julia-staticarrays
>>     About #1, it looks like:
>>     --8<---------------cut here---------------start------------->8---
>> ┌ Error: curl_easy_setopt: 48
>> └ @ Downloads.Curl /tmp/guix-build-julia-1.6.1.drv-0/julia-1.6.1/usr/share/julia/stdlib/v1.6/Downloads/src/Curl/utils.jl:36
>> --8<---------------cut here---------------end--------------->8---
>>
>
> This bug is due to Downloads.jl trying to set the following
> options for libcurl:
>
> CURLOPT_SSH_PRIVATE_KEYFILE
> CURLOPT_SSH_PUBLIC_KEYFILE
> CURLOPT_SSH_KNOWNHOSTS
>
> error code 48 means that the option is unknown, this is fixed
> if curl is compiled with "--with-libssh2" configure flag.

Should we go for a v4 that addresses these two remaining issues?

I didn’t follow closely but I’m happy to apply the patches when the
three of you deem it ready.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-06-05 21:38     ` [bug#48325] update of " Ludovic Courtès
@ 2021-06-06 21:26       ` Nicolò Balzarotti
  2021-06-13 20:37         ` Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 17+ messages in thread
From: Nicolò Balzarotti @ 2021-06-06 21:26 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: zimoun, Jean-Baptiste Volatier, 48325

Ludovic Courtès <ludo@gnu.org> writes:

> Hello!
>
Hi,
> [...]
>
> Should we go for a v4 that addresses these two remaining issues?
>
> I didn’t follow closely but I’m happy to apply the patches when the
> three of you deem it ready.
>

There's a new issue we should address, that is our pre-built julia
binaries are not working on my x200 anymore.  I get:

> ERROR: Your CPU does not support the CX16 instruction, which is
> required by this version of Julia!  This is often due to running
> inside of a virtualized environment.  Please read
> https://docs.julialang.org/en/v1/devdocs/sysimg/ for more.

I should check if there's some cpu-related optimization that should be
disabled, but don't have much time those days.

Also, the number of julia packages is increasing so we should check all
new packages still work with this patches.

Anybody can take a look at this?  I'll be available in two months hopefully
Thanks, Nicolò




^ permalink raw reply	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-06-06 21:26       ` Nicolò Balzarotti
@ 2021-06-13 20:37         ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-13 20:54           ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-16  4:52           ` zimoun
  0 siblings, 2 replies; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-13 20:37 UTC (permalink / raw)
  To: 48325

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

Hi!

On Sunday, June 6th, 2021 at 11:26 PM, Nicolò Balzarotti <anothersms@gmail.com> wrote:

> Ludovic Courtès ludo@gnu.org writes:
>> Should we go for a v4 that addresses these two remaining issues?

I modified the patch to fix the curl issue.
Regarding the staticarrays issue, disabling the offending test
(seems reasonable according to upstream) reveals more broken tests
in arraymath.jl.

> There's a new issue we should address, that is our pre-built julia
> binaries are not working on my x200 anymore. I get:
>
>> ERROR: Your CPU does not support the CX16 instruction, which is
>> required by this version of Julia! This is often due to running
>> inside of a virtualized environment. Please read
>> https://docs.julialang.org/en/v1/devdocs/sysimg/ for more.

I added a new sysimg target in the patch which should fix this can
you try it?

However we might want to be cautious with that because the julia
docs says:

> Alternatively, a sysimg could be generated with the target
> generic,-cx16 for greater compatibility, however note that this
> may cause performance and stability problems in some code.

Any thoughts?

Cheers,
JB

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-DRAFT-gnu-julia-Update-to-1.6.1.patch --]
[-- Type: text/x-patch; name=0001-DRAFT-gnu-julia-Update-to-1.6.1.patch, Size: 26317 bytes --]

From 5880f128a81e683174128b285a908cd8b792365d Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Thu, 13 May 2021 16:11:04 +0200
Subject: [PATCH] DRAFT gnu: julia: Update to 1.6.1.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[arguments]: XXXX
[inputs]: Add nghttp2:lib, Add gfortran:lib, Remove arpack-ng.
[native-inputs]: Add nss-certs.

Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.
Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
---
 gnu/packages/julia.scm | 348 ++++++++++++++++++++++++++++-------------
 1 file changed, 235 insertions(+), 113 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..0aafa8735e 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,9 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +32,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
@@ -48,14 +51,15 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
-        (revision "2"))
+  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
+        (revision "3"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.6.0/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -68,7 +72,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
+                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -97,7 +101,9 @@
          (julia-patch "libunwind-prefer-extbl"
                       "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
          (julia-patch "libunwind-static-arm"
-                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+         (julia-patch "libunwind-cfa-rsp"
+                      "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))
     (home-page "https://github.com/JuliaLang/tree/master/deps/")))
 
 (define (julia-patch-url version name)
@@ -105,7 +111,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.3"))
+  (let ((version "1.6.1"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -113,52 +119,10 @@
 
 (define llvm-julia
   (package
-    (inherit llvm-9)
+    (inherit llvm-11)
     (name "llvm-julia")
-    (source (origin
-              (inherit (package-source llvm-9))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm-exegesis-mingw"
-                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
-                     '("llvm-test-plugin-mingw"
-                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-8.0-D66657-codegen-degenerate"
-                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
-                     '("llvm-8.0-D71495-vectorize-freduce"
-                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
-                     '("llvm-D75072-SCEV-add-type"
-                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
-                     '("llvm-9.0-D65174-limit-merge-stores"
-                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
-                     '("llvm9-D71443-PPC-MC-redef-symbol"
-                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
-                     '("llvm-9.0-D78196"
-                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-9.0-D85499"
-                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
-              (patch-flags '("-p1"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-9)
+     (substitute-keyword-arguments (package-arguments llvm-11)
        ((#:configure-flags flags)
         `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
            "-DCMAKE_BUILD_TYPE=Release"
@@ -177,7 +141,61 @@
            ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
            ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
            "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+           "-DLLVM_LINK_LLVM_DYLIB=ON"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; applying patches from julia
+           ;; list of patches can be found in deps/llvm.mk in julia source
+           (add-after 'unpack 'julia-patches
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((patch
+                      (lambda (patchname flag)
+                        (invoke "patch" flag "-i"
+                                (string-append
+                                 "julia-src/deps/patches/"
+                                 patchname
+                                 ".patch")))))
+                 (mkdir-p "julia-src")
+                 (invoke "tar" "xf"
+                         (assoc-ref inputs "julia-source")
+                         "-C" "julia-src" "--strip-components=1")
+                 (map (lambda (patchname)
+                        (patch patchname "-p1"))
+                      (list "llvm-D27629-AArch64-large_model_6.0.1"
+                            "llvm8-D34078-vectorize-fdiv"
+                            "llvm-7.0-D44650"
+                            "llvm-6.0-DISABLE_ABI_CHECKS"
+                            "llvm9-D50010-VNCoercion-ni"
+                            "llvm7-revert-D44485"
+                            "llvm-11-D75072-SCEV-add-type"
+                            "llvm-julia-tsan-custom-as"
+                            "llvm-D80101"
+                            "llvm-D84031"
+                            "llvm-10-D85553"
+                            "llvm-10-unique_function_clang-sa"
+                            "llvm-11-D85313-debuginfo-empty-arange"
+                            "llvm-11-D90722-rtdyld-absolute-relocs"
+                            "llvm-invalid-addrspacecast-sink"
+                            "llvm-11-D92906-ppc-setjmp"
+                            "llvm-11-PR48458-X86ISelDAGToDAG"
+                            "llvm-11-D93092-ppc-knownbits"
+                            "llvm-11-D93154-globalisel-as"
+                            "llvm-11-ppc-half-ctr"
+                            "llvm-11-ppc-sp-from-bp"
+                            "llvm-rGb498303066a6-gcc11-header-fix"
+                            "llvm-11-D94813-mergeicmps"
+                            "llvm-11-D94980-CTR-half"
+                            "llvm-11-D94058-sext-atomic-ops"
+                            "llvm-11-D96283-dagcombine-half"))
+                 (map (lambda (patchname)
+                        (patch patchname "-p2"))
+                      (list "llvm-11-AArch64-FastIsel-bug"
+                            "llvm-11-D97435-AArch64-movaddrreg"
+                            "llvm-11-D97571-AArch64-loh"
+                            "llvm-11-aarch64-addrspace")))))))))
+    (inputs
+     `(("julia-source" ,(package-source julia))
+       ,@(package-inputs llvm-11)))))
 
 (define-public libwhich
   (package
@@ -220,10 +238,22 @@
 libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
     (license license:expat)))
 
+(define curl-ssh
+  (package
+    (inherit curl/fixed)
+    (arguments
+     (substitute-keyword-arguments (package-argments curl/fixed)
+       ((#:configure-flags flags)
+        `(cons "--with-libssh2" ,flags))))
+    (inputs
+     `(("libssh2" ,libssh2)
+       ,@(package-inputs curl/fixed)))
+    ))
+
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -231,9 +261,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
+                "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -259,14 +287,13 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                      (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "curl" "dsfmt"
+                                       '("curl" "dsfmt"
                                          "gmp" "lapack"
-                                         "libssh2" "libgit2"
+                                         "libssh2" "libnghttp2" "libgit2"
                                          "mbedtls" "mpfr"
                                          "openblas" "openlibm" "pcre2"
-                                         "suitesparse"))
-                                  ":"))
-             #t))
+                                         "suitesparse" "libfortran"))
+                                  ":"))))
          ;; FIXME: Building the documentation requires Julia packages that
          ;; would be downloaded from the Internet.  We should build them in a
          ;; separate build phase.
@@ -304,7 +331,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
              ;; The REPL must be linked with libuv.
-             (substitute* "ui/Makefile"
+             (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
                                (assoc-ref %build-inputs "libuv")
@@ -320,27 +347,82 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              (substitute* "base/client.jl"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before 'build 'fix-precompile
-           (lambda _
-             (substitute* "base/loading.jl"
-               (("something(Base.active_project(), \"\")") "\"\""))
+         (add-before 'build 'shared-objects-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jlpath
+                    (lambda (pkgname)
+                      (string-append
+                       "stdlib/" pkgname "_jll/src/" pkgname "_jll.jl")))
+                   (from
+                    (lambda (libname)
+                      (string-append "const " libname " = .*\\.so")))
+                   (to
+                    (lambda* (pkg libname #:optional libname_jl)
+                      (string-append
+                       "const " (or libname_jl libname)  "= \""
+                       (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "dSFMT")
+                 (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
+               (substitute* (jlpath "GMP")
+                 (((from "libgmp")) (to "gmp" "libgmp"))
+                 (((from "libgmpxx")) (to "gmp" "libgmpxx")))
+               (substitute* (jlpath "libLLVM")
+                 (((from "libLLVM")) (to "llvm" "libLLVM")))
+               (substitute* (jlpath "LibCURL")
+                 (((from "libcurl")) (to "curl" "libcurl")))
+               (substitute* (jlpath "LibGit2")
+                 (((from "libgit2")) (to "libgit2" "libgit2")))
+               (substitute* (jlpath "LibSSH2")
+                 (((from "libssh2")) (to "libssh2" "libssh2")))
+               (substitute* (jlpath "LibUV")
+                 (((from "libuv")) (to "libuv" "libuv")))
+               (substitute* (jlpath "LibUnwind")
+                 (((from "libunwind")) (to "libunwind" "libunwind")))
+               (substitute* (jlpath "MPFR")
+                 (((from "libmpfr")) (to "mpfr" "libmpfr")))
+               (substitute* (jlpath "MbedTLS")
+                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+               (substitute* (jlpath "nghttp2")
+                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
+               (substitute* (jlpath "OpenBLAS")
+                 (((from "libopenblas")) (to "openblas" "libopenblas")))
+               (substitute* (jlpath "OpenLibm")
+                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
+               (substitute* (jlpath "PCRE2")
+                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+               (substitute* (jlpath "SuiteSparse")
+                 (((from "libamd")) (to "suitesparse" "libamd"))
+                 (((from "libbtf")) (to "suitesparse" "libbtf"))
+                 (((from "libcamd")) (to "suitesparse" "libcamd"))
+                 (((from "libccolamd")) (to "suitesparse" "libccolamd"))
+                 (((from "libcholmod")) (to "suitesparse" "libcholmod"))
+                 (((from "libcolamd")) (to "suitesparse" "libcolamd"))
+                 (((from "libklu")) (to "suitesparse" "libklu"))
+                 (((from "libldl")) (to "suitesparse" "libldl"))
+                 (((from "librbio")) (to "suitesparse" "librbio"))
+                 (((from "libspqr")) (to "suitesparse" "libspqr"))
+                 (((from "libsuitesparse")) (to "suitesparse" "libsuitesparse"))
+                 (((from "libsuitesparseconfig")) (to "suitesparse" "libsuitesparseconfig"))
+                 (((from "libumfpack")) (to "suitesparse" "libumfpack")))
+               (substitute* (jlpath "Zlib")
+                 (((from "libz")) (to "zlib" "libz"))))
              #t))
+         (add-before 'check 'fix-setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; some tests execute julia in an environment that needs to propagate GUIX_LOCPATH
+             (substitute* "test/cmdlineargs.jl"
+               (("\"HOME\"\\s=>\\shomedir\\(\\)")
+                "\"HOME\" => homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))))
          (add-before 'check 'disable-broken-tests
            (lambda _
              (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\",\"precompile\",
-                                           \"client\",\"stacktraces\"]),
-                                       testnames)"))
-             ;; 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"))
-             ;; Dates has a similar bug:
+               (("skip_tests = \\[\\]")
+                ;; disabling REPL tests because they require a stdin
+                ;; disabling tests for MPFR, MbedTLS and SuiteSparse because they only check for hardcoded versions
+                "skip_tests = [\"REPL\", \"MPFR_jll\", \"MbedTLS_jll\", \"SuiteSparse_jll\"]"))
+             ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
              (substitute* "stdlib/Dates/test/io.jl"
                (("\"Dates.Date") "\"Date")
@@ -349,11 +431,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/issues/35785
              (substitute* "test/file.jl"
                (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
-             ;; Deprecation test fails with --depwarn=no
-             ;; https://github.com/JuliaLang/julia/issues/37673
-             (substitute* "test/Makefile"
-               (("./runtests.jl") "--depwarn=error ./runtests.jl"))
+             ;; julia embeds a certificate, we are not doing that
+             (substitute* "stdlib/MozillaCACerts_jll/test/runtests.jl"
+               (("@test isfile\\(MozillaCACerts_jll.cacert\\)") "@test_broken isfile(MozillaCACerts_jll.cacert)"))
+             ;; since certificate is not present some tests are failing in network option
+             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+               (("@test isfile\\(bundled_ca_roots\\(\\)\\)") "@test_broken isfile(bundled_ca_roots())")
+               (("@test ispath\\(ca_roots_path\\(\\)\\)") "@test_broken ispath(ca_roots_path())")
+               (("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)") "@test_broken ca_roots_path() != bundled_ca_roots()"))
              #t))
+         (add-before 'install 'symlink-libraries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname dir pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file dir))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "curl" "usr/lib/" "\\.so") ;; missing libpthreads libLLVM-11jl
+               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
+               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
+               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
+               (link "libuv" "usr/lib/julia/" "libuv\\.so")
+               (link "zlib" "usr/lib/julia/" "libz\\.so")
+               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
+               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")
+               #t)))
+         (add-after 'install 'symlink-llvm-utf8proc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file (string-append (assoc-ref outputs "out") "/lib/julia/")))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "llvm" "libLLVM-11\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               #t)))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -382,69 +496,76 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                  ;; platforms, e.g. when running "guix package --search="
                  (_ "MARCH=UNSUPPORTED"))
 
-         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
+         "CONFIG_SHELL=bash -x"     ;needed to build bundled libraries
+         "USE_BINARYBUILDER=0"
          ;; list of "USE_SYSTEM_*" is here:
-         ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
+         ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+         ;;
+         "USE_SYSTEM_CSL=1"
+         "USE_SYSTEM_LLVM=1"
+         "USE_SYSTEM_LIBUNWIND=1"
+         "USE_SYSTEM_PCRE=1"
+         "USE_SYSTEM_OPENLIBM=1"
+         "USE_SYSTEM_DSFMT=1"
+         "USE_SYSTEM_BLAS=1"
+         "USE_SYSTEM_LAPACK=1"
+         "USE_SYSTEM_GMP=1"
+         "USE_SYSTEM_MPFR=1"
+         "USE_SYSTEM_SUITESPARSE=1"
+         "USE_SYSTEM_LIBUV=1"
+         "USE_SYSTEM_UTF8PROC=1"
+         "USE_SYSTEM_MBEDTLS=1"
+         "USE_SYSTEM_LIBSSH2=1"
+         "USE_SYSTEM_NGHTTP2=1"
+         "USE_SYSTEM_CURL=1"
+         "USE_SYSTEM_LIBGIT2=1"
+         "USE_SYSTEM_PATCHELF=1"
+         "USE_SYSTEM_ZLIB=1"
+         "USE_SYSTEM_P7ZIP=1"
          "USE_SYSTEM_DSFMT=1"
          "USE_SYSTEM_P7ZIP=1"
          "USE_SYSTEM_LAPACK=1"
-         "USE_SYSTEM_BLAS=1"
+         "USE_SYSTEM_CURL=1"
          "USE_BLAS64=0"          ;needed when USE_SYSTEM_BLAS=1
          "LIBBLAS=-lopenblas"
          "LIBBLASNAME=libopenblas"
 
-         "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="
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
-         "USE_SYSTEM_LLVM=1"
-         "LLVM_VER=9.0.1"
+         "LLVM_VER=11.0.0"
 
          "USE_LLVM_SHLIB=1"
-         "USE_SYSTEM_LIBUNWIND=1"
-         "USE_SYSTEM_LIBUV=1"
          (string-append "LIBUV="
                         (assoc-ref %build-inputs "libuv")
                         "/lib/libuv.so")
          (string-append "LIBUV_INC="
                         (assoc-ref %build-inputs "libuv")
-                        "/include")
-         "USE_SYSTEM_PATCHELF=1"
-         "USE_SYSTEM_PCRE=1"
-         "USE_SYSTEM_OPENLIBM=1"
-         "USE_SYSTEM_MBEDTLS=1"
-         "USE_SYSTEM_LIBSSH2=1"
-         "USE_SYSTEM_GMP=1"
-         "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_ARPACK=1"
-         "USE_SYSTEM_LIBGIT2=1"
-         "USE_SYSTEM_ZLIB=1")))
+                        "/include"))))
     (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>.
-       ("arpack-ng" ,arpack-ng-3.3.0)
-
        ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
        ("openblas" ,openblas) ;Julia does not build with Atlas
        ("libunwind" ,libunwind-julia)
        ("openlibm" ,openlibm)
        ("mbedtls" ,mbedtls-apache)
-       ("curl" ,curl)
-       ("libgit2" ,libgit2-0.28)
+       ("curl" ,curl-ssh)
+       ("libnghttp2" ,nghttp2 "lib")
+       ("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
+       ;; required for libgcc_s.so
+       ("libfortran" ,gfortran "lib")
        ("libuv" ,libuv-julia)
-       ("pcre2" ,pcre2)
-       ("utf8proc" ,utf8proc)
+       ("pcre2" ,pcre2-10.36)
+       ("utf8proc" ,utf8proc-2.6.1)
        ("mpfr" ,mpfr)
        ("wget" ,wget)
        ("which" ,which)
@@ -452,7 +573,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("gmp" ,gmp)
        ("suitesparse" ,suitesparse)
        ;; Find dependencies versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.6.0/deps/Versions.make
        ("libwhich" ,libwhich)
        ("dsfmt" ,dsfmt)))
     (native-inputs
@@ -460,6 +581,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("perl" ,perl)
        ("patchelf" ,patchelf)
        ("pkg-config" ,pkg-config)
+       ("nss-certs" ,nss-certs)
        ("python" ,python-2)))
     (native-search-paths
       (list (search-path-specification
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-06-13 20:37         ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-13 20:54           ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-16  4:52           ` zimoun
  1 sibling, 0 replies; 17+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-13 20:54 UTC (permalink / raw)
  To: 48325

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

Oups I sent the wrong patch.
This is the correct one.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-DRAFT-gnu-julia-Update-to-1.6.1.patch --]
[-- Type: text/x-patch; name=0001-DRAFT-gnu-julia-Update-to-1.6.1.patch, Size: 27058 bytes --]

From ec848cab531de408e36afa97164c2f8079af9969 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Thu, 13 May 2021 16:11:04 +0200
Subject: [PATCH] DRAFT gnu: julia: Update to 1.6.1.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[arguments]: XXXX
[inputs]: Add nghttp2:lib, Add gfortran:lib, Remove arpack-ng.
[native-inputs]: Add nss-certs.

Co-Authored-By: Nicolò Balzarotti <nicolo@nixo.xyz>.
Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
---
 gnu/packages/julia.scm | 353 ++++++++++++++++++++++++++++-------------
 1 file changed, 239 insertions(+), 114 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..9903bb009b 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,9 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016, 2020 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
 ;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +32,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages certs)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages elf)
@@ -48,14 +51,15 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
 (define libuv-julia
-  (let ((commit "1fcc6d66f9df74189c74d3d390f02202bb7db953")
-        (revision "2"))
+  (let ((commit "fb3e3364c33ae48c827f6b103e05c3f0e78b79a9")
+        (revision "3"))
     ;; When upgrading Julia, also upgrade this.  Get the commit from
-    ;; https://github.com/JuliaLang/julia/blob/v1.5.2/deps/libuv.version
+    ;; https://github.com/JuliaLang/julia/blob/v1.6.0/deps/libuv.version
     (package
       (inherit libuv)
       (name "libuv-julia")
@@ -68,7 +72,7 @@
                 (file-name (string-append name "-" version "-checkout"))
                 (sha256
                  (base32
-                  "040l7f1hk7xyza11sry5cj4fhw05na949865axqqhxnifdvnmfji"))))
+                  "1kqpn19d20aka30h6q5h8lnzyp0vw0xzgx0wm4w2r5j6yf76m2hr"))))
       (build-system gnu-build-system)
       (arguments
        (substitute-keyword-arguments (package-arguments libuv)
@@ -97,7 +101,9 @@
          (julia-patch "libunwind-prefer-extbl"
                       "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
          (julia-patch "libunwind-static-arm"
-                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+                      "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")
+         (julia-patch "libunwind-cfa-rsp"
+                      "1aswjhvysahhldbzh1afbf0hsjxrvs6xidsz2i7s1cjkjbdiia1z")))))
     (home-page "https://github.com/JuliaLang/tree/master/deps/")))
 
 (define (julia-patch-url version name)
@@ -105,7 +111,7 @@
                  "/deps/patches/" name ".patch"))
 
 (define (julia-patch name sha)
-  (let ((version "1.5.3"))
+  (let ((version "1.6.1"))
     (origin (method url-fetch)
             (uri (julia-patch-url version name))
             (sha256 (base32 sha))
@@ -113,52 +119,10 @@
 
 (define llvm-julia
   (package
-    (inherit llvm-9)
+    (inherit llvm-11)
     (name "llvm-julia")
-    (source (origin
-              (inherit (package-source llvm-9))
-              ;; Those patches are inside the Julia source repo.
-              ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm)
-              ;; but they are required to build Julia.
-              ;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
-              (patches
-               (map (match-lambda
-                      ((name hash)
-                       (julia-patch name hash)))
-                    (list
-                     '("llvm-D27629-AArch64-large_model_6.0.1"
-                       "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
-                     '("llvm8-D34078-vectorize-fdiv"
-                       "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602")
-                     '("llvm-7.0-D44650"
-                       "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir")
-                     '("llvm9-D50010-VNCoercion-ni"
-                       "1s1d3sjsiq4vxg7ncy5cz56zgy5vcq6ls3iqaiqkvr23wyryqmdx")
-                     '("llvm-exegesis-mingw"
-                       "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp")
-                     '("llvm-test-plugin-mingw"
-                       "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj")
-                     '("llvm7-revert-D44485"
-                       "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n")
-                     '("llvm-8.0-D66657-codegen-degenerate"
-                       "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72")
-                     '("llvm-8.0-D71495-vectorize-freduce"
-                       "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p")
-                     '("llvm-D75072-SCEV-add-type"
-                       "029a3fywsm233vf48mscina24idd50dc75wr70lmimrhwnw27p0z")
-                     '("llvm-9.0-D65174-limit-merge-stores"
-                       "04bff1mnblfj9mxfdwr1qdnw3i3szmp60gnhxwas5y68qg33z6j0")
-                     '("llvm9-D71443-PPC-MC-redef-symbol"
-                       "1c93nv7rgc9jg5mqrnvv08xib1789qvlql94fwggh18mp3b9hbgy")
-                     '("llvm-9.0-D78196"
-                       "08a43hyg7yyqjq2vmfsmppf34xcz60wq6y9zw5fdyhw2h1mcnmns")
-                     '("llvm-julia-tsan-custom-as"
-                       "0awh40kf6lm4wn1nsjd1bmhfwq7rqj811szanp2xkpspykw9hg9s")
-                     '("llvm-9.0-D85499"
-                       "0vxlr35srvbvihlgrxq15v6dylp90vgi0qahj22j01jgqmdasjkm"))))
-              (patch-flags '("-p1"))))
     (arguments
-     (substitute-keyword-arguments (package-arguments llvm-9)
+     (substitute-keyword-arguments (package-arguments llvm-11)
        ((#:configure-flags flags)
         `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
            "-DCMAKE_BUILD_TYPE=Release"
@@ -177,7 +141,61 @@
            ;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
            ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
            "-DLLVM_ENABLE_DUMP=ON"
-           "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+           "-DLLVM_LINK_LLVM_DYLIB=ON"))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           ;; applying patches from julia
+           ;; list of patches can be found in deps/llvm.mk in julia source
+           (add-after 'unpack 'julia-patches
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((patch
+                      (lambda (patchname flag)
+                        (invoke "patch" flag "-i"
+                                (string-append
+                                 "julia-src/deps/patches/"
+                                 patchname
+                                 ".patch")))))
+                 (mkdir-p "julia-src")
+                 (invoke "tar" "xf"
+                         (assoc-ref inputs "julia-source")
+                         "-C" "julia-src" "--strip-components=1")
+                 (map (lambda (patchname)
+                        (patch patchname "-p1"))
+                      (list "llvm-D27629-AArch64-large_model_6.0.1"
+                            "llvm8-D34078-vectorize-fdiv"
+                            "llvm-7.0-D44650"
+                            "llvm-6.0-DISABLE_ABI_CHECKS"
+                            "llvm9-D50010-VNCoercion-ni"
+                            "llvm7-revert-D44485"
+                            "llvm-11-D75072-SCEV-add-type"
+                            "llvm-julia-tsan-custom-as"
+                            "llvm-D80101"
+                            "llvm-D84031"
+                            "llvm-10-D85553"
+                            "llvm-10-unique_function_clang-sa"
+                            "llvm-11-D85313-debuginfo-empty-arange"
+                            "llvm-11-D90722-rtdyld-absolute-relocs"
+                            "llvm-invalid-addrspacecast-sink"
+                            "llvm-11-D92906-ppc-setjmp"
+                            "llvm-11-PR48458-X86ISelDAGToDAG"
+                            "llvm-11-D93092-ppc-knownbits"
+                            "llvm-11-D93154-globalisel-as"
+                            "llvm-11-ppc-half-ctr"
+                            "llvm-11-ppc-sp-from-bp"
+                            "llvm-rGb498303066a6-gcc11-header-fix"
+                            "llvm-11-D94813-mergeicmps"
+                            "llvm-11-D94980-CTR-half"
+                            "llvm-11-D94058-sext-atomic-ops"
+                            "llvm-11-D96283-dagcombine-half"))
+                 (map (lambda (patchname)
+                        (patch patchname "-p2"))
+                      (list "llvm-11-AArch64-FastIsel-bug"
+                            "llvm-11-D97435-AArch64-movaddrreg"
+                            "llvm-11-D97571-AArch64-loh"
+                            "llvm-11-aarch64-addrspace")))))))))
+    (inputs
+     `(("julia-source" ,(package-source julia))
+       ,@(package-inputs llvm-11)))))
 
 (define-public libwhich
   (package
@@ -220,10 +238,22 @@
 libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
     (license license:expat)))
 
+(define curl-ssh
+  (package
+    (inherit curl)
+    (arguments
+     (substitute-keyword-arguments (package-arguments curl)
+       ((#:configure-flags flags)
+        `(cons "--with-libssh2" ,flags))))
+    (inputs
+     `(("libssh2" ,libssh2)
+       ,@(package-inputs curl)))
+    ))
+
 (define-public julia
   (package
     (name "julia")
-    (version "1.5.3")
+    (version "1.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -231,9 +261,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                     version "/julia-" version ".tar.gz"))
               (sha256
                (base32
-                "1zmim82x9kkdcgn0cdi01hmzi59zbszy1sqlygb86xq4hc1n66dy"))
-              (patches
-               (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
+                "1mfzbjyqcmx7wb1sa7qab5fl78yzd7ap088krqbphbwvpn880srn"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -259,14 +287,13 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                      (string-join (map (lambda (pkg)
                                          (string-append (assoc-ref inputs pkg)
                                                         "/lib"))
-                                       '("arpack-ng" "curl" "dsfmt"
+                                       '("curl" "dsfmt"
                                          "gmp" "lapack"
-                                         "libssh2" "libgit2"
+                                         "libssh2" "libnghttp2" "libgit2"
                                          "mbedtls" "mpfr"
                                          "openblas" "openlibm" "pcre2"
-                                         "suitesparse"))
-                                  ":"))
-             #t))
+                                         "suitesparse" "libfortran"))
+                                  ":"))))
          ;; FIXME: Building the documentation requires Julia packages that
          ;; would be downloaded from the Internet.  We should build them in a
          ;; separate build phase.
@@ -304,7 +331,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                 "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
 
              ;; The REPL must be linked with libuv.
-             (substitute* "ui/Makefile"
+             (substitute* "cli/Makefile"
                (("JLDFLAGS \\+= ")
                 (string-append "JLDFLAGS += "
                                (assoc-ref %build-inputs "libuv")
@@ -320,27 +347,82 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              (substitute* "base/client.jl"
                (("/bin/sh") (which "sh")))
              #t))
-         (add-before 'build 'fix-precompile
-           (lambda _
-             (substitute* "base/loading.jl"
-               (("something(Base.active_project(), \"\")") "\"\""))
+         (add-before 'build 'shared-objects-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((jlpath
+                    (lambda (pkgname)
+                      (string-append
+                       "stdlib/" pkgname "_jll/src/" pkgname "_jll.jl")))
+                   (from
+                    (lambda (libname)
+                      (string-append "const " libname " = .*\\.so")))
+                   (to
+                    (lambda* (pkg libname #:optional libname_jl)
+                      (string-append
+                       "const " (or libname_jl libname)  "= \""
+                       (assoc-ref inputs pkg) "/lib/" libname ".so"))))
+               (substitute* (jlpath "dSFMT")
+                 (((from "libdSFMT")) (to "dsfmt" "libdSFMT")))
+               (substitute* (jlpath "GMP")
+                 (((from "libgmp")) (to "gmp" "libgmp"))
+                 (((from "libgmpxx")) (to "gmp" "libgmpxx")))
+               (substitute* (jlpath "libLLVM")
+                 (((from "libLLVM")) (to "llvm" "libLLVM")))
+               (substitute* (jlpath "LibCURL")
+                 (((from "libcurl")) (to "curl" "libcurl")))
+               (substitute* (jlpath "LibGit2")
+                 (((from "libgit2")) (to "libgit2" "libgit2")))
+               (substitute* (jlpath "LibSSH2")
+                 (((from "libssh2")) (to "libssh2" "libssh2")))
+               (substitute* (jlpath "LibUV")
+                 (((from "libuv")) (to "libuv" "libuv")))
+               (substitute* (jlpath "LibUnwind")
+                 (((from "libunwind")) (to "libunwind" "libunwind")))
+               (substitute* (jlpath "MPFR")
+                 (((from "libmpfr")) (to "mpfr" "libmpfr")))
+               (substitute* (jlpath "MbedTLS")
+                 (((from "libmbedcrypto")) (to "mbedtls" "libmbedcrypto"))
+                 (((from "libmbedtls")) (to "mbedtls" "libmbedtls"))
+                 (((from "libmbedx509")) (to "mbedtls" "libmbedx509")))
+               (substitute* (jlpath "nghttp2")
+                 (((from "libnghttp2")) (to "libnghttp2" "libnghttp2")))
+               (substitute* (jlpath "OpenBLAS")
+                 (((from "libopenblas")) (to "openblas" "libopenblas")))
+               (substitute* (jlpath "OpenLibm")
+                 (((from "libopenlibm")) (to "openlibm" "libopenlibm")))
+               (substitute* (jlpath "PCRE2")
+                 (((from "libpcre2")) (to "pcre2" "libpcre2" "libpcre2_8")))
+               (substitute* (jlpath "SuiteSparse")
+                 (((from "libamd")) (to "suitesparse" "libamd"))
+                 (((from "libbtf")) (to "suitesparse" "libbtf"))
+                 (((from "libcamd")) (to "suitesparse" "libcamd"))
+                 (((from "libccolamd")) (to "suitesparse" "libccolamd"))
+                 (((from "libcholmod")) (to "suitesparse" "libcholmod"))
+                 (((from "libcolamd")) (to "suitesparse" "libcolamd"))
+                 (((from "libklu")) (to "suitesparse" "libklu"))
+                 (((from "libldl")) (to "suitesparse" "libldl"))
+                 (((from "librbio")) (to "suitesparse" "librbio"))
+                 (((from "libspqr")) (to "suitesparse" "libspqr"))
+                 (((from "libsuitesparse")) (to "suitesparse" "libsuitesparse"))
+                 (((from "libsuitesparseconfig")) (to "suitesparse" "libsuitesparseconfig"))
+                 (((from "libumfpack")) (to "suitesparse" "libumfpack")))
+               (substitute* (jlpath "Zlib")
+                 (((from "libz")) (to "zlib" "libz"))))
              #t))
+         (add-before 'check 'fix-setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; some tests execute julia in an environment that needs to propagate GUIX_LOCPATH
+             (substitute* "test/cmdlineargs.jl"
+               (("\"HOME\"\\s=>\\shomedir\\(\\)")
+                "\"HOME\" => homedir(), \"GUIX_LOCPATH\" => ENV[\"GUIX_LOCPATH\"]"))))
          (add-before 'check 'disable-broken-tests
            (lambda _
              (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\",\"precompile\",
-                                           \"client\",\"stacktraces\"]),
-                                       testnames)"))
-             ;; 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"))
-             ;; Dates has a similar bug:
+               (("skip_tests = \\[\\]")
+                ;; disabling REPL tests because they require a stdin
+                ;; disabling tests for MPFR, MbedTLS and SuiteSparse because they only check for hardcoded versions
+                "skip_tests = [\"REPL\", \"MPFR_jll\", \"MbedTLS_jll\", \"SuiteSparse_jll\"]"))
+             ;; Dates/io tests fail on master when networking is unavailable
              ;; https://github.com/JuliaLang/julia/issues/34655
              (substitute* "stdlib/Dates/test/io.jl"
                (("\"Dates.Date") "\"Date")
@@ -349,11 +431,43 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
              ;; https://github.com/JuliaLang/julia/issues/35785
              (substitute* "test/file.jl"
                (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d"))
-             ;; Deprecation test fails with --depwarn=no
-             ;; https://github.com/JuliaLang/julia/issues/37673
-             (substitute* "test/Makefile"
-               (("./runtests.jl") "--depwarn=error ./runtests.jl"))
+             ;; julia embeds a certificate, we are not doing that
+             (substitute* "stdlib/MozillaCACerts_jll/test/runtests.jl"
+               (("@test isfile\\(MozillaCACerts_jll.cacert\\)") "@test_broken isfile(MozillaCACerts_jll.cacert)"))
+             ;; since certificate is not present some tests are failing in network option
+             (substitute* "usr/share/julia/stdlib/v1.6/NetworkOptions/test/runtests.jl"
+               (("@test isfile\\(bundled_ca_roots\\(\\)\\)") "@test_broken isfile(bundled_ca_roots())")
+               (("@test ispath\\(ca_roots_path\\(\\)\\)") "@test_broken ispath(ca_roots_path())")
+               (("@test ca_roots_path\\(\\) \\!= bundled_ca_roots\\(\\)") "@test_broken ca_roots_path() != bundled_ca_roots()"))
              #t))
+         (add-before 'install 'symlink-libraries
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname dir pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file dir))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "curl" "usr/lib/" "\\.so") ;; missing libpthreads libLLVM-11jl
+               (link "suitesparse" "usr/lib/julia/" "libbtf\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libklu\\.so")
+               (link "suitesparse" "usr/lib/julia/" "libldl\\.so")
+               (link "suitesparse" "usr/lib/julia/" "librbio\\.so")
+               (link "gmp" "usr/lib/julia/" "libgmpxx\\.so")
+               (link "libuv" "usr/lib/julia/" "libuv\\.so")
+               (link "zlib" "usr/lib/julia/" "libz\\.so")
+               (link "libunwind" "usr/lib/julia/" "libunwind\\.so")
+               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")
+               #t)))
+         (add-after 'install 'symlink-llvm-utf8proc
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((link
+                    (lambda (pkgname pred)
+                      (map (lambda (file)
+                             (invoke "ln" "-s" file (string-append (assoc-ref outputs "out") "/lib/julia/")))
+                           (find-files (string-append (assoc-ref inputs pkgname) "/lib") pred)))))
+               (link "llvm" "libLLVM-11\\.so")
+               (link "utf8proc" "libutf8proc\\.so")
+               #t)))
          (add-after 'install 'make-wrapper
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -370,7 +484,10 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        #:make-flags
        (list
         (string-append "prefix=" (assoc-ref %outputs "out"))
-
+         ;; Adding generic,-cx16 target to the list of defaults target for better compatibility
+         ;; clone_all is required otherwise julia complains during compilation
+         ;; see https://docs.julialang.org/en/v1/devdocs/sysimg/#Specifying-multiple-system-image-targets
+         "JULIA_CPU_TARGET=generic;generic,-cx16,clone_all;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1)"
          ;; Passing the MARCH flag is necessary to build binary substitutes for
          ;; the supported architectures.
          ,(match (or (%current-target-system)
@@ -382,69 +499,76 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
                  ;; platforms, e.g. when running "guix package --search="
                  (_ "MARCH=UNSUPPORTED"))
 
-         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
+         "CONFIG_SHELL=bash -x"     ;needed to build bundled libraries
+         "USE_BINARYBUILDER=0"
          ;; list of "USE_SYSTEM_*" is here:
-         ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
+         ;; https://github.com/JuliaLang/julia/blob/v1.6.0/Make.inc
+         ;;
+         "USE_SYSTEM_CSL=1"
+         "USE_SYSTEM_LLVM=1"
+         "USE_SYSTEM_LIBUNWIND=1"
+         "USE_SYSTEM_PCRE=1"
+         "USE_SYSTEM_OPENLIBM=1"
+         "USE_SYSTEM_DSFMT=1"
+         "USE_SYSTEM_BLAS=1"
+         "USE_SYSTEM_LAPACK=1"
+         "USE_SYSTEM_GMP=1"
+         "USE_SYSTEM_MPFR=1"
+         "USE_SYSTEM_SUITESPARSE=1"
+         "USE_SYSTEM_LIBUV=1"
+         "USE_SYSTEM_UTF8PROC=1"
+         "USE_SYSTEM_MBEDTLS=1"
+         "USE_SYSTEM_LIBSSH2=1"
+         "USE_SYSTEM_NGHTTP2=1"
+         "USE_SYSTEM_CURL=1"
+         "USE_SYSTEM_LIBGIT2=1"
+         "USE_SYSTEM_PATCHELF=1"
+         "USE_SYSTEM_ZLIB=1"
+         "USE_SYSTEM_P7ZIP=1"
          "USE_SYSTEM_DSFMT=1"
          "USE_SYSTEM_P7ZIP=1"
          "USE_SYSTEM_LAPACK=1"
-         "USE_SYSTEM_BLAS=1"
+         "USE_SYSTEM_CURL=1"
          "USE_BLAS64=0"          ;needed when USE_SYSTEM_BLAS=1
          "LIBBLAS=-lopenblas"
          "LIBBLASNAME=libopenblas"
 
-         "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="
                         (assoc-ref %build-inputs "utf8proc")
                         "/include")
-         "USE_SYSTEM_LLVM=1"
-         "LLVM_VER=9.0.1"
+         "LLVM_VER=11.0.0"
 
          "USE_LLVM_SHLIB=1"
-         "USE_SYSTEM_LIBUNWIND=1"
-         "USE_SYSTEM_LIBUV=1"
          (string-append "LIBUV="
                         (assoc-ref %build-inputs "libuv")
                         "/lib/libuv.so")
          (string-append "LIBUV_INC="
                         (assoc-ref %build-inputs "libuv")
-                        "/include")
-         "USE_SYSTEM_PATCHELF=1"
-         "USE_SYSTEM_PCRE=1"
-         "USE_SYSTEM_OPENLIBM=1"
-         "USE_SYSTEM_MBEDTLS=1"
-         "USE_SYSTEM_LIBSSH2=1"
-         "USE_SYSTEM_GMP=1"
-         "USE_SYSTEM_MPFR=1"
-         "USE_SYSTEM_ARPACK=1"
-         "USE_SYSTEM_LIBGIT2=1"
-         "USE_SYSTEM_ZLIB=1")))
+                        "/include"))))
     (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>.
-       ("arpack-ng" ,arpack-ng-3.3.0)
-
        ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
        ("openblas" ,openblas) ;Julia does not build with Atlas
        ("libunwind" ,libunwind-julia)
        ("openlibm" ,openlibm)
        ("mbedtls" ,mbedtls-apache)
-       ("curl" ,curl)
-       ("libgit2" ,libgit2-0.28)
+       ("curl" ,curl-ssh)
+       ("libnghttp2" ,nghttp2 "lib")
+       ("libgit2" ,libgit2)
        ("libssh2" ,libssh2)
        ("fortran" ,gfortran)
+       ;; required for libgcc_s.so
+       ("libfortran" ,gfortran "lib")
        ("libuv" ,libuv-julia)
-       ("pcre2" ,pcre2)
-       ("utf8proc" ,utf8proc)
+       ("pcre2" ,pcre2-10.36)
+       ("utf8proc" ,utf8proc-2.6.1)
        ("mpfr" ,mpfr)
        ("wget" ,wget)
        ("which" ,which)
@@ -452,7 +576,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("gmp" ,gmp)
        ("suitesparse" ,suitesparse)
        ;; Find dependencies versions here:
-       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
+       ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.6.0/deps/Versions.make
        ("libwhich" ,libwhich)
        ("dsfmt" ,dsfmt)))
     (native-inputs
@@ -460,6 +584,7 @@ libraries.  It is also a bit like @code{ldd} and @code{otool -L}.")
        ("perl" ,perl)
        ("patchelf" ,patchelf)
        ("pkg-config" ,pkg-config)
+       ("nss-certs" ,nss-certs)
        ("python" ,python-2)))
     (native-search-paths
       (list (search-path-specification
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-06-13 20:37         ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-13 20:54           ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-16  4:52           ` zimoun
  1 sibling, 0 replies; 17+ messages in thread
From: zimoun @ 2021-06-16  4:52 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, 48325

Hi,


On Sun, 13 Jun 2021 at 20:37, Jean-Baptiste Volatier via Guix-patches via <guix-patches@gnu.org> wrote:
> On Sunday, June 6th, 2021 at 11:26 PM, Nicolò Balzarotti <anothersms@gmail.com> wrote:
>
>> Ludovic Courtès ludo@gnu.org writes:
>>> Should we go for a v4 that addresses these two remaining issues?
>
> I modified the patch to fix the curl issue.
> Regarding the staticarrays issue, disabling the offending test
> (seems reasonable according to upstream) reveals more broken tests
> in arraymath.jl.

Yes I did the same.  But all was not fine.

>> There's a new issue we should address, that is our pre-built julia
>> binaries are not working on my x200 anymore. I get:
>>
>>> ERROR: Your CPU does not support the CX16 instruction, which is
>>> required by this version of Julia! This is often due to running
>>> inside of a virtualized environment. Please read
>>> https://docs.julialang.org/en/v1/devdocs/sysimg/ for more.
>
> I added a new sysimg target in the patch which should fix this can
> you try it?
>
> However we might want to be cautious with that because the julia
> docs says:
>
>> Alternatively, a sysimg could be generated with the target
>> generic,-cx16 for greater compatibility, however note that this
>> may cause performance and stability problems in some code.
>
> Any thoughts?

I do not know if it is the right approach.  On the other hand, I do not
have better to propose. :-)


Well, I do not have the time to work on this until the end of the next
week (~June, 25th).

All the best,
simon





^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2021-06-16  4:54 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <Vkhua8Jivnfp9XkjO-1XFnilmUhHzpbQgvDq90cIwAEuQrlJWk2z3RXMrvh8_6jf5qMeNKyKIizXjeoLZomFBg==@pm.me>
     [not found] ` <87bl9xqx5c.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>
     [not found]   ` <hk3Y4V9gjJY5o0stStMA9pP3H3OEcNP9-Sr1cAj6aEpTlsqK-wjNq6qIsu4939joF7uCxaTt_mp0ZZGATif8WQ==@pm.me>
     [not found]     ` <bHwSuC9WPaejmL-KWmk5RJk7IR9pQdqrFnvLkGE8ClBZF420yLdR0bymVXhAJHumFlBNcHmwn7AjjAofIbDh2A==@pm.me>
     [not found]       ` <FOr3K1_g6fyPlpTTzTRaYRLxXE6iqm-CsT0GqISHU5wmcXuj8wtB-md5hsLGGCgLUOPxLnjLmmkaYlk4BWGUGw==@pm.me>
     [not found]         ` <87pmxzfth8.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>
2021-05-10  7:07           ` [bug#48325] julia-1.6 guix Nicolò Balzarotti
2021-05-10 11:29             ` Jean-Baptiste Volatier via Guix-patches via
2021-05-11  0:07               ` zimoun
2021-05-11  9:18                 ` Nicolò Balzarotti
2021-05-11  9:53                   ` Nicolò Balzarotti
2021-05-11  9:55                   ` zimoun
2021-05-11 10:18                     ` Nicolò Balzarotti
2021-05-11 11:38                       ` Jean-Baptiste Volatier via Guix-patches via
2021-05-12  8:43                         ` zimoun
2021-05-11 13:13                       ` [bug#48325] update of julia to 1.6.1 zimoun
2021-05-11 13:46                         ` Jean-Baptiste Volatier via Guix-patches via
2021-05-09 21:53 Jean-Baptiste Volatier via Guix-patches via
2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
2021-05-13 14:13   ` Nicolò Balzarotti
2021-06-05 21:38     ` [bug#48325] update of " Ludovic Courtès
2021-06-06 21:26       ` Nicolò Balzarotti
2021-06-13 20:37         ` Jean-Baptiste Volatier via Guix-patches via
2021-06-13 20:54           ` Jean-Baptiste Volatier via Guix-patches via
2021-06-16  4:52           ` zimoun

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).