diff mbox series

[bug#48325] update of julia to 1.6.1

Message ID To5xE-KO2rEvaVw0ua4LA3k6uVXhNaulSKlW2xy7nOSNwVGMK4RrOGWJegbXwRTec-5cGikmOmq2vn8Brx7aEA==@pm.me
State Accepted
Headers show
Series [bug#48325] update of julia to 1.6.1 | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Jean-Baptiste Volatier May 9, 2021, 9:53 p.m. UTC
Hi !
I would like to submit this patch to update julia to 1.6.1.
Best regards,
JB.

Comments

Simon Tournier May 13, 2021, 2:08 p.m. UTC | #1
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
Nicolò Balzarotti May 13, 2021, 2:13 p.m. UTC | #2
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ò
Jean-Baptiste Volatier May 23, 2021, 8:30 p.m. UTC | #3
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
Ludovic Courtès June 5, 2021, 9:38 p.m. UTC | #4
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’.
Nicolò Balzarotti June 6, 2021, 9:26 p.m. UTC | #5
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ò
Efraim Flashner Aug. 4, 2021, 8:07 a.m. UTC | #6
Julia was successfully updated to 1.6.1. Closing the bug.

Thanks for all your hard work.
diff mbox series

Patch

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