all messages for Guix-related lists mirrored at yhetil.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
  2021-08-04  8:07 ` bug#48325: update of " Efraim Flashner
  0 siblings, 2 replies; 39+ 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] 39+ messages in thread

* [bug#48325] update of julia to 1.6.1
  2021-05-11 10:18                     ` Nicolò Balzarotti
@ 2021-05-11 13:13                       ` zimoun
  2021-05-11 13:46                         ` Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 39+ 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] 39+ 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; 39+ 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] 39+ messages in thread

* [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
  2021-05-09 21:53 [bug#48325] update of julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-05-13 14:08 ` zimoun
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
                     ` (2 more replies)
  2021-08-04  8:07 ` bug#48325: update of " Efraim Flashner
  1 sibling, 3 replies; 39+ messages in thread
From: zimoun @ 2021-05-13 14:08 UTC (permalink / raw)
  To: 48325; +Cc: zimon.toutoune, Jean-Baptiste Volatier, Nicolò Balzarotti

Hi,

Here a patch set after two reviews.  Everything builds, although it is a
bit log.  It is not ready to merge and two points still need to be
addressed––aside the move of patches from ’source’ to ’arguments’.

Julia v1.6.1 requires the update of 2 core-updates packages: pcre2 and
utf8proc.  Therefore, 2 new variables are added waiting the soon
core-updates merge.  And their update in the core-updates branch will be
done in a separate patch submission.

The patch 4/5 really updating Julia is still a “draft” because the
commit message is not complete.  The real reason is twofold:

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

and it is maybe related to bug#48238 [1].  Even if the example of
bug#48238 about installing the package GZip now works:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix environment --pure --ad-hoc julia \
    -- julia -e 'using Pkg; Pkg.add("GZip"); using GZip'
WARNING: failed to select UTF-8 encoding, using ASCII
  Installing known registries into `~/.julia`
┌ 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

[...]

   Added registry `General` to `~/.julia/registries/General`
   Resolving package versions...

[...]

   Installed GZip ─ v0.5.1
    Updating `~/.julia/environments/v1.6/Project.toml`
  [92fee26a] + GZip v0.5.1
    Updating `~/.julia/environments/v1.6/Manifest.toml`
  [92fee26a] + GZip v0.5.1
  [8f399da3] + Libdl
Precompiling project...
  Progress [>                                        ]  0/1
  ◐ GZip
  ◓ GZip
  ◑ GZip
  1 dependency successfully precompiled in 2 seconds
--8<---------------cut here---------------end--------------->8---


About #2, it looks like; even after updating StaticArrays.jl to the
lastest tagged version).

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build julia-staticarrays

[...]

Test Summary:     | Pass  Total
SHermitianCompact |  903    903
Skipping Base.active_repl
Skipping Base.active_repl_backend
Skipping Base.active_repl
Skipping Base.active_repl_backend
Test Failed at /gnu/store/nhwk8rnix0wdbpx0w92z4yfh2n70nh9r-julia-staticarrays-1.2.0/share/julia/packages/StaticArrays/test/ambiguities.jl:19
  Expression: length(detect_ambiguities(Base, LinearAlgebra, StaticArrays)) <= allowable_ambiguities
   Evaluated: 61 <= 0
ERROR: LoadError: LoadError: There was an error during testing
in expression starting at /gnu/store/nhwk8rnix0wdbpx0w92z4yfh2n70nh9r-julia-staticarrays-1.2.0/share/julia/packages/StaticArrays/test/ambiguities.jl:13
in expression starting at /gnu/store/nhwk8rnix0wdbpx0w92z4yfh2n70nh9r-julia-staticarrays-1.2.0/share/julia/packages/StaticArrays/test/runtests.jl:38
command "julia" "--depwarn=yes" "/gnu/store/nhwk8rnix0wdbpx0w92z4yfh2n70nh9r-julia-staticarrays-1.2.0/share/julia/packages/StaticArrays/test/runtests.jl" failed with status 1
builder for `/gnu/store/98zpvhky62m64f5xfvfna4zdriggv5l8-julia-staticarrays-1.2.0.drv' failed with exit code 1
build of /gnu/store/98zpvhky62m64f5xfvfna4zdriggv5l8-julia-staticarrays-1.2.0.drv failed
View build log at '/var/log/guix/drvs/98/zpvhky62m64f5xfvfna4zdriggv5l8-julia-staticarrays-1.2.0.drv.bz2'.
guix build: error: build of `/gnu/store/98zpvhky62m64f5xfvfna4zdriggv5l8-julia-staticarrays-1.2.0.drv' failed
--8<---------------cut here---------------end--------------->8---

And I do not have an idea why it fails… Input welcome. :-)

Note that,

  ./pre-inst-env guix environment --pure --ad-hoc julia
     -- julia -e 'using Pkg; Pkg.add("StaticArrays"); using StaticArrays'

works fine.


All the best,
simon

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

Jean-Baptiste Volatier (5):
  gnu: Add utf8proc-2.6.1.
  gnu: Add pcre2-10.36.
  gnu: openlibm: Update to 0.7.4.
  DRAFT gnu: julia: Update to 1.6.1.
  gnu: julia-benchmarktools: Update to 0.7.0.

 gnu/packages/julia-xyz.scm |   4 +-
 gnu/packages/julia.scm     | 292 +++++++++++++++++++++++++------------
 gnu/packages/maths.scm     |   6 +-
 gnu/packages/pcre.scm      |  14 ++
 gnu/packages/textutils.scm |  41 ++++++
 5 files changed, 257 insertions(+), 100 deletions(-)


base-commit: bddad00bffc5837e89942756fa5b7234f63f1f47
--
2.30.1




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

* [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1.
  2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
@ 2021-05-13 14:11   ` zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 2/5] gnu: Add pcre2-10.36 zimoun
                       ` (3 more replies)
  2021-05-13 14:13   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1 Nicolò Balzarotti
  2021-05-23 20:30   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " Jean-Baptiste Volatier via Guix-patches via
  2 siblings, 4 replies; 39+ messages in thread
From: zimoun @ 2021-05-13 14:11 UTC (permalink / raw)
  To: 48325; +Cc: zimon.toutoune, Jean-Baptiste Volatier, Nicolò Balzarotti

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

* gnu/packages/textutils.scm (utf8proc-2.6.1): New variable.

Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
---
 gnu/packages/textutils.scm | 41 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..dbd6dce283 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,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))
 
@@ -201,6 +203,45 @@ normalization, case-folding, and other operations for data in the UTF-8
 encoding, supporting Unicode version 9.0.0.")
     (license license:expat)))
 
+(define-public utf8proc-2.6.1
+  (package
+    (inherit utf8proc)
+    (name "utf8proc")
+    (version "2.6.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaStrings/utf8proc")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments utf8proc)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'check-data
+             (lambda* (#:key inputs #:allow-other-keys)
+               (for-each (lambda (i)
+                           (copy-file (assoc-ref inputs i)
+                                      (string-append "data/" i)))
+                         '("NormalizationTest.txt" "GraphemeBreakTest.txt"
+                           "DerivedCoreProperties.txt"))))))))
+    (native-inputs
+     (append
+      (package-native-inputs utf8proc)
+      (let ((UNICODE_VERSION "13.0.0"))
+        `(("DerivedCoreProperties.txt"
+           ,(origin
+              (method url-fetch)
+              (uri (string-append "https://www.unicode.org/Public/"
+                                  UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+              (sha256
+               (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
+          ;; For tests
+          ("ruby" ,ruby)))))))
+
 (define-public libconfuse
   (package
     (name "libconfuse")
-- 
2.30.1





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

* [bug#48325] [PATCH v3 2/5] gnu: Add pcre2-10.36.
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
@ 2021-05-13 14:11     ` zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4 zimoun
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 39+ messages in thread
From: zimoun @ 2021-05-13 14:11 UTC (permalink / raw)
  To: 48325
  Cc: zimon.toutoune, Jean-Baptiste Volatier, zimoun,
	Nicolò Balzarotti

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

* gnu/packages/pcre.scm (pcre2-10.36): New variable.

Co-Authored-By: zimoun <zimoun.toutoune@gmail.com>.
---
 gnu/packages/pcre.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..8a1bd487fe 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -125,3 +126,16 @@ own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
    (license license:bsd-3)
    (home-page "https://www.pcre.org/")))
+
+(define-public pcre2-10.36
+  (package
+    (inherit pcre2)
+    (name "pcre2")
+    (version "10.36")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/pcre/pcre2/"
+                                  version "/pcre2-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))))
-- 
2.30.1





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

* [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4.
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 2/5] gnu: Add pcre2-10.36 zimoun
@ 2021-05-13 14:11     ` zimoun
  2021-05-14 18:15       ` Maxime Devos
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 4/5] DRAFT gnu: julia: Update to 1.6.1 zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 5/5] gnu: julia-benchmarktools: Update to 0.7.0 zimoun
  3 siblings, 1 reply; 39+ messages in thread
From: zimoun @ 2021-05-13 14:11 UTC (permalink / raw)
  To: 48325; +Cc: zimon.toutoune, Jean-Baptiste Volatier, Nicolò Balzarotti

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

* gnu/packages/maths.scm (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.30.1





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

* [bug#48325] [PATCH v3 4/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 2/5] gnu: Add pcre2-10.36 zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4 zimoun
@ 2021-05-13 14:11     ` zimoun
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 5/5] gnu: julia-benchmarktools: Update to 0.7.0 zimoun
  3 siblings, 0 replies; 39+ messages in thread
From: zimoun @ 2021-05-13 14:11 UTC (permalink / raw)
  To: 48325
  Cc: zimon.toutoune, Jean-Baptiste Volatier, Nicolò Balzarotti,
	Nicolò Balzarotti

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

* 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 | 292 +++++++++++++++++++++++++++--------------
 1 file changed, 197 insertions(+), 95 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 13c9f7baf1..307ac646b3 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
@@ -223,7 +241,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 +249,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 +275,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 +319,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 +335,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 +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,22 +519,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,12 +537,15 @@ 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)
+       ("pcre2" ,pcre2-10.36)
+       ("utf8proc" ,utf8proc-2.6.1)
        ("mpfr" ,mpfr)
        ("wget" ,wget)
        ("which" ,which)
@@ -452,7 +553,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 +561,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.30.1





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

* [bug#48325] [PATCH v3 5/5] gnu: julia-benchmarktools: Update to 0.7.0.
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
                       ` (2 preceding siblings ...)
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 4/5] DRAFT gnu: julia: Update to 1.6.1 zimoun
@ 2021-05-13 14:11     ` zimoun
  3 siblings, 0 replies; 39+ messages in thread
From: zimoun @ 2021-05-13 14:11 UTC (permalink / raw)
  To: 48325; +Cc: zimon.toutoune, Jean-Baptiste Volatier, Nicolò Balzarotti

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

* 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 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.30.1





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

* [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
  2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
@ 2021-05-13 14:13   ` Nicolò Balzarotti
  2021-06-05 21:38     ` [bug#48325] update of " Ludovic Courtès
  2021-05-23 20:30   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " Jean-Baptiste Volatier via Guix-patches via
  2 siblings, 1 reply; 39+ messages in thread
From: Nicolò Balzarotti @ 2021-05-13 14:13 UTC (permalink / raw)
  To: zimoun, 48325; +Cc: Jean-Baptiste Volatier, zimon.toutoune

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

> Hi,

Hi simon,
> 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
>
> Note that,
>
>   ./pre-inst-env guix environment --pure --ad-hoc julia
>      -- julia -e 'using Pkg; Pkg.add("StaticArrays"); using StaticArrays'
>
> works fine.
>
You should try to test the package, I guess it will complain even when
installed outside of guix

Nicolò




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

* [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4.
  2021-05-13 14:11     ` [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4 zimoun
@ 2021-05-14 18:15       ` Maxime Devos
  0 siblings, 0 replies; 39+ messages in thread
From: Maxime Devos @ 2021-05-14 18:15 UTC (permalink / raw)
  To: zimoun, 48325; +Cc: Jean-Baptiste Volatier, Nicolò Balzarotti

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

zimoun schreef op do 13-05-2021 om 16:11 [+0200]:
> +       (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")

This most likely should use ,(string-append "CC=" (cc-for-target)) instead
of "CC=gcc", such that the cross-compiler is used when cross-compiling.


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
  2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
  2021-05-13 14:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
  2021-05-13 14:13   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1 Nicolò Balzarotti
@ 2021-05-23 20:30   ` Jean-Baptiste Volatier via Guix-patches via
  2 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-05-23 20:30 UTC (permalink / raw)
  To: 48325

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.
Cheers,
JB





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

* [bug#48325] update of julia to 1.6.1
  2021-05-13 14:13   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1 Nicolò Balzarotti
@ 2021-06-05 21:38     ` Ludovic Courtès
  2021-06-06 21:26       ` Nicolò Balzarotti
  0 siblings, 1 reply; 39+ 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] 39+ 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; 39+ 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] 39+ 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           ` [bug#48325] update of julia " zimoun
  0 siblings, 2 replies; 39+ 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] 39+ 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  5:06             ` [bug#48325] [PATCH v3b 4/5] julia: Update to 1.6.1: where apply upstream patches? zimoun
  2021-06-16  4:52           ` [bug#48325] update of julia " zimoun
  1 sibling, 1 reply; 39+ 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] 39+ 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; 39+ 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] 39+ messages in thread

* [bug#48325] [PATCH v3b 4/5] julia: Update to 1.6.1: where apply upstream patches?
  2021-06-13 20:54           ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-16  5:06             ` zimoun
  2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 39+ messages in thread
From: zimoun @ 2021-06-16  5:06 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, 48325, Ludovic Courtès

Hi Jean-Baptiste,

Two comments here:

On Sun, 13 Jun 2021 at 20:54, Jean-Baptiste Volatier via Guix-patches via <guix-patches@gnu.org> wrote:

> Subject: [PATCH] DRAFT gnu: julia: Update to 1.6.1.

Usually, to ease the review, we increment the reroll count and send all
the patch set.  Otherwise, one would have to read all the thread to find
which patch is the last.

Could you send the v4 containing the 5 patches IIRC?

> * 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

[...]

>  (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")

[...]

> -                     '("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"

[...]

> +                            "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)))))

This modification of patch location should appear in the commit message.

As I mentioned earlier, I am not convinced it is the right place [1].  I get
your point [2] that some are applied with the option “-p1” and other
with “-p2”.  Ludo, any recommendation?

1: <http://issues.guix.gnu.org/issue/48325#3>
2: <http://issues.guix.gnu.org/issue/48325#8>


All the best,
simon

PS:
I will be offline until the end of next week (~June, 25th). 




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

* [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1
  2021-06-16  5:06             ` [bug#48325] [PATCH v3b 4/5] julia: Update to 1.6.1: where apply upstream patches? zimoun
@ 2021-06-29 13:22               ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
                                   ` (3 more replies)
  0 siblings, 4 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-29 13:22 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier, 48325, Ludovic Courtès

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

> Usually, to ease the review, we increment the reroll count and send all
> the patch set.  Otherwise, one would have to read all the thread to find
> which patch is the last.
>
> Could you send the v4 containing the 5 patches IIRC?

Ok, I hope I am doing this the correct way, still getting used to this
workflow.

Regarding StaticArrays.jl upstream was not running the test suite against
julia 1.6. There is a merge request to address this
https://github.com/JuliaArrays/StaticArrays.jl/pull/928 so either we wait for
it, or we disable the test for now.

Jean-Baptiste Volatier (4):
  gnu: Add utf8proc-2.6.1.
  gnu: Add pcre2-10.36.
  gnu: openlibm: Update to 0.7.4.
  DRAFT gnu: julia: Update to 1.6.1.

 gnu/packages/julia.scm     | 353 +++++++++++++++++++++++++------------
 gnu/packages/maths.scm     |   6 +-
 gnu/packages/pcre.scm      |  14 ++
 gnu/packages/textutils.scm |  41 +++++
 4 files changed, 297 insertions(+), 117 deletions(-)


base-commit: 1be97fa9ced3a165704631bbcf93835b45a5ea4d
--
2.32.0






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

* [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1.
  2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-29 13:23                 ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-01  8:18                   ` Maxime Devos
  2021-06-29 13:23                 ` [bug#48325] [PATCH 2/4] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
                                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-29 13:23 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier, 48325, Ludovic Courtès

* gnu/packages/textutils.scm (utf8proc-2.6.1): New variable.

Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
---
 gnu/packages/textutils.scm | 41 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..dbd6dce283 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,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))

@@ -201,6 +203,45 @@ normalization, case-folding, and other operations for data in the UTF-8
 encoding, supporting Unicode version 9.0.0.")
     (license license:expat)))

+(define-public utf8proc-2.6.1
+  (package
+    (inherit utf8proc)
+    (name "utf8proc")
+    (version "2.6.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaStrings/utf8proc")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments utf8proc)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'check-data
+             (lambda* (#:key inputs #:allow-other-keys)
+               (for-each (lambda (i)
+                           (copy-file (assoc-ref inputs i)
+                                      (string-append "data/" i)))
+                         '("NormalizationTest.txt" "GraphemeBreakTest.txt"
+                           "DerivedCoreProperties.txt"))))))))
+    (native-inputs
+     (append
+      (package-native-inputs utf8proc)
+      (let ((UNICODE_VERSION "13.0.0"))
+        `(("DerivedCoreProperties.txt"
+           ,(origin
+              (method url-fetch)
+              (uri (string-append "https://www.unicode.org/Public/"
+                                  UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+              (sha256
+               (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
+          ;; For tests
+          ("ruby" ,ruby)))))))
+
 (define-public libconfuse
   (package
     (name "libconfuse")
--
2.32.0






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

* [bug#48325] [PATCH 2/4] gnu: Add pcre2-10.36.
  2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-29 13:23                 ` Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 4/4] " Jean-Baptiste Volatier via Guix-patches via
  3 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-29 13:23 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier, 48325, Ludovic Courtès; +Cc: zimoun

* gnu/packages/pcre.scm (pcre2-10.36): New variable.

Co-Authored-By: zimoun <zimoun.toutoune@gmail.com>.
---
 gnu/packages/pcre.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..8a1bd487fe 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -125,3 +126,16 @@ own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
    (license license:bsd-3)
    (home-page "https://www.pcre.org/")))
+
+(define-public pcre2-10.36
+  (package
+    (inherit pcre2)
+    (name "pcre2")
+    (version "10.36")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/pcre/pcre2/"
+                                  version "/pcre2-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))))
--
2.32.0






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

* [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4.
  2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-06-29 13:23                 ` [bug#48325] [PATCH 2/4] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-29 13:23                 ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-01  8:22                   ` Maxime Devos
  2021-06-29 13:23                 ` [bug#48325] [PATCH 4/4] " Jean-Baptiste Volatier via Guix-patches via
  3 siblings, 1 reply; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-29 13:23 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier, 48325, Ludovic Courtès

* gnu/packages/maths.scm (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 42e85fee6e..cb624cd62a 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3998,7 +3998,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)
@@ -4007,11 +4007,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.32.0






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

* [bug#48325] [PATCH 4/4] DRAFT gnu: julia: Update to 1.6.1.
  2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
                                   ` (2 preceding siblings ...)
  2021-06-29 13:23                 ` [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
@ 2021-06-29 13:23                 ` Jean-Baptiste Volatier via Guix-patches via
  3 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-06-29 13:23 UTC (permalink / raw)
  To: zimoun, Jean-Baptiste Volatier, 48325, Ludovic Courtès
  Cc: Nicolò Balzarotti

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[arguments]<#:phases>: Fixed paths to shared objects in
'shared-objects-paths phase, Fix tests that did not propagate
GUIX_LOCPATH in 'fix-setenv, Add symlinks to libs in 'symlink-libraries
[arguments]<:make-flags>: Added generic,-cx16 target for better compatibility
[inputs]: Add nghttp2:lib, Add gfortran:lib, Add curl-ssh, Remove arpack-ng.
[native-inputs]: Add nss-certs.

* gnu/packages/julia.scm (curl-ssh): New variable.

* gnu/packages/julia.scm (llvm-julia): Update to 11.0.0
[source]: Move julia specific patches to a julia-patches phase.
[arguments]<#:phases>: Apply julia specific patches in 'julia-patches phase

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] 39+ messages in thread

* [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1.
  2021-06-29 13:23                 ` [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-01  8:18                   ` Maxime Devos
  0 siblings, 0 replies; 39+ messages in thread
From: Maxime Devos @ 2021-07-01  8:18 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, zimoun, 48325, Ludovic Courtès

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

Jean-Baptiste Volatier via Guix-patches via schreef op di 29-06-2021 om 13:23 [+0000]:
> * gnu/packages/textutils.scm (utf8proc-2.6.1): New variable.
> 
> Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
> ---
>  gnu/packages/textutils.scm | 41 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
> 
> diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
> index ab34373705..dbd6dce283 100644
> --- a/gnu/packages/textutils.scm
> +++ b/gnu/packages/textutils.scm
> @@ -20,6 +20,7 @@
>  ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
>  ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
>  ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
> +;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -63,6 +64,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))
> 
> @@ -201,6 +203,45 @@ normalization, case-folding, and other operations for data in the UTF-8
>  encoding, supporting Unicode version 9.0.0.")
>      (license license:expat)))
> 
> +(define-public utf8proc-2.6.1
> +  (package
> +    (inherit utf8proc)
> +    (name "utf8proc")
> +    (version "2.6.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/JuliaStrings/utf8proc")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
> +    (arguments
> +     (substitute-keyword-arguments (package-arguments utf8proc)
> +       ((#:phases phases)
> +        `(modify-phases ,phases
> +           (replace 'check-data
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (for-each (lambda (i)
> +                           (copy-file (assoc-ref inputs i)
> +                                      (string-append "data/" i)))

'DerivedCoreProperties.txt" is in 'native-inputs',
so you need to do (assoc-ref (or native-inputs inputs) (string-append "data/" i))
to make sure it will be found when cross-compiling.

(When compiling natively, 'inputs' is merged into 'native-inputs')

> +                         '("NormalizationTest.txt" "GraphemeBreakTest.txt"
> +                           "DerivedCoreProperties.txt"))))))))
> +    (native-inputs
> +     (append
> +      (package-native-inputs utf8proc)


> +      (let ((UNICODE_VERSION "13.0.0"))
> +        `(("DerivedCoreProperties.txt"

Alternatively, you could move "DerivedCoreProperties.txt"
to 'inputs'. It isn't something that is compiled, so it
doesn't really matter if it is in 'inputs' or 'native-inputs',
except for ‘style’ I
suppose.

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4.
  2021-06-29 13:23                 ` [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-01  8:22                   ` Maxime Devos
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 39+ messages in thread
From: Maxime Devos @ 2021-07-01  8:22 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, zimoun, 48325, Ludovic Courtès

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

>      (arguments
>       `(#:make-flags
> -       (list (string-append "prefix=" (assoc-ref %outputs "out")))
> +       (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")

The cross-compiler TARGET-gcc is require when cross-compiling,
so you need ,(string-append "CC=" (cc-for-target)) instead of "CC=gcc"
here. "gcc" is always the native compiler.

You can test if cross-compilation seems to work with
  ./pre-inst-env guix build --target=aarch64-linux-gnu openlibm

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1.
  2021-07-01  8:22                   ` Maxime Devos
@ 2021-07-03 17:41                     ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 1/5] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
                                         ` (4 more replies)
  0 siblings, 5 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

"Maxime Devos" <maximedevos@telenet.be> writes:

> 'DerivedCoreProperties.txt" is in 'native-inputs',
> so you need to do (assoc-ref (or native-inputs inputs) (string-append "data/" i))

I updated ut8proc to fix this. The problem was also present in utf8proc-2.5.0
so I also fixed it there.

> The cross-compiler TARGET-gcc is require when cross-compiling,
> so you need ,(string-append "CC=" (cc-for-target)) instead of "CC=gcc"
> here. "gcc" is always the native compiler.

Done.

Additionaly upstream fixed the tests of staticarrays that were failing for
julia 1.6, so I also updated it.

Cheers,
JB

Jean-Baptiste Volatier (5):
  gnu: Add utf8proc-2.6.1.
  gnu: Add pcre2-10.36.
  gnu: openlibm: Update to 0.7.4.
  gnu: julia-staticarrays: Update to 1.2.5
  DRAFT gnu: julia: Update to 1.6.1.

 gnu/packages/julia-xyz.scm |   4 +-
 gnu/packages/julia.scm     | 353 +++++++++++++++++++++++++------------
 gnu/packages/maths.scm     |   6 +-
 gnu/packages/pcre.scm      |  14 ++
 gnu/packages/textutils.scm |  46 ++++-
 5 files changed, 302 insertions(+), 121 deletions(-)


base-commit: cb51663a41e945cd70f9cf6c7d252c6c5136520d
--
2.32.0






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

* [bug#48325] [PATCH v5 1/5] gnu: Add utf8proc-2.6.1.
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 17:41                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 2/5] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
                                         ` (3 subsequent siblings)
  4 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

* gnu/packages/textutils.scm (utf8proc-2.6.1): New variable.

* gnu/packages/textutils.scm (utf8pro): Fix cross-compilation.

Co-Authored-By: zimoun <zimon.toutoune@gmail.com>.
---
 gnu/packages/textutils.scm | 46 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index ab34373705..37b925e6d9 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -20,6 +20,7 @@
 ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
 ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +64,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))

@@ -185,9 +187,9 @@ libenca and several charset conversion libraries and tools.")
        (modify-phases %standard-phases
          (delete 'configure)
          (add-before 'check 'check-data
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda* (#:key inputs native-inputs #:allow-other-keys)
              (for-each (lambda (i)
-                         (copy-file (assoc-ref inputs i)
+                         (copy-file (assoc-ref (or native-inputs inputs) i)
                                     (string-append "data/" i)))
                        '("NormalizationTest.txt" "GraphemeBreakTest.txt"))
              (substitute* "data/GraphemeBreakTest.txt"
@@ -201,6 +203,46 @@ normalization, case-folding, and other operations for data in the UTF-8
 encoding, supporting Unicode version 9.0.0.")
     (license license:expat)))

+(define-public utf8proc-2.6.1
+  (package
+    (inherit utf8proc)
+    (name "utf8proc")
+    (version "2.6.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaStrings/utf8proc")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1zqc6airkzkssbjxanx5v8blfk90180gc9id0dx8ncs54f1ib8w7"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments utf8proc)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'check-data
+             (lambda* (#:key inputs native-inputs #:allow-other-keys)
+               (display native-inputs)
+               (for-each (lambda (i)
+                           (copy-file (assoc-ref (or native-inputs inputs) i)
+                                      (string-append "data/" i)))
+                         '("NormalizationTest.txt" "GraphemeBreakTest.txt"
+                           "DerivedCoreProperties.txt"))))))))
+    (native-inputs
+     (append
+      (package-native-inputs utf8proc)
+      (let ((UNICODE_VERSION "13.0.0"))
+        `(("DerivedCoreProperties.txt"
+           ,(origin
+              (method url-fetch)
+              (uri (string-append "https://www.unicode.org/Public/"
+                                  UNICODE_VERSION "/ucd/DerivedCoreProperties.txt"))
+              (sha256
+               (base32 "0j12x112cd8fpgazkc8izxnhhpia44p1m36ff8yapslxndcmzm55"))))
+          ;; For tests
+          ("ruby" ,ruby)))))))
+
 (define-public libconfuse
   (package
     (name "libconfuse")
--
2.32.0






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

* [bug#48325] [PATCH v5 2/5] gnu: Add pcre2-10.36.
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 1/5] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 17:41                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 3/5] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
                                         ` (2 subsequent siblings)
  4 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

* gnu/packages/pcre.scm (pcre2-10.36): New variable.

Co-Authored-By: zimoun <zimoun.toutoune@gmail.com>.
---
 gnu/packages/pcre.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..8a1bd487fe 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -125,3 +126,16 @@ own native API, as well as a set of wrapper functions that correspond to the
 POSIX regular expression API.")
    (license license:bsd-3)
    (home-page "https://www.pcre.org/")))
+
+(define-public pcre2-10.36
+  (package
+    (inherit pcre2)
+    (name "pcre2")
+    (version "10.36")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/pcre/pcre2/"
+                                  version "/pcre2-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))))
--
2.32.0






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

* [bug#48325] [PATCH v5 3/5] gnu: openlibm: Update to 0.7.4.
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 1/5] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 2/5] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 17:41                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 4/5] gnu: julia-staticarrays: Update to 1.2.5 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  4 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

* gnu/packages/maths.scm (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 93b8ee2ad4..335c745956 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4002,7 +4002,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)
@@ -4011,11 +4011,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")) ,(string-append "CC=" (cc-for-target)))
        #:phases
        ;; no configure script
        (modify-phases %standard-phases (delete 'configure))
--
2.32.0






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

* [bug#48325] [PATCH v5 4/5] gnu: julia-staticarrays: Update to 1.2.5
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
                                         ` (2 preceding siblings ...)
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 3/5] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 17:41                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  4 siblings, 0 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

* gnu/packages/julia-xyz.scm (julia-staticarrays): Update to 1.2.5
---
 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 50effa43f4..b2c7d93589 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -3566,7 +3566,7 @@ types and a common interface that is shared between them.")
 (define-public julia-staticarrays
   (package
     (name "julia-staticarrays")
-    (version "1.2.0")
+    (version "1.2.5")
     (source
      (origin
        (method git-fetch)
@@ -3575,7 +3575,7 @@ types and a common interface that is shared between them.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0z4g1kk6gy514dyafb559gcp4264ffx6h28ffczdvkyk8gm9j0m7"))))
+        (base32 "0vvs1kwpax18iyhiivznhq49nid0zh4fbfxyq99h0n3x2s1hzyi6"))))
     (build-system julia-build-system)
     (inputs
      `(("julia-benchmarktools" ,julia-benchmarktools)))
--
2.32.0






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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
                                         ` (3 preceding siblings ...)
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 4/5] gnu: julia-staticarrays: Update to 1.2.5 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 17:41                       ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 19:40                         ` Maxime Devos
                                           ` (2 more replies)
  4 siblings, 3 replies; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-03 17:41 UTC (permalink / raw)
  To: Maxime Devos, Jean-Baptiste Volatier, zimoun, 48325,
	Ludovic Courtès

* gnu/packages/julia.scm (julia): Update to 1.6.1.
[arguments]<#:phases>: Fixed paths to shared objects in
'shared-objects-paths phase, Fix tests that did not propagate
GUIX_LOCPATH in 'fix-setenv, Add symlinks to libs in 'symlink-libraries
[arguments]<:make-flags>: Added generic,-cx16 target for better compatibility
[inputs]: Add nghttp2:lib, Add gfortran:lib, Add curl-ssh, Remove arpack-ng.
[native-inputs]: Add nss-certs.

* gnu/packages/julia.scm (curl-ssh): New variable.

* gnu/packages/julia.scm (llvm-julia): Update to 11.0.0
[source]: Move julia specific patches to a julia-patches phase.
[arguments]<#:phases>: Apply julia specific patches in 'julia-patches phase

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] 39+ messages in thread

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-03 19:40                         ` Maxime Devos
  2021-07-03 19:54                         ` Maxime Devos
  2021-07-09 16:12                         ` Efraim Flashner
  2 siblings, 0 replies; 39+ messages in thread
From: Maxime Devos @ 2021-07-03 19:40 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, zimoun, 48325, Ludovic Courtès

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

Jean-Baptiste Volatier schreef op za 03-07-2021 om 17:41 [+0000]:
> +               (invoke "ln" "-s" (string-append (assoc-ref inputs "p7zip") "/bin/7z") "usr/bin/")

No need to shell out here. You can use the 'symlink' procedure,
see info '(guile)File System'.  Likewise for other uses of (invoke "ln" "-s" ...)

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 19:40                         ` Maxime Devos
@ 2021-07-03 19:54                         ` Maxime Devos
  2021-07-04  7:17                           ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-09 16:12                         ` Efraim Flashner
  2 siblings, 1 reply; 39+ messages in thread
From: Maxime Devos @ 2021-07-03 19:54 UTC (permalink / raw)
  To: Jean-Baptiste Volatier, zimoun, 48325, Ludovic Courtès

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

Jean-Baptiste Volatier schreef op za 03-07-2021 om 17:41 [+0000]:
> +       ("nss-certs" ,nss-certs)

Preferably not if it can be avoided.

Users should be able to curate their own bundle of certificates
instead of relying on Mozilla, though in practice people will
just let Mozilla handle that.  Or, on multi-user systems, just
rely on the administrator to choose a bundle of certificates,
install it globally and update it regularily.

Also, it should be possible to update the certificate bundle
(e.g. if it turns out some root was or became evil or something,
or was compromised) quickly, without going through a world rebuild.
So dependencies on "nss-certs" should be avoided.

What are the reasons for adding "nss-certs" here?

Greetings,
Maxime

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-03 19:54                         ` Maxime Devos
@ 2021-07-04  7:17                           ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-04 11:43                             ` Maxime Devos
  0 siblings, 1 reply; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-04  7:17 UTC (permalink / raw)
  To: Maxime Devos; +Cc: Ludovic Courtès, 48325, zimoun

On Saturday, July 3rd, 2021 at 9:54 PM, Maxime Devos <maximedevos@telenet.be> wrote:

> What are the reasons for adding "nss-certs" here?

nss-certs is added to address this: https://github.com/JuliaLang/julia/issues/40185
Quoting Sacha0 from github:

> IIRC generate_precompile builds a mock registry to avoid going to network, but
> the cert issue that nico202 mentioned breaks that mock setup, and downstream
> operations subsequently try to go to network.

It is only needed to build the julia package.
Cheers,
JB.




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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-04  7:17                           ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-04 11:43                             ` Maxime Devos
  2021-07-04 17:47                               ` Jean-Baptiste Volatier via Guix-patches via
  0 siblings, 1 reply; 39+ messages in thread
From: Maxime Devos @ 2021-07-04 11:43 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: Ludovic Courtès, 48325, zimoun

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

Jean-Baptiste Volatier schreef op zo 04-07-2021 om 07:17 [+0000]:
> On Saturday, July 3rd, 2021 at 9:54 PM, Maxime Devos <maximedevos@telenet.be> wrote:
> 
> > What are the reasons for adding "nss-certs" here?
> 
> nss-certs is added to address this: https://github.com/JuliaLang/julia/issues/40185
> Quoting Sacha0 from github:
> 
> > IIRC generate_precompile builds a mock registry to avoid going to network, but
> > the cert issue that nico202 mentioned breaks that mock setup, and downstream
> > operations subsequently try to go to network.
> 
> It is only needed to build the julia package.
> Cheers,
> JB.

I see. The following still applies though:

‘Also, it should be possible to update the certificate bundle
(e.g. if it turns out some root was or became evil or something,
or was compromised) quickly, without going through a world rebuild.
So dependencies on "nss-certs" should be avoided.’

So perhaps you could define a "nss-certs-for-tests" variable
(currently just pointing to nss-certs), and add "nss-certs-for-tests" to
#:disallowed-references to prevent "nss-certs-for-tests" being used at
run-time?

I don't quite see _why_ Julia needs certificates at build time though ...
Also, I wonder if this causes reproducibility issues --- if we try to rebuild
julia after, say, 50 years, e.g. by using "guix time-machine", wouldn't the
certificates become invalid, and would therefore the build of Julia fail?

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-04 11:43                             ` Maxime Devos
@ 2021-07-04 17:47                               ` Jean-Baptiste Volatier via Guix-patches via
  2021-07-04 21:01                                 ` Maxime Devos
  0 siblings, 1 reply; 39+ messages in thread
From: Jean-Baptiste Volatier via Guix-patches via @ 2021-07-04 17:47 UTC (permalink / raw)
  To: Maxime Devos; +Cc: Ludovic Courtès, 48325, zimoun

On Sunday, July 4th, 2021 at 1:43 PM, Maxime Devos <maximedevos@telenet.be> wrote:

> So perhaps you could define a "nss-certs-for-tests" variable
> (currently just pointing to nss-certs), and add "nss-certs-for-tests" to
> #:disallowed-references to prevent "nss-certs-for-tests" being used at
> run-time?

Ok, I did not know about #:disallowed-references.

> I don't quite see why Julia needs certificates at build time though ...

I can only speculate, but my guess is: julia is compiled just-in-time, functions
are compiled first time they are run. For some common function the build
procedure runs some sample code in order to compile them ahead of time. If
certificates are not present there are some functions that do not get compiled
ahead of time and then the build procedure fails.

> Also, I wonder if this causes reproducibility issues --- if we try to rebuild
> julia after, say, 50 years, e.g. by using "guix time-machine", wouldn't the
> certificates become invalid, and would therefore the build of Julia fail?

I thought that guix build was running with time set 1st January 1970 so that
should not happen? Or am I mistaken?

Also current julia package is also not reproducible it seems. [1]

[1] https://issues.guix.gnu.org/22304

Cheers,
JB.




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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-04 17:47                               ` Jean-Baptiste Volatier via Guix-patches via
@ 2021-07-04 21:01                                 ` Maxime Devos
  0 siblings, 0 replies; 39+ messages in thread
From: Maxime Devos @ 2021-07-04 21:01 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: Ludovic Courtès, 48325, zimoun

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

Jean-Baptiste Volatier schreef op zo 04-07-2021 om 17:47 [+0000]:
> 
[...]
> > Also, I wonder if this causes reproducibility issues --- if we try to rebuild
> > julia after, say, 50 years, e.g. by using "guix time-machine", wouldn't the
> > certificates become invalid, and would therefore the build of Julia fail?
> 
> I thought that guix build was running with time set 1st January 1970 so that
> should not happen? Or am I mistaken?

There is an issue on https://issues.guix.gnu.org on using time namespaces
to always run with with time set to 1970 (or some other date).  I can't
find it anymore though.  The problem was that the ‘real time’ clock could
not be adjusted.

Maybe we could rewind the other clocks anyway, even if the ‘real time clock’
cannot be adjusted?  Or maybe the inconsistency would cause problems ...

SOURCE_DATE_EPOCH is set to 1 jan 1970 and likewise for the 'mtime'
and 'atime' of files in /gnu/store (or was it some other date?) though.

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
  2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-07-03 19:40                         ` Maxime Devos
  2021-07-03 19:54                         ` Maxime Devos
@ 2021-07-09 16:12                         ` Efraim Flashner
  2 siblings, 0 replies; 39+ messages in thread
From: Efraim Flashner @ 2021-07-09 16:12 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: Ludovic Courtès, 48325, Maxime Devos, zimoun

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

On Sat, Jul 03, 2021 at 05:41:58PM +0000, Jean-Baptiste Volatier via Guix-patches via wrote:
> * gnu/packages/julia.scm (julia): Update to 1.6.1.
> [arguments]<#:phases>: Fixed paths to shared objects in
> 'shared-objects-paths phase, Fix tests that did not propagate
> GUIX_LOCPATH in 'fix-setenv, Add symlinks to libs in 'symlink-libraries
> [arguments]<:make-flags>: Added generic,-cx16 target for better compatibility
> [inputs]: Add nghttp2:lib, Add gfortran:lib, Add curl-ssh, Remove arpack-ng.
> [native-inputs]: Add nss-certs.
> 
> * gnu/packages/julia.scm (curl-ssh): New variable.
> 
> * gnu/packages/julia.scm (llvm-julia): Update to 11.0.0
> [source]: Move julia specific patches to a julia-patches phase.
> [arguments]<#:phases>: Apply julia specific patches in 'julia-patches phase
> 
> 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)))
> 

IMO since this package inherits from curl it should go next to curl, but
be a hidden package.

> +(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")

After updating mbedtls-apache I added the following two lines here:
;; For the newer version of mbedtls-apache:
(("libmbedcrypto.so.5") "libmbedcrypto.so.6")

> +                 (((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)

can we use the 'symlink' function here rather than shelling out to 'ln'?
Also for the other instances of it in this patch.

> +                             (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 JULIA_CPU_TARGET unconditionally here will likely break julia on
i686. On the other architectures it will be overridden. It would be best
to put it with the x86_64 MARCH architecture and adapt the comment there
to mention setting the MARCH and optionally the JULIA_CPU_TARGET on a
per-architecture basis.

>           ;; 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
> +         ;;

As long as these all got moved around I'd keep them sorted either
quasi-alphabetically or in the order they appear in the Make.inc file. I
didn't check the file to see if that was the case.

> +         "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)

try to keep the libraries sorted alphabetically, it reduces the chance
of duplication.

>         ("python" ,python-2)))
>      (native-search-paths
>        (list (search-path-specification
> --
> 2.32.0
> 
> 
> 
> 
> 

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* bug#48325: update of julia to 1.6.1
  2021-05-09 21:53 [bug#48325] update of julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
  2021-05-13 14:08 ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " zimoun
@ 2021-08-04  8:07 ` Efraim Flashner
  1 sibling, 0 replies; 39+ messages in thread
From: Efraim Flashner @ 2021-08-04  8:07 UTC (permalink / raw)
  To: Jean-Baptiste Volatier; +Cc: 48325-done

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

Julia was successfully updated to 1.6.1. Closing the bug.

Thanks for all your hard work.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

end of thread, other threads:[~2021-08-04  8:09 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-09 21:53 [bug#48325] update of julia to 1.6.1 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:11   ` [bug#48325] [PATCH v3 1/5] gnu: Add utf8proc-2.6.1 zimoun
2021-05-13 14:11     ` [bug#48325] [PATCH v3 2/5] gnu: Add pcre2-10.36 zimoun
2021-05-13 14:11     ` [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4 zimoun
2021-05-14 18:15       ` Maxime Devos
2021-05-13 14:11     ` [bug#48325] [PATCH v3 4/5] DRAFT gnu: julia: Update to 1.6.1 zimoun
2021-05-13 14:11     ` [bug#48325] [PATCH v3 5/5] gnu: julia-benchmarktools: Update to 0.7.0 zimoun
2021-05-13 14:13   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1 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  5:06             ` [bug#48325] [PATCH v3b 4/5] julia: Update to 1.6.1: where apply upstream patches? zimoun
2021-06-29 13:22               ` [bug#48325] [PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
2021-06-29 13:23                 ` [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
2021-07-01  8:18                   ` Maxime Devos
2021-06-29 13:23                 ` [bug#48325] [PATCH 2/4] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
2021-06-29 13:23                 ` [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
2021-07-01  8:22                   ` Maxime Devos
2021-07-03 17:41                     ` [bug#48325] [PATCH v5 0/5] DRAFT: Update julia to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 17:41                       ` [bug#48325] [PATCH v5 1/5] gnu: Add utf8proc-2.6.1 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 17:41                       ` [bug#48325] [PATCH v5 2/5] gnu: Add pcre2-10.36 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 17:41                       ` [bug#48325] [PATCH v5 3/5] gnu: openlibm: Update to 0.7.4 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 17:41                       ` [bug#48325] [PATCH v5 4/5] gnu: julia-staticarrays: Update to 1.2.5 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 17:41                       ` [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1 Jean-Baptiste Volatier via Guix-patches via
2021-07-03 19:40                         ` Maxime Devos
2021-07-03 19:54                         ` Maxime Devos
2021-07-04  7:17                           ` Jean-Baptiste Volatier via Guix-patches via
2021-07-04 11:43                             ` Maxime Devos
2021-07-04 17:47                               ` Jean-Baptiste Volatier via Guix-patches via
2021-07-04 21:01                                 ` Maxime Devos
2021-07-09 16:12                         ` Efraim Flashner
2021-06-29 13:23                 ` [bug#48325] [PATCH 4/4] " Jean-Baptiste Volatier via Guix-patches via
2021-06-16  4:52           ` [bug#48325] update of julia " zimoun
2021-05-23 20:30   ` [bug#48325] [PATCH v3 0/5] DRAFT: Update " Jean-Baptiste Volatier via Guix-patches via
2021-08-04  8:07 ` bug#48325: update of " Efraim Flashner
     [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:55                   ` zimoun
2021-05-11 10:18                     ` Nicolò Balzarotti
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

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.