update of julia to 1.6.1

  • Done
  • quality assurance status badge
Details
6 participants
  • Nicolò Balzarotti
  • Efraim Flashner
  • Jean-Baptiste Volatier
  • Ludovic Courtès
  • Maxime Devos
  • zimoun
Owner
unassigned
Submitted by
Jean-Baptiste Volatier
Severity
normal
J
J
Jean-Baptiste Volatier wrote on 9 May 2021 23:53
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
To5xE-KO2rEvaVw0ua4LA3k6uVXhNaulSKlW2xy7nOSNwVGMK4RrOGWJegbXwRTec-5cGikmOmq2vn8Brx7aEA==@pm.me
Hi !
I would like to submit this patch to update julia to 1.6.1.
Best regards,
JB.
Attachment: julia.patch
N
N
Nicolò Balzarotti wrote on 10 May 2021 09:07
Re: julia-1.6 guix
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)(address . 48325@debbugs.gnu.org)
87mtt3f4mp.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
I'll forward here the review I sent you privately.

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

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


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

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

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

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

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

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

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

No clue, this was already there.

Toggle quote (4 lines)
>>> build to install
>>>
>>> What does this comment refer to?

Some leftover I forgot to remove.

Cheers,
jB
Z
Z
zimoun wrote on 11 May 2021 02:07
Re: [bug#48325] julia-1.6 guix
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)
86a6p22kw7.fsf@gmail.com
Hi Jean-Baptiste,

Thanks for the patch. Here some minor comments.

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

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

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

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

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

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

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

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

Toggle quote (2 lines)
> - '("arpack-ng" "curl" "dsfmt"

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

Toggle quote (5 lines)
> + '("curl" "dsfmt"
> "gmp" "lapack"
> - "libssh2" "libgit2"
> + "libssh2" "libnghttp2" "libgit2"

Idem for libnghttp2.

Toggle quote (7 lines)
> "mbedtls" "mpfr"
> "openblas" "openlibm" "pcre2"
> - "suitesparse"))
> - ":"))
> - #t))
> + "suitesparse" "libfortran"))

Idem for libfortran.

Toggle quote (7 lines)
> - (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)

[...]

Toggle quote (2 lines)
> + ;; FAILING: OpenBLAS

What does it mean?


Toggle quote (2 lines)
> + (add-before 'install 'symlink-libraries

[...]

Toggle quote (2 lines)
> + (link "zlib" "usr/lib/julia/" "libz\\.so")

Does this fix


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

Toggle snippet (11 lines)
* gnu: julia: Update to 1.6.1.

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

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

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

Does it make sense?

Toggle quote (2 lines)
> - "USE_SYSTEM_ARPACK=1"

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

Toggle quote (13 lines)
> "USE_SYSTEM_LIBGIT2=1"
> "USE_SYSTEM_ZLIB=1")))
> (inputs
> `(("llvm" ,llvm-julia)
> ("p7zip" ,p7zip)
> - ;; The bundled version is 3.3.0 so stick to that version. With other
> - ;; versions, we get test failures in 'linalg/arnoldi' as described in
> - ;; <https://bugs.gnu.org/30282>.
> - ("arpack-ng" ,arpack-ng-3.3.0)
> -
> - ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
> + ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like

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

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

Idem.

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

Hum? Is it really necessary?

Toggle quote (2 lines)
> + ("glibc-locales" ,glibc-locales)

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



Thanks again for the patch.


Cheers,
simon
N
N
Nicolò Balzarotti wrote on 11 May 2021 11:18
(address . 48325@debbugs.gnu.org)
87k0o5fx1w.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

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

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

Yep I helped a bit

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

Toggle quote (8 lines)
>
>> + '("curl" "dsfmt"
>> "gmp" "lapack"
>> - "libssh2" "libgit2"
>> + "libssh2" "libnghttp2" "libgit2"
>
> Idem for libnghttp2.
>
Toggle quote (9 lines)
>> "mbedtls" "mpfr"
>> "openblas" "openlibm" "pcre2"
>> - "suitesparse"))
>> - ":"))
>> - #t))
>> + "suitesparse" "libfortran"))
>
> Idem for libfortran.

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

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

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

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

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


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

Toggle quote (19 lines)
>
>> "USE_SYSTEM_LIBGIT2=1"
>> "USE_SYSTEM_ZLIB=1")))
>> (inputs
>> `(("llvm" ,llvm-julia)
>> ("p7zip" ,p7zip)
>> - ;; The bundled version is 3.3.0 so stick to that version. With other
>> - ;; versions, we get test failures in 'linalg/arnoldi' as described in
>> - ;; <https://bugs.gnu.org/30282>.
>> - ("arpack-ng" ,arpack-ng-3.3.0)
>> -
>> - ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
>> + ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
>
> This is not a change. Even if the new indentation is correct, please
> let avoid cosmetic change in the same commit updating a complex package.
> Because then digging in the history becomes more complex. :-)
>

Agreed
Toggle quote (4 lines)
>> + ("nss-certs" ,nss-certs) ; required to precompile
>
> Hum? Is it really necessary?
>
I think that the alternative is to disable a few tests. I opened a bug
report a few months ago here:

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

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

Toggle quote (3 lines)
>
> Thanks again for the patch.
>
Yep, thanks Jean-Baptiste and Simon for your review


Nicolò
N
N
Nicolò Balzarotti wrote on 11 May 2021 11:53
(address . 48325@debbugs.gnu.org)
87h7j9fvgc.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Toggle quote (3 lines)
>> cd /gnu/store/fp5by15552ihyppxppigmbxs981rd08h-julia-1.6.1
>> find -type f -exec grep '/tmp/guix-build-julia-1.5.3.drv-0' {} \;
>
I just realized I should have run

Toggle quote (2 lines)
> find -type f -exec grep '/tmp/guix-build-julia-1.6.1.drv-0' {} \;

Binary file ./bin/.julia-real matches
Binary file ./lib/julia/sys.so matches
Binary file ./lib/julia/libccalltest.so.debug matches
Binary file ./lib/julia/libjulia-internal.so.1.6 matches
Binary file ./lib/julia/libllvmcalltest.so matches
Binary file ./lib/libjulia.so.1.6 matches
Binary file ./share/julia/base.cache matches
Z
Z
zimoun wrote on 11 May 2021 11:55
(address . 48325@debbugs.gnu.org)
86zgx11to1.fsf@gmail.com
Hi,

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

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

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

guix refresh -l pcre2

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

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


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

Cool!

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

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

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

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

Thanks for the patch and the explanations.

Cheers,
simon
N
N
Nicolò Balzarotti wrote on 11 May 2021 12:18
(address . 48325@debbugs.gnu.org)
87cztxfu9r.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

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

Nope, I just changed home with
Toggle quote (2 lines)
> HOME=/tmp julia
>
I tried with a container now:

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

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

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

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

close(fh))

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

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

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

The biggest change seams to lie in Julia itself (~+130Mb)
Attachment: size.log
J
J
Jean-Baptiste Volatier wrote on 11 May 2021 13:38
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
H2qZARtXUCbGTx5BAAi-uxz73f7m7nwkovZHcIRc6pqFZJwkT74htl1X73teqI0DKbCwCakB5r7ZkP_grXVx2w==@pm.me
I splitted the patch in 5. If it is not possible to update pcre2, we only
need to disable a couple of tests.

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

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

Toggle quote (3 lines)
> I have not read the Julia ChangeLog. Do they remove Arpack? This
> should be mentioned in the commit message.

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

Toggle quote (9 lines)
>> + (link "zlib" "usr/lib/julia/" "libz\\.so")

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

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

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

Toggle quote (4 lines)
>> + ("nss-certs" ,nss-certs) ; required to precompile

> Hum? Is it really necessary?

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

Toggle quote (5 lines)
>> + ("glibc-locales" ,glibc-locales)

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

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

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

Toggle quote (6 lines)
> julia -e 'using Pkg; Pkg.add("GZip"); using GZip'

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

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

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

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

Toggle diff (24 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index db3e3b846d..b6272c0b4d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -100,7 +100,7 @@ be GPU compatible without throwing away the wrapper.")
(define-public julia-benchmarktools
(package
(name "julia-benchmarktools")
- (version "0.5.0")
+ (version "0.7.0")
(source
(origin
(method git-fetch)
@@ -109,7 +109,7 @@ be GPU compatible without throwing away the wrapper.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0nsx21m3i5h22lkgyrmfj6r085va6ag40khwssqs8y7l0wz98lvp"))))
+ (base32 "000izw9pj7cbh9r35nnwg2ijkb9dpfd5nkl2889b8b2dpsh4fi63"))))
(build-system julia-build-system)
(propagated-inputs `(("julia-json" ,julia-json)))
(home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
--
2.31.1
From a49942cd937f049f5ea8479a135ba50894fdeef5 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:49:56 +0200
Subject: [PATCH 1/5] gnu: utf8proc: update to 2.6.1

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

Toggle diff (72 lines)
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
From 96ef77bba818f2260646aa78cc4abbd1d69fe063 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:50:51 +0200
Subject: [PATCH 2/5] gnu: pcre2: update to 10.56

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

Toggle diff (23 lines)
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index ab48168567..42b2052598 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -89,14 +89,14 @@ POSIX regular expression API.")
(define-public pcre2
(package
(name "pcre2")
- (version "10.35")
+ (version "10.36")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/pcre/pcre2/"
version "/pcre2-" version ".tar.bz2"))
(sha256
(base32
- "04s6kmk9qdd4rjz477h547j4bx7hfz0yalpvrm381rqc5ghaijww"))))
+ "0p3699msps07p40g9426lvxa3b41rg7k2fn7qxl2jm0kh4kkkvx9"))))
(build-system gnu-build-system)
(inputs `(("bzip2" ,bzip2)
("readline" ,readline)
--
2.31.1
From 75a196730ef507ec75bcf673005154b6c7e0c2a4 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Volatier <jbv@pm.me>
Date: Tue, 11 May 2021 10:51:11 +0200
Subject: [PATCH 3/5] gnu: openlibm: update to 0.7.4

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

Toggle diff (29 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9f7bdb9bb1..7be5d418e7 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3959,7 +3959,7 @@ access to BLIS implementations via traditional BLAS routine calls.")
(define-public openlibm
(package
(name "openlibm")
- (version "0.6.0")
+ (version "0.7.4")
(source
(origin
(method git-fetch)
@@ -3968,11 +3968,11 @@ access to BLIS implementations via traditional BLAS routine calls.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "08wfchmmr5200fvmn1kwq9byc1fhsq46hn0y5k8scdl74771c7gh"))))
+ (base32 "1azms0lpxb7vxb3bln5lyz0wpwx6jnzbffkclclpq2v5aiw8d14i"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
- (list (string-append "prefix=" (assoc-ref %outputs "out")))
+ (list (string-append "prefix=" (assoc-ref %outputs "out")) "CC=gcc")
#:phases
;; no configure script
(modify-phases %standard-phases (delete 'configure))
--
2.31.1
Z
Z
zimoun wrote on 11 May 2021 15:13
Re: bug#48325: update of julia to 1.6.1
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
857dk58lcf.fsf_-_@gmail.com
Hi Nicolò,

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

Toggle quote (2 lines)
[...]

Toggle quote (8 lines)
>>> (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)

[...]

Toggle quote (4 lines)
> 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
J
J
Jean-Baptiste Volatier wrote on 11 May 2021 15:46
(name . zimoun)(address . zimon.toutoune@gmail.com)
50x9qMaoufOZcJZDXjSWQx89qYAfEviq-hI8xn_dqlIULOUI3LtG-MIMPd-RAjAv6Cx9CIEar9i47GP3t6l6rg==@pm.me
zimoun <zimon.toutoune@gmail.com> wrote:

Toggle quote (6 lines)
>> ? 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.


Toggle quote (4 lines)
> 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
Z
Z
zimoun wrote on 12 May 2021 10:43
Re: [bug#48325] julia-1.6 guix
(address . 48325@debbugs.gnu.org)
86fsysibpg.fsf@gmail.com
Hi,

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

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

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

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

…because I am not clear with this, yet.


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

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

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

Yes, that’s my understanding.


Cheers,
simon
Z
Z
zimoun wrote on 13 May 2021 16:08
[PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
(address . 48325@debbugs.gnu.org)
20210513140818.10217-1-zimon.toutoune@gmail.com
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:

Toggle snippet (4 lines)
? 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

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

Toggle snippet (29 lines)
$ ./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


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

Toggle snippet (23 lines)
$ ./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

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


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
Z
Z
zimoun wrote on 13 May 2021 16:11
[PATCH v3 1/5] gnu: Add utf8proc-2.6.1.
(address . 48325@debbugs.gnu.org)
20210513141105.10274-1-zimon.toutoune@gmail.com
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(+)

Toggle diff (68 lines)
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
Z
Z
zimoun wrote on 13 May 2021 16:11
[PATCH v3 3/5] gnu: openlibm: Update to 0.7.4.
(address . 48325@debbugs.gnu.org)
20210513141105.10274-3-zimon.toutoune@gmail.com
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(-)

Toggle diff (29 lines)
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
Z
Z
zimoun wrote on 13 May 2021 16:11
[PATCH v3 4/5] DRAFT gnu: julia: Update to 1.6.1.
(address . 48325@debbugs.gnu.org)
20210513141105.10274-4-zimon.toutoune@gmail.com
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(-)

Toggle diff (368 lines)
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/"
This message was truncated. Download the full message here.
Z
Z
zimoun wrote on 13 May 2021 16:11
[PATCH v3 5/5] gnu: julia-benchmarktools: Update to 0.7.0.
(address . 48325@debbugs.gnu.org)
20210513141105.10274-5-zimon.toutoune@gmail.com
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(-)

Toggle diff (24 lines)
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
Z
Z
zimoun wrote on 13 May 2021 16:11
[PATCH v3 2/5] gnu: Add pcre2-10.36.
(address . 48325@debbugs.gnu.org)
20210513141105.10274-2-zimon.toutoune@gmail.com
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(+)

Toggle diff (31 lines)
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
N
N
Nicolò Balzarotti wrote on 13 May 2021 16:13
Re: [bug#48325] [PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
87mtsy67rv.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (2 lines)
> Hi,

Hi simon,
Toggle quote (5 lines)
> 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

Toggle quote (8 lines)
>
> 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ò
M
M
Maxime Devos wrote on 14 May 2021 20:15
Re: [bug#48325] [PATCH v3 3/5] gnu: openlibm: Update to 0.7.4.
8f1cf7e971d866906a96ff1d320aa247f0a1f712.camel@telenet.be
zimoun schreef op do 13-05-2021 om 16:11 [+0200]:
Toggle quote (2 lines)
> + (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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYJ6+NhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7r1EAP9FwY+BQgIL0h1gEBEVq/JNUchZ
fbSFNEd387uK5IFD3AEAhuwsJeHOang8bJm+KmjVcaaUP39Pt5Kz1/VPfeP7Ew8=
=Fn3b
-----END PGP SIGNATURE-----


J
J
Jean-Baptiste Volatier wrote on 23 May 2021 22:30
Re: [PATCH v3 0/5] DRAFT: Update julia to 1.6.1.
(address . 48325@debbugs.gnu.org)
GTvun5-HBu86UkXM-HcX45b8SVO4VOnUKAmayK5h_R0rLtqu-BDHSGGhliOg9u18qYBkCRnykIJBm7nSBTVTnA==@pm.me
On Thursday, May 13th, 2021 at 4:08 PM, zimoun <zimon.toutoune@gmail.com> wrote:
Toggle quote (9 lines)
> 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
L
L
Ludovic Courtès wrote on 5 Jun 2021 23:38
Re: bug#48325: update of julia to 1.6.1
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
87pmx0kn5p.fsf_-_@gnu.org
Hello!

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

Toggle quote (9 lines)
>> 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:

Toggle quote (20 lines)
> 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’.
N
N
Nicolò Balzarotti wrote on 6 Jun 2021 23:26
Re: [bug#48325] update of julia to 1.6.1
(name . Ludovic Courtès)(address . ludo@gnu.org)
87zgw2znuf.fsf@guix.i-did-not-set--mail-host-address--so-tickle-me
Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (2 lines)
> Hello!
>
Hi,
Toggle quote (8 lines)
> [...]
>
> 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:

Toggle quote (5 lines)
> 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ò
J
J
Jean-Baptiste Volatier wrote on 13 Jun 2021 22:37
(address . 48325@debbugs.gnu.org)
lh2-k4rETExQrYHvmYkIzl5qtbK5h4CXU_iZMFXvDhgyARx7KHz4k0UV7dKzk7i-s1F_QjjBqAIes57rmgPsag==@pm.me
Hi!

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

Toggle quote (3 lines)
> 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.

Toggle quote (8 lines)
> 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:

Toggle quote (4 lines)
> 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
J
Z
Z
zimoun wrote on 16 Jun 2021 06:52
861r92l8cg.fsf@gmail.com
Hi,


On Sun, 13 Jun 2021 at 20:37, Jean-Baptiste Volatier via Guix-patches via <guix-patches@gnu.org> wrote:
Toggle quote (10 lines)
> 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.

Toggle quote (20 lines)
>> 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
Z
Z
zimoun wrote on 16 Jun 2021 07:06
[PATCH v3b 4/5] julia: Update to 1.6.1: where apply upstream patches?
86v96ejt4s.fsf@gmail.com
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:

Toggle quote (2 lines)
> 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?

Toggle quote (16 lines)
> * 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

[...]

Toggle quote (19 lines)
> (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")

[...]

Toggle quote (36 lines)
> - '("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"

[...]

Toggle quote (11 lines)
> + "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?



All the best,
simon

PS:
I will be offline until the end of next week (~June, 25th).
J
J
Jean-Baptiste Volatier wrote on 29 Jun 2021 15:22
[PATCH 0/4 v4] DRAFT gnu: julia: Update to 1.6.1
20210629132128.22249-1-jbv@pm.me
"zimoun" <zimon.toutoune@gmail.com> writes:

Toggle quote (6 lines)
> 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
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
J
J
Jean-Baptiste Volatier wrote on 29 Jun 2021 15:23
[PATCH 1/4] gnu: Add utf8proc-2.6.1.
20210629132128.22249-2-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(+)

Toggle diff (66 lines)
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
J
J
Jean-Baptiste Volatier wrote on 29 Jun 2021 15:23
[PATCH 2/4] gnu: Add pcre2-10.36.
(name . zimoun)(address . zimoun.toutoune@gmail.com)
20210629132128.22249-3-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(+)

Toggle diff (29 lines)
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
J
J
Jean-Baptiste Volatier wrote on 29 Jun 2021 15:23
[PATCH 3/4] gnu: openlibm: Update to 0.7.4.
20210629132128.22249-4-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(-)

Toggle diff (27 lines)
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
J
J
Jean-Baptiste Volatier wrote on 29 Jun 2021 15:23
[PATCH 4/4] DRAFT gnu: julia: Update to 1.6.1.
(name . Nicolò Balzarotti)(address . nicolo@nixo.xyz)
20210629132128.22249-5-jbv@pm.me
* 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(-)

Toggle diff (370 lines)
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_broke
This message was truncated. Download the full message here.
M
M
Maxime Devos wrote on 1 Jul 2021 10:18
Re: [bug#48325] [PATCH 1/4] gnu: Add utf8proc-2.6.1.
8938340ea306095f3e2a92ff7230de3ff3f255a0.camel@telenet.be
Jean-Baptiste Volatier via Guix-patches via schreef op di 29-06-2021 om 13:23 [+0000]:
Toggle quote (55 lines)
> * 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')

Toggle quote (10 lines)
> + '("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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYN16YxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7h3bAQDMJERrc87pFSLMAPrZnpIXbe/N
N6Y6C3+H8l6i2oBlfwD/Tq1LxoOgR9up9KQLvQz95sG2pWM3tqvf6G0KziWvBgA=
=AJ/h
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 1 Jul 2021 10:22
Re: [bug#48325] [PATCH 3/4] gnu: openlibm: Update to 0.7.4.
f7ba5c1c08fdfc4ab2635596eba98a2fd26ac2a5.camel@telenet.be
Toggle quote (5 lines)
> (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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYN17KxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7ln5AQCrIeGbXTSKKNl9kXlm4PkuRT7R
Zpi6YcMEf4mPzbyivAD9Hwx4QgvOt5dh9V0v+yPqfRAyXyFoZQP61w7DfFEa0QI=
=WC58
-----END PGP SIGNATURE-----


J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 0/5] DRAFT: Update julia to 1.6.1.
20210703174116.21259-1-jbv@pm.me
"Maxime Devos" <maximedevos@telenet.be> writes:

Toggle quote (3 lines)
> '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.

Toggle quote (4 lines)
> 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
J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 1/5] gnu: Add utf8proc-2.6.1.
20210703174116.21259-2-jbv@pm.me
* 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(-)

Toggle diff (79 lines)
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
J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 2/5] gnu: Add pcre2-10.36.
20210703174116.21259-3-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(+)

Toggle diff (29 lines)
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
J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 3/5] gnu: openlibm: Update to 0.7.4.
20210703174116.21259-4-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(-)

Toggle diff (27 lines)
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
J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 4/5] gnu: julia-staticarrays: Update to 1.2.5
20210703174116.21259-5-jbv@pm.me
* 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(-)

Toggle diff (22 lines)
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
J
J
Jean-Baptiste Volatier wrote on 3 Jul 2021 19:41
[PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
20210703174116.21259-6-jbv@pm.me
* 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(-)

Toggle diff (370 lines)
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_broke
This message was truncated. Download the full message here.
M
M
Maxime Devos wrote on 3 Jul 2021 21:40
ac3c7d1c040ff9080a2e00b3edbdd3b0f49c0086.camel@telenet.be
Jean-Baptiste Volatier schreef op za 03-07-2021 om 17:41 [+0000]:
Toggle quote (2 lines)
> + (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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYOC9ShccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7uh5AP9QFJQSl7QYl4lInLlTGoZltDRQ
UYliC715VBMVF5xRdwD+INeeOgdz+mzbEwEZDV5yw+YaewtSjL9MlIR6xJVaZQk=
=doN7
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 3 Jul 2021 21:54
fd19e1b28dfee4506c301688cbbdfcbc2983bfdb.camel@telenet.be
Jean-Baptiste Volatier schreef op za 03-07-2021 om 17:41 [+0000]:
Toggle quote (2 lines)
> + ("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
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYODAjBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7jKMAP97KEyXS3A/nu8j3KJKpOFy3ahK
sUP07ULOQg0NKq3ygAEApTLcaebdCtZedJH2aRZ+dbFt6qUeS9f4DN2HU2nIfw8=
=R1Ks
-----END PGP SIGNATURE-----


J
J
Jean-Baptiste Volatier wrote on 4 Jul 2021 09:17
(name . Maxime Devos)(address . maximedevos@telenet.be)
9d0tDLP4x8oun-VOAIzcWgjrLgXkEsiLMCobZ9prF4Y0ge5-x40r8_Mvz1bPnGKQKCEIykcfpM7WcONq4mKGOA==@pm.me
On Saturday, July 3rd, 2021 at 9:54 PM, Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (2 lines)
> 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:

Toggle quote (4 lines)
> 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.
M
M
Maxime Devos wrote on 4 Jul 2021 13:43
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)
10e05b9a7252fc746cf8fe0544b8dd96a8bd4e62.camel@telenet.be
Jean-Baptiste Volatier schreef op zo 04-07-2021 om 07:17 [+0000]:
Toggle quote (15 lines)
> 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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYOGe2xccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tJtAP9Xz2R4W3Sve+VqcDGNs0dwLHqd
+oPXsUjvotIp9/QhyQEA7gqH2EZHg2G7xq4tg2N5qKcvuqFogg95n23YvDuqqwA=
=I6HI
-----END PGP SIGNATURE-----


J
J
Jean-Baptiste Volatier wrote on 4 Jul 2021 19:47
(name . Maxime Devos)(address . maximedevos@telenet.be)
VIckxRTXPCGwOn4QoZR8dnjmZK7PsiUIEVEZoWET_3BBNrNk4BkWtWX8sxxpUA0ldzpYCPxWcvxnhvGEyW8PAg==@pm.me
On Sunday, July 4th, 2021 at 1:43 PM, Maxime Devos <maximedevos@telenet.be> wrote:

Toggle quote (5 lines)
> 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.

Toggle quote (2 lines)
> 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.

Toggle quote (4 lines)
> 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]


Cheers,
JB.
M
M
Maxime Devos wrote on 4 Jul 2021 23:01
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)
96fb2011367dd38b6ede1156f10b9129846cc31d.camel@telenet.be
Jean-Baptiste Volatier schreef op zo 04-07-2021 om 17:47 [+0000]:
Toggle quote (1 lines)
>
[...]
Toggle quote (7 lines)
> > 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.orgon 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.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYOIhkBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7oHnAQCWemMItfvpkCHfZ2tQT4NMM7AQ
2atyz/2hI4FpgMsGqAD+J6sbotP+Qp1SjNjCGWwKHWIMRGPpl9UhdXQK72GN/wU=
=LhyQ
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 9 Jul 2021 18:12
Re: [bug#48325] [PATCH v5 5/5] DRAFT gnu: julia: Update to 1.6.1.
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)
YOh1hbeeIaodgof3@3900XT
Attachment: file
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmDodYMACgkQQarn3Mo9
g1EYZxAAr0qItJlJruNspM8o40EmwWDA88dJ549pPkwGEUNdjra+MxDzu51l7kc/
6bSmmtgOsPAof8RleXCgSmu8BU3RnjoBODuvRk+3U/+HBZh5uzWw/wmPfXscvo/k
s8+MJ2ROxTujR1xQDRyrg/V04VkB9eyXSiCed4J6NqruAasnxQ46QByRck/uzC8k
kZuqIDoWJpFYerP9ktQUWJOMk6xEjFiqSJI9KYilwZqitZX6EKP+ZX08U53qaB/n
8sL084231hQsK+jUoMNQIH2DnPGsSqgnuDkM8hpQ98CukIAJvjT0gRA3ovRBvYhc
+yMOv+jgrhWgVazdmCavZdWs0R/g2PdDAxOrUhhxOP+iEyBqCBtkYpayu6iZxuG0
c8rOS54Eeqq7BZo6Bty1cgdwGuuvC6wFQ2m1wQOaybwOaYFtBrO4rfnhmXVdM+5f
tV0UfOL8GdJhcvyh86JlvwRxgMHs83ddEhtBwUrWewLYcsmYUu/duXhwO1QdlmJu
BjvZ9iiT8Yd3TCLrjKK+HXSfx2BfFPSaYu1xlhfmRiYPSsO1xbNG2fRYsBRW/QSU
1fQ3+yqYlKwQzNmL+AP6WwLvqLV/AqSIzwk78ayzuQmZIlnxKmHD5UbBTTs/E7mw
E33XTokQI4iFeiSUuxKPgIaf/VDf3UR6KTC5tCwB/6EW/WKSR8U=
=EE71
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 4 Aug 2021 10:07
Re: [bug#48325] update of julia to 1.6.1
(name . Jean-Baptiste Volatier)(address . jbv@pm.me)(address . 48325-done@debbugs.gnu.org)
YQpKxjP7RkQYyQ65@3900XT
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
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmEKSsYACgkQQarn3Mo9
g1F+Fw/+ODJ23q8vPnfkMfB4R9RQem2XgTKFiWUtRvcpoVvk/EKRPwnTzOJNuGQ0
8ay6PA5JoGODw3pdRm11B0i2ZzyC6e5k2dcUTdgphjrWOx2t1IPcJBsxvmncXW7I
JKp2wF3Uy7fzvS3zAHrsOteI3V2d6k3LMQvgtRAN9HEkEJ6OKow7TY1XWFQLEmez
xDWj1lsbeLawNejzl+8+s9fvG3Z6SOSdreXrOkIPGK12szqH/EqfyDLLqViGovpN
gzUCXBszbTVxuyT8rKfEJ34MT2Ion0froesdCOgoRG8WTQnUAmno7GRJ7AMA3YYM
0aGyDWlFABRtn1/ioJmImDs4JV/MwKqBBjD1bhWmSQmBSisoXg6xpajfiJU40Nic
1RXETzv1q/76pRp+T2kICtXv/MvvNo+oKoQUJwDirkx0oCNz/jrlMXYi2XLYsWVM
IxqWnEBtLWqVkYwLNxZFSiM1YSaU79O6DZwHMEWtepaRkmYzw2knyULKQRA/rKpn
nOAvaQhBtP9Dv3yPGA2mRQ/vTj2tFQmvxQf90aRJUOglpeOBsF2DHw9eUDQD+ZiK
vrH4Xs3xh9FBhCrnBdaSiwC6x8GdpOip/Y1Yfw/TyqWxqZyI9uXm0rajIFkrQn8W
tURjuf6IxZiaLKoU8zdy27S7d+g72LsC17gH6Ornxl8POiSDfiQ=
=MYYW
-----END PGP SIGNATURE-----


Closed
?