Update Julia to 1.3.1.

  • Done
  • quality assurance status badge
Details
5 participants
  • nixo
  • Efraim Flashner
  • Ludovic Courtès
  • Marius Bakke
  • zimoun
Owner
unassigned
Submitted by
nixo
Severity
normal
N
[PATCH 0/3] Julia: fix package build and add julia-xyz
(name . Guix Patches)(address . guix-patches@gnu.org)
87v9qpvbyr.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hello Guix!

Changes:

This set of patches improve the state of julia-build-system.

1. set path JULIA_LOAD_PATH to enable installing packages, and
JULIA_DEPOT_PATH to allow guix-precompiled cache to be recognized by julia. To
do this, a small "hack" with libfaketime was required (julia decides if the
cache is valid by comparing source ".jl" mtime with cache ".ji" file, in which
julia stores a timestamp. We need to force this timestamp to be equal to the
mtime of guix-store files).
2. Enable package tests
3. Add a first package (julia-compat) definition. If this is fine, I'll start
pushing many many more (I have them ready, but I need to update many of them)



Thanks! :)

One note: with this PATH changes, julia will not be able to find packages
installed by Julia Pkg3.jl anymore. This is expected (it should happen for R,
python, emacs... too) but since we still need to merge the packages, this
patch renders julia pretty unusable. The workaround is for users to add to
JULIA_LOAD_PATH and JULIA_LOAD_PATH local user-writable folders, activate a
profile, and then install packages manually:

#+begin_src bash
JULIA_LOAD_PATH=/tmp/julia:$JULIA_LOAD_PATH JULIA_DEPOT_PATH=/tmp/julia:$JULIA_DEPOT_PATH julia
#+end_src

nixo (3):
gnu: julia: Set to JULIA_LOAD_PATH and JULIA_DEPOT_PATH variables.
gnu: julia-build-system: Enable tests.
gnu: julia-xyz: Add julia-compat.

#+begin_src julia
using Pkg
Pkg.activate("/tmp/julia")
Pkg.add("PACKAGE_NAME")
#+end_src

--
2.24.0

gnu/packages/julia-xyz.scm | 62 +++++++++++++
gnu/packages/julia.scm | 146 +++++++++++++++---------------
guix/build-system/julia.scm | 4 +-
guix/build/julia-build-system.scm | 28 ++++--
4 files changed, 159 insertions(+), 81 deletions(-)
create mode 100644 gnu/packages/julia-xyz.scm
N
N
Nicolò Balzarotti wrote on 10 Oct 2019 17:49
[PATCH 1/3] gnu: julia: Set to JULIA_LOAD_PATH and JULIA_DEPOT_PATH variables.
(name . Guix Patches)(address . 38546@debbugs.gnu.org)
87tv69vbt6.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
gnu/packages/julia.scm | 146 +++++++++++++++++++++--------------------
1 file changed, 75 insertions(+), 71 deletions(-)

Toggle diff (185 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 65a5e42beb..2516e7fa82 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -158,7 +158,7 @@
(define-public julia
(package
(name "julia")
- (version "1.1.1")
+ (version "1.1.1") ;; Update also JULIA_LOAD_PATH with it
(source (origin
(method url-fetch)
(uri (string-append
@@ -229,77 +229,77 @@
;; Some tests require a home directory to be set.
(lambda _ (setenv "HOME" "/tmp") #t))
(add-after 'unpack 'hardcode-soname-map
- ;; ./src/runtime_ccall.cpp creates a map from library names to paths
- ;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
- ;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
- (lambda* (#:key inputs #:allow-other-keys)
- (use-modules (ice-9 match))
- (substitute* "src/runtime_ccall.cpp"
- ;; Patch out invocations of '/sbin/ldconfig' to avoid getting
- ;; error messages about missing '/sbin/ldconfig' on Guix System.
- (("popen\\(.*ldconfig.*\\);")
- "NULL;\n")
+ ;; ./src/runtime_ccall.cpp creates a map from library names to paths
+ ;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
+ ;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (use-modules (ice-9 match))
+ (substitute* "src/runtime_ccall.cpp"
+ ;; Patch out invocations of '/sbin/ldconfig' to avoid getting
+ ;; error messages about missing '/sbin/ldconfig' on Guix System.
+ (("popen\\(.*ldconfig.*\\);")
+ "NULL;\n")
- ;; Populate 'sonameMap'.
- (("jl_read_sonames.*;")
- (string-join
- (map (match-lambda
- ((input libname soname)
- (string-append
- "sonameMap[\"" libname "\"] = "
- "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
- '(("libc" "libc" "libc.so.6")
- ("pcre2" "libpcre2-8" "libpcre2-8.so")
- ("mpfr" "libmpfr" "libmpfr.so")
- ("openblas" "libblas" "libopenblas.so")
- ("arpack-ng" "libarpack" "libarpack.so")
- ("lapack" "liblapack" "liblapack.so")
- ("libgit2" "libgit2" "libgit2.so")
- ("gmp" "libgmp" "libgmp.so")
- ("openspecfun" "libopenspecfun" "libopenspecfun.so")
- ("fftw" "libfftw3" "libfftw3_threads.so")
- ("fftwf" "libfftw3f" "libfftw3f_threads.so"))))))
- (substitute* "base/math.jl"
- (("const libm = Base.libm_name")
- (string-append "const libm = \""
- (assoc-ref inputs "openlibm")
- "/lib/libopenlibm.so"
- "\""))
- (("const openspecfun = \"libopenspecfun\"")
- (string-append "const openspecfun = \""
- (assoc-ref inputs "openspecfun")
- "/lib/libopenspecfun.so"
- "\"")))
- #t))
+ ;; Populate 'sonameMap'.
+ (("jl_read_sonames.*;")
+ (string-join
+ (map (match-lambda
+ ((input libname soname)
+ (string-append
+ "sonameMap[\"" libname "\"] = "
+ "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
+ '(("libc" "libc" "libc.so.6")
+ ("pcre2" "libpcre2-8" "libpcre2-8.so")
+ ("mpfr" "libmpfr" "libmpfr.so")
+ ("openblas" "libblas" "libopenblas.so")
+ ("arpack-ng" "libarpack" "libarpack.so")
+ ("lapack" "liblapack" "liblapack.so")
+ ("libgit2" "libgit2" "libgit2.so")
+ ("gmp" "libgmp" "libgmp.so")
+ ("openspecfun" "libopenspecfun" "libopenspecfun.so")
+ ("fftw" "libfftw3" "libfftw3_threads.so")
+ ("fftwf" "libfftw3f" "libfftw3f_threads.so"))))))
+ (substitute* "base/math.jl"
+ (("const libm = Base.libm_name")
+ (string-append "const libm = \""
+ (assoc-ref inputs "openlibm")
+ "/lib/libopenlibm.so"
+ "\""))
+ (("const openspecfun = \"libopenspecfun\"")
+ (string-append "const openspecfun = \""
+ (assoc-ref inputs "openspecfun")
+ "/lib/libopenspecfun.so"
+ "\"")))
+ #t))
(add-before 'build 'fix-include-and-link-paths
- (lambda* (#:key inputs #:allow-other-keys)
- ;; LIBUTF8PROC is a linker flag, not a build target. It is
- ;; included in the LIBFILES_* variable which is used as a
- ;; collection of build targets and a list of libraries to link
- ;; against.
- (substitute* "src/flisp/Makefile"
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
- "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
- "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; LIBUTF8PROC is a linker flag, not a build target. It is
+ ;; included in the LIBFILES_* variable which is used as a
+ ;; collection of build targets and a list of libraries to link
+ ;; against.
+ (substitute* "src/flisp/Makefile"
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
+ "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
+ "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
- ;; The REPL must be linked with libuv.
- (substitute* "ui/Makefile"
- (("JLDFLAGS \\+= ")
- (string-append "JLDFLAGS += "
- (assoc-ref %build-inputs "libuv")
- "/lib/libuv.so ")))
+ ;; The REPL must be linked with libuv.
+ (substitute* "ui/Makefile"
+ (("JLDFLAGS \\+= ")
+ (string-append "JLDFLAGS += "
+ (assoc-ref %build-inputs "libuv")
+ "/lib/libuv.so ")))
- (substitute* "base/Makefile"
- (("\\$\\(build_includedir\\)/uv/errno.h")
- (string-append (assoc-ref inputs "libuv")
- "/include/uv/errno.h")))
- #t))
+ (substitute* "base/Makefile"
+ (("\\$\\(build_includedir\\)/uv/errno.h")
+ (string-append (assoc-ref inputs "libuv")
+ "/include/uv/errno.h")))
+ #t))
(add-before 'build 'replace-default-shell
- (lambda _
- (substitute* "base/client.jl"
- (("/bin/sh") (which "sh")))
- #t))
+ (lambda _
+ (substitute* "base/client.jl"
+ (("/bin/sh") (which "sh")))
+ #t))
(add-after 'unpack 'hardcode-paths
(lambda _
(substitute* "stdlib/InteractiveUtils/src/InteractiveUtils.jl"
@@ -345,9 +345,9 @@
;; platforms, e.g. when running "guix package --search="
(_ "MARCH=UNSUPPORTED"))
- "CONFIG_SHELL=bash" ;needed to build bundled libraries
- "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no
- ;build system for a shared library.
+ "CONFIG_SHELL=bash" ;needed to build bundled libraries
+ "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no
+ ;build system for a shared library.
"USE_SYSTEM_LAPACK=1"
"USE_SYSTEM_BLAS=1"
"USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
@@ -485,7 +485,11 @@
(native-search-paths
(list (search-path-specification
(variable "JULIA_LOAD_PATH")
- (files (list "share/julia/packages/")))))
+ (files (list "share/julia/packages/"
+ "share/julia/stdlib/v1.1/")))
+ (search-path-specification
+ (variable "JULIA_DEPOT_PATH")
+ (files (list "share/julia/")))))
;; Julia is not officially released for ARM and MIPS.
;; See https://github.com/JuliaLang/julia/issues/10639
(supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
--
2.24.0
N
N
Nicolò Balzarotti wrote on 10 Oct 2019 17:49
[PATCH 2/3] gnu: julia-build-system: Enable tests.
(name . Guix Patches)(address . 38546@debbugs.gnu.org)
87sgltvbs1.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
---
guix/build-system/julia.scm | 4 +++-
guix/build/julia-build-system.scm | 28 +++++++++++++++++++---------
2 files changed, 22 insertions(+), 10 deletions(-)

Toggle diff (84 lines)
diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm
index 488fe9bb1d..0c07484f12 100644
--- a/guix/build-system/julia.scm
+++ b/guix/build-system/julia.scm
@@ -26,6 +26,7 @@
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
+ #:use-module (gnu packages check) ;; libfaketime
#:export (%julia-build-system-modules
julia-build
julia-build-system))
@@ -68,6 +69,7 @@
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
(build-inputs `(("julia" ,julia)
+ ("libfaketime" ,libfaketime)
,@native-inputs))
(outputs outputs)
(build julia-build)
@@ -75,7 +77,7 @@
(define* (julia-build store name inputs
#:key source
- (tests? #f)
+ (tests? #t)
(phases '(@ (guix build julia-build-system)
%standard-phases))
(outputs '("out"))
diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
index ff6fcf5fe3..bd4c64fa11 100644
--- a/guix/build/julia-build-system.scm
+++ b/guix/build/julia-build-system.scm
@@ -32,7 +32,13 @@
;; Code:
(define (invoke-julia code)
- (invoke "julia" "-e" code))
+ ;; Julia stores the result of the time() call
+ ;; inside the precompiled file. When trying to load it, its precompilation
+ ;; it fails at comparing the file mtime with the precompilation time,
+ ;; always triggering a recompile. This fixes the stored value.
+ ;; Also, libc.jl rand() uses time() as its seed. This might introduce indeterminism while building
+ ;; Default guix mtime is 1, so I'm setting the same here (if they differ, precompilation is invalid)
+ (invoke "faketime" "-f" "1970-01-01 00:00:01" "julia" "-e" code))
;; subpath where we store the package content
(define %package-path "/share/julia/packages/")
@@ -78,13 +84,17 @@
(invoke-julia (string-append "using " package)))
#t)
-(define* (check #:key source inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (package (strip-store-file-name source))
- (builddir (string-append out "/share/julia/")))
- (setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
- (invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")")))
+(define* (check #:key tests? source inputs outputs #:allow-other-keys)
+ (when tests?
+ (let* ((out (assoc-ref outputs "out"))
+ (package (strip-store-file-name source))
+ (builddir (string-append out "/share/julia/")))
+ (setenv "JULIA_DEPOT_PATH" builddir)
+ (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (display builddir)
+ (invoke "julia" (string-append builddir
+ "packages/"
+ package "/test/runtests.jl"))))
#t)
(define (julia-create-package-toml outputs source
@@ -119,7 +129,7 @@ version = \"" version "\"
(delete 'check) ; tests must be run after installation
(replace 'install install)
(add-after 'install 'precompile precompile)
- ;; (add-after 'install 'check check)
+ (add-after 'install 'check check)
;; TODO: In the future we could add a "system-image-generation" phase
;; where we use PackageCompiler.jl to speed up package loading times
(delete 'configure)
--
2.24.0
N
N
Nicolò Balzarotti wrote on 10 Oct 2019 17:49
[PATCH 3/3] gnu: julia-xyz: Add julia-compat.
(name . Guix Patches)(address . 38546@debbugs.gnu.org)
87r21dvbrc.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm: New file.
* gnu/packages/julia-xyz.scm (julia-compat): New variable.
---
gnu/packages/julia-xyz.scm | 62 ++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100644 gnu/packages/julia-xyz.scm

Toggle diff (70 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
new file mode 100644
index 0000000000..85d4d696d9
--- /dev/null
+++ b/gnu/packages/julia-xyz.scm
@@ -0,0 +1,62 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages julia-xyz)
+ #:use-module (guix build-system julia)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (gnu packages algebra)
+ #:use-module (gnu packages base) ; binutils (packagecompiler)
+ #:use-module (gnu packages commencement)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages fonts)
+ #:use-module (gnu packages graphics)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages maths)
+ #:use-module (gnu packages statistics)
+ #:use-module (gnu packages video)
+ #:use-module (gnu packages web)
+ #:use-module (gnu packages xml)
+ #:use-module (gnu packages tls))
+
+(define-public julia-compat
+ (package
+ (name "julia-compat")
+ (version "3.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Compat.jl")
+ (commit (string-append "v" version))))
+ (file-name "Compat")
+ (sha256
+ (base32 "0n4gqk0b5fcf0d12gizjs7hsgakh7w7xgx2srbvzc5pkm5z469l4"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Compat.jl")
+ (synopsis "Compatibility across Julia versions")
+ (description "The Compat package is designed to ease interoperability
+between older and newer versions of the Julia language. The Compat package
+provides a macro that lets you use the latest syntax in a backwards-compatible
+way.")
+ (license license:expat)))
--
2.24.0
L
L
Ludovic Courtès wrote on 15 Dec 2019 22:40
Re: [bug#38546] [PATCH 0/3] Julia: fix package build and add julia-xyz
(name . nixo)(address . anothersms@gmail.com)(address . 38546@debbugs.gnu.org)
87fthls1xr.fsf@gnu.org
Hi!

nixo <anothersms@gmail.com> skribis:

Toggle quote (5 lines)
> This set of patches improve the state of julia-build-system.
>
> 1. set path JULIA_LOAD_PATH to enable installing packages, and
> JULIA_DEPOT_PATH to allow guix-precompiled cache to be recognized by julia. To

These two environment variables are supported upstream, right?

Toggle quote (5 lines)
> do this, a small "hack" with libfaketime was required (julia decides if the
> cache is valid by comparing source ".jl" mtime with cache ".ji" file, in which
> julia stores a timestamp. We need to force this timestamp to be equal to the
> mtime of guix-store files).

OK. This hack shouldn’t break “normal” Julia uses (outside of the
store), right?

Ludo’.
L
L
Ludovic Courtès wrote on 15 Dec 2019 22:43
Re: [bug#38546] [PATCH 1/3] gnu: julia: Set to JULIA_LOAD_PATH and JULIA_DEPOT_PATH variables.
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)(name . Guix Patches)(address . 38546@debbugs.gnu.org)
87bls9s1sb.fsf@gnu.org
Nicolò Balzarotti <anothersms@gmail.com> skribis:

Toggle quote (3 lines)
> gnu/packages/julia.scm | 146 +++++++++++++++++++++--------------------
> 1 file changed, 75 insertions(+), 71 deletions(-)

Please make sure to add a commit log listing all the entities changed.

Apparently there was some reindentation that makes this patch looks big
and makes the actual changes harder to spot. Could you resubmit it
without the reindentation?

Toggle quote (7 lines)
> (native-search-paths
> (list (search-path-specification
> (variable "JULIA_LOAD_PATH")
> - (files (list "share/julia/packages/")))))
> + (files (list "share/julia/packages/"
> + "share/julia/stdlib/v1.1/")))

Why is this extra entry needed? Doesn’t Julia find its own standard
library by default, even if JULIA_LOAD_PATH is unset?

Toggle quote (4 lines)
> + (search-path-specification
> + (variable "JULIA_DEPOT_PATH")
> + (files (list "share/julia/")))))

What’s JULIA_DEPOT_PATH supposed to point to again? ‘share/julia’ seems
to be very much a catch-all thing. :-)

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 15 Dec 2019 22:45
Re: [bug#38546] [PATCH 2/3] gnu: julia-build-system: Enable tests.
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)(name . Guix Patches)(address . 38546@debbugs.gnu.org)
877e2xs1ny.fsf@gnu.org
Nicolò Balzarotti <anothersms@gmail.com> skribis:

Toggle quote (5 lines)
> ---
> guix/build-system/julia.scm | 4 +++-
> guix/build/julia-build-system.scm | 28 +++++++++++++++++++---------
> 2 files changed, 22 insertions(+), 10 deletions(-)

With a commit log, please. :-)

Toggle quote (15 lines)
> --- a/guix/build/julia-build-system.scm
> +++ b/guix/build/julia-build-system.scm
> @@ -32,7 +32,13 @@
> ;; Code:
>
> (define (invoke-julia code)
> - (invoke "julia" "-e" code))
> + ;; Julia stores the result of the time() call
> + ;; inside the precompiled file. When trying to load it, its precompilation
> + ;; it fails at comparing the file mtime with the precompilation time,
> + ;; always triggering a recompile. This fixes the stored value.
> + ;; Also, libc.jl rand() uses time() as its seed. This might introduce indeterminism while building
> + ;; Default guix mtime is 1, so I'm setting the same here (if they differ, precompilation is invalid)
> + (invoke "faketime" "-f" "1970-01-01 00:00:01" "julia" "-e" code))

Do you think it would be feasible to modify Julia to emit this fixed
timestamp, or to honor SOURCE_DATE_EPOCH, instead of using ‘faketime’?

The reason I’m asking is that (1) ‘faketime’ relies on LD_PRELOAD and so
it could introduce its own set of issues, and (2) I wouldn’t be
surprised to find ready-to-use SOURCE_DATE_EPOCH patches from fellow
Reproducible Builders floating around. :-)

Ludo’.
L
L
Ludovic Courtès wrote on 15 Dec 2019 22:46
Re: [bug#38546] [PATCH 3/3] gnu: julia-xyz: Add julia-compat.
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)(name . Guix Patches)(address . 38546@debbugs.gnu.org)
8736dls1m7.fsf@gnu.org
Nicolò Balzarotti <anothersms@gmail.com> skribis:

Toggle quote (3 lines)
> * gnu/packages/julia-xyz.scm: New file.
> * gnu/packages/julia-xyz.scm (julia-compat): New variable.

The second line is unnecessary.

However, please make sure to add the file to ‘gnu/local.mk’.

Otherwise LGTM.

Thanks!

Ludo’.
N
N
Nicolò Balzarotti wrote on 18 Jan 2020 14:32
[Nicolò Balzarotti] [PATCH 00/11] Update julia to 1.3.1, fix precompilation, add HTTP.jl
(address . 38546@debbugs.gnu.org)
87sgkcvqiz.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Ok I had time to look at this again.

1. Package installation can be done both the julia way and the guix way
2. SOURCE_DATE_EPOCH is respected in package precompile timestamp. Other fixes are needed to get reproducible builds, but for now that means that package cache is used.
3. This patch adds some first julia package (HTTP.jl and dependencies)
4. Updated julia to 1.3.1 (latest release). It's working great and the
build recipe is simplified a lot. However, some test is failing. The
"interesting" part is that when running tests alone, they are working.
It seems like the problem arise when tests are run on the _same core_
and not on different cores. I opened a issue upstream for this
further on it, but for now if it's fine for me this is ready to be merged.

I'm sending the patch series here.

Thanks, Nicolò

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

Toggle quote (54 lines)
> Hi,
>
> (+Cc: bug report.)
>
> Nicolò Balzarotti <anothersms@gmail.com> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> writes:
>>
>>> Hi!
>>>
>>> nixo <anothersms@gmail.com> skribis:
>>>
>>>> This set of patches improve the state of julia-build-system.
>>>>
>>>> 1. set path JULIA_LOAD_PATH to enable installing packages, and
>>>> JULIA_DEPOT_PATH to allow guix-precompiled cache to be recognized by julia. To
>>>
>>> These two environment variables are supported upstream, right?
>>
>> Yes, those variables are documented here:
>> https://docs.julialang.org/en/v1/manual/environment-variables/index.html
>
> Great.
>
>> Should user be allowed to manually install packages in his own private
>> home folder manually? (I just tried with R: R recognize the store is RO
>> and ask for an alternative path). I'll try to allow "standard" package
>> installation and submit the patch again (also, I just read you other
>> comments, so I'll fix everything!)
>
> I think users should have the option to install packages in the normal
> Julia way, without Guix.
>
>>>> do this, a small "hack" with libfaketime was required (julia decides if the
>>>> cache is valid by comparing source ".jl" mtime with cache ".ji" file, in which
>>>> julia stores a timestamp. We need to force this timestamp to be equal to the
>>>> mtime of guix-store files).
>>>
>>> OK. This hack shouldn’t break “normal” Julia uses (outside of the
>>> store), right?
>> You are right, the issue is that julia finds its src (.jl) file to have
>> a different (although older) timestamp (because guix fixes the
>> mtime). This applies only to cache files placed in the store. Other
>> cache files (non-guix installed files) have the right timestamp, so are
>> not affected (I don't know if this explanation is clear. The TLDR is:
>> with this hack store works without double-precompilation, non-store
>> works normally, too).
>> However, I'll check if I can make it work with SOURCE_DATE_EPOCH. I
>> already read the code responsible for precompilation, so hopefully it
>> won't take too much time
>
> Awesome, thanks!
>
> Ludo’.
N
[PATCH 02/11] gnu: julia: use SOURCE_DATE_EPOCH for precompilation timestamp
(address . 38546@debbugs.gnu.org)
87o8v0vqfw.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch: new file
---
gnu/local.mk | 1 +
gnu/packages/julia.scm | 4 ++-
...ia-fake-mtime-with-SOURCE_DATE_EPOCH.patch | 29 +++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch

Toggle diff (64 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 00ff3b8d61..fe8634b44d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1010,6 +1010,7 @@ dist_patch_DATA = \
%D%/packages/patches/java-xerces-bootclasspath.patch \
%D%/packages/patches/java-xerces-build_dont_unzip.patch \
%D%/packages/patches/java-xerces-xjavac_taskdef.patch \
+ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/libvirt-create-machine-cgroup.patch \
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index e4db39afbd..a66309b611 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -191,7 +191,9 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))
+ (patches
+ (search-patches "julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
diff --git a/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
new file mode 100644
index 0000000000..467e6d68d1
--- /dev/null
+++ b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
@@ -0,0 +1,29 @@
+From e4dc28db1d70819505fd1a68fd9d2bfc4fb61a7d Mon Sep 17 00:00:00 2001
+From: nixo <nicolo@nixo.xyz>
+Date: Fri, 17 Jan 2020 11:28:30 +0100
+Subject: [PATCH] base: loading: support fake mtime with SOURCE_DATE_EPCOCH
+
+Do this when loading libraries
+---
+ base/loading.jl | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/base/loading.jl b/base/loading.jl
+index 7f11a2d4fc..1b4686d1dc 100644
+--- a/base/loading.jl
++++ b/base/loading.jl
+@@ -807,7 +807,10 @@ function _include_dependency(mod::Module, _path::AbstractString)
+ path = normpath(joinpath(dirname(prev), _path))
+ end
+ if _track_dependencies[]
+- push!(_require_dependencies, (mod, path, mtime(path)))
++ push!(_require_dependencies,
++ (mod, path,
++ haskey(ENV, "SOURCE_DATE_EPOCH") ?
++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+ end
+ return path, prev
+ end
+--
+2.24.1
+
--
2.24.1
N
[PATCH 03/11] gnu: julia: Adjust indentation.
(address . 38546@debbugs.gnu.org)
87muakvqfd.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia.scm (julia): Correct indentation, untabify
---
gnu/packages/julia.scm | 216 ++++++++++++++++++++---------------------
1 file changed, 108 insertions(+), 108 deletions(-)

Toggle diff (341 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index a66309b611..e1c4685227 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -51,14 +51,14 @@
(define (julia-patch-url version name)
(string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
- "/deps/patches/" name ".patch"))
+ "/deps/patches/" name ".patch"))
(define (julia-patch name sha)
(let ((version "1.3.1"))
(origin (method url-fetch)
- (uri (julia-patch-url version name))
- (sha256 (base32 sha))
- (file-name name))))
+ (uri (julia-patch-url version name))
+ (sha256 (base32 sha))
+ (file-name name))))
(define libuv-julia
(let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1"))
@@ -101,7 +101,7 @@
"1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
(patches
(list
- (julia-patch "libunwind-prefer-extbl"
+ (julia-patch "libunwind-prefer-extbl"
"0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
(julia-patch "libunwind-static-arm"
"1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
@@ -124,45 +124,45 @@
;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
(patches
(list
- (julia-patch "llvm-6.0-D44650"
- "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
- (julia-patch "llvm-6.0-DISABLE_ABI_CHECKS"
- "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
- (julia-patch "llvm-6.0-NVPTX-addrspaces"
- "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
- (julia-patch "llvm-6.0.0_D27296-libssp"
- "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
- (julia-patch "llvm-D27629-AArch64-large_model_6.0.1"
- "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
- (julia-patch "llvm-D34078-vectorize-fdiv"
- "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
- (julia-patch "llvm-D42262-jumpthreading-not-i1"
- "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
- (julia-patch "llvm-D44892-Perf-integration"
- "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
- (julia-patch "llvm-D46460"
- "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
- (julia-patch "llvm-D49832-SCEVPred"
- "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
- (julia-patch "llvm-D50010-VNCoercion-ni"
- "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
- (julia-patch "llvm-D50167-scev-umin"
- "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
- (julia-patch "llvm-OProfile-line-num"
- "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
- (julia-patch "llvm-PPC-addrspaces"
- "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
- (julia-patch "llvm-rL323946-LSRTy"
- "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
- (julia-patch "llvm-rL326967-aligned-load"
- "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
- (julia-patch "llvm-rL327898"
- "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))
+ (julia-patch "llvm-6.0-D44650"
+ "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
+ (julia-patch "llvm-6.0-DISABLE_ABI_CHECKS"
+ "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
+ (julia-patch "llvm-6.0-NVPTX-addrspaces"
+ "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
+ (julia-patch "llvm-6.0.0_D27296-libssp"
+ "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
+ (julia-patch "llvm-D27629-AArch64-large_model_6.0.1"
+ "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
+ (julia-patch "llvm-D34078-vectorize-fdiv"
+ "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
+ (julia-patch "llvm-D42262-jumpthreading-not-i1"
+ "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
+ (julia-patch "llvm-D44892-Perf-integration"
+ "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
+ (julia-patch "llvm-D46460"
+ "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
+ (julia-patch "llvm-D49832-SCEVPred"
+ "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
+ (julia-patch "llvm-D50010-VNCoercion-ni"
+ "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
+ (julia-patch "llvm-D50167-scev-umin"
+ "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
+ (julia-patch "llvm-OProfile-line-num"
+ "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
+ (julia-patch "llvm-PPC-addrspaces"
+ "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
+ (julia-patch "llvm-rL323946-LSRTy"
+ "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
+ (julia-patch "llvm-rL326967-aligned-load"
+ "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
+ (julia-patch "llvm-rL327898"
+ "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))
(arguments
(substitute-keyword-arguments (package-arguments llvm-6)
((#:configure-flags flags)
`(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so
- "-DCMAKE_BUILD_TYPE=Release"
+ "-DCMAKE_BUILD_TYPE=Release"
;; Build a native compiler and the NVPTX backend (NVIDIA) since
;; Julia insists on it, nothing more. This reduces build times and
@@ -170,15 +170,15 @@
,(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))
"-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=NVPTX"
- "-DLLVM_INSTALL_UTILS=ON"
- "-DLLVM_BUILD_TESTS=ON"
- "-DLLVM_ENABLE_FFI=ON"
- "-DLLVM_ENABLE_RTTI=ON"
+ "-DLLVM_INSTALL_UTILS=ON"
+ "-DLLVM_BUILD_TESTS=ON"
+ "-DLLVM_ENABLE_FFI=ON"
+ "-DLLVM_ENABLE_RTTI=ON"
;; "-DLLVM_HOST_TRIPLE=${stdenv.hostPlatform.config}"
;; "-DLLVM_DEFAULT_TARGET_TRIPLE=${stdenv.hostPlatform.config}"
- ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
- "-DLLVM_ENABLE_DUMP=ON"
- "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
+ ;; "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly"
+ "-DLLVM_ENABLE_DUMP=ON"
+ "-DLLVM_LINK_LLVM_DYLIB=ON"))))))
(define-public julia
(package
@@ -222,9 +222,9 @@
(string-append "deps/srccache/libwhich-"
"81e9723c0273d78493dc8c8ed570f68d9ce7e89e"
".tar.gz"))
- ;; needed by libwhich
- (setenv "LD_LIBRARY_PATH"
- (string-join (map (lambda (pkg)
+ ;; needed by libwhich
+ (setenv "LD_LIBRARY_PATH"
+ (string-join (map (lambda (pkg)
(string-append (assoc-ref inputs pkg)
"/lib"))
'("arpack-ng" "curl" "dsfmt"
@@ -234,7 +234,7 @@
"openblas" "openlibm" "pcre2"
"suitesparse"))
":"))
- #t))
+ #t))
;; FIXME: Building the documentation requires Julia packages that
;; would be downloaded from the Internet. We should build them in a
;; separate build phase.
@@ -250,40 +250,40 @@
;; Some tests require a home directory to be set.
(lambda _ (setenv "HOME" "/tmp") #t))
(add-after 'unpack 'hardcode-soname-map
- ;; ./src/runtime_ccall.cpp creates a map from library names to paths
- ;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
- ;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "base/math.jl"
- (("const libm = Base.libm_name")
- (string-append "const libm = \""
- (assoc-ref inputs "openlibm")
- "/lib/libopenlibm.so"
- "\"")))))
+ ;; ./src/runtime_ccall.cpp creates a map from library names to paths
+ ;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
+ ;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "base/math.jl"
+ (("const libm = Base.libm_name")
+ (string-append "const libm = \""
+ (assoc-ref inputs "openlibm")
+ "/lib/libopenlibm.so"
+ "\"")))))
(add-before 'build 'fix-include-and-link-paths
- (lambda* (#:key inputs #:allow-other-keys)
- ;; LIBUTF8PROC is a linker flag, not a build target. It is
- ;; included in the LIBFILES_* variable which is used as a
- ;; collection of build targets and a list of libraries to link
- ;; against.
- (substitute* "src/flisp/Makefile"
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; LIBUTF8PROC is a linker flag, not a build target. It is
+ ;; included in the LIBFILES_* variable which is used as a
+ ;; collection of build targets and a list of libraries to link
+ ;; against.
+ (substitute* "src/flisp/Makefile"
(("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
"$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
(("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
"$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
- ;; The REPL must be linked with libuv.
- (substitute* "ui/Makefile"
- (("JLDFLAGS \\+= ")
- (string-append "JLDFLAGS += "
- (assoc-ref %build-inputs "libuv")
- "/lib/libuv.so ")))
+ ;; The REPL must be linked with libuv.
+ (substitute* "ui/Makefile"
+ (("JLDFLAGS \\+= ")
+ (string-append "JLDFLAGS += "
+ (assoc-ref %build-inputs "libuv")
+ "/lib/libuv.so ")))
- (substitute* "base/Makefile"
- (("\\$\\(build_includedir\\)/uv/errno.h")
- (string-append (assoc-ref inputs "libuv")
- "/include/uv/errno.h")))
- #t))
+ (substitute* "base/Makefile"
+ (("\\$\\(build_includedir\\)/uv/errno.h")
+ (string-append (assoc-ref inputs "libuv")
+ "/include/uv/errno.h")))
+ #t))
(add-before 'build 'replace-default-shell
(lambda _
(substitute* "base/client.jl"
@@ -307,7 +307,7 @@
;; https://github.com/JuliaLang/julia/issues/32377
(substitute* "stdlib/REPL/test/replcompletions.jl"
(("@test count") "@test_broken count"))
- #t)))
+ #t)))
#:make-flags
(list
(string-append "prefix=" (assoc-ref %outputs "out"))
@@ -331,7 +331,7 @@
"USE_SYSTEM_P7ZIP=1"
"USE_SYSTEM_LAPACK=1"
"USE_SYSTEM_BLAS=1"
- "USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
+ "USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
"LIBBLAS=-lopenblas"
"LIBBLASNAME=libopenblas"
@@ -339,35 +339,35 @@
(string-append "SUITESPARSE_INC=-I "
(assoc-ref %build-inputs "suitesparse")
"/include")
- "USE_GPL_LIBS=1" ;proudly
+ "USE_GPL_LIBS=1" ;proudly
"USE_SYSTEM_UTF8PROC=1"
(string-append "UTF8PROC_INC="
(assoc-ref %build-inputs "utf8proc")
"/include")
"USE_SYSTEM_LLVM=1"
- "LLVM_VER=6.0.1"
+ "LLVM_VER=6.0.1"
- "USE_LLVM_SHLIB=1"
- "USE_SYSTEM_LIBUNWIND=1"
- "USE_SYSTEM_LIBUV=1"
- (string-append "LIBUV="
- (assoc-ref %build-inputs "libuv")
- "/lib/libuv.so")
- (string-append "LIBUV_INC="
- (assoc-ref %build-inputs "libuv")
- "/include")
- "USE_SYSTEM_PATCHELF=1"
- "USE_SYSTEM_PCRE=1"
- "USE_SYSTEM_OPENLIBM=1"
+ "USE_LLVM_SHLIB=1"
+ "USE_SYSTEM_LIBUNWIND=1"
+ "USE_SYSTEM_LIBUV=1"
+ (string-append "LIBUV="
+ (assoc-ref %build-inputs "libuv")
+ "/lib/libuv.so")
+ (string-append "LIBUV_INC="
+ (assoc-ref %build-inputs "libuv")
+ "/include")
+ "USE_SYSTEM_PATCHELF=1"
+ "USE_SYSTEM_PCRE=1"
+ "USE_SYSTEM_OPENLIBM=1"
"USE_SYSTEM_LIBM=0"
"USE_SYSTEM_LIBSSH2=1"
"USE_SYSTEM_CURL=1"
- "USE_SYSTEM_GMP=1"
- "USE_SYSTEM_MPFR=1"
- "USE_SYSTEM_MBEDTLS=1"
- "USE_SYSTEM_ARPACK=1"
- "USE_SYSTEM_LIBGIT2=1"
- "USE_SYSTEM_ZLIB=1")))
+ "USE_SYSTEM_GMP=1"
+ "USE_SYSTEM_MPFR=1"
+ "USE_SYSTEM_MBEDTLS=1"
+ "USE_SYSTEM_ARPACK=1"
+ "USE_SYSTEM_LIBGIT2=1"
+ "USE_SYSTEM_ZLIB=1")))
(inputs
`(("llvm" ,llvm-julia)
@@ -377,9 +377,9 @@
;; <https://bugs.gnu.org/30282>.
("arpack-ng" ,arpack-ng-3.3.0)
- ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
+ ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
("lapack" ,lapack)
- ("openblas" ,openblas) ;Julia does not build with Atlas
+ ("openblas" ,openblas) ;Julia does not build with Atlas
("libunwind" ,libunwind-julia)
("openlibm" ,openlibm)
("mbedtls" ,mbedtls-apache)
@@ -411,20 +411,20 @@
(base32
"0wp6ld9vk11f4nnkn56627zmlv9k5vafi99qa3yyn1pgcd61zcfs"))))
("libwhich"
- ,(let ((commit "81e9723c0273d78493dc8c8ed570f68d9ce7e89e"))
+ ,(let ((commit "81e9723c0273d78493dc8c8ed570f68d9ce7e89e"))
(origin
;; Note: We use a /tarball URL, but that's because Julia's build
;; system checks the hash of that tarball; thus we can't use
;; 'git-fetch'.
- (method url-fetch)
- (uri (string-append
+ (method url-fetch)
+ (uri (string-append
"https://api.github.com/repos/vtjnash/libwhich/tarball/"
commit))
(file-name (string-append "libwhich-" (string-take commit 7)
".tar.gz"))
- (sha256
- (base32
- "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b")))))
+ (sha256
+ (base32
+ "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b")))))
("dsfmt" ,dsfmt)))
(native-inputs
`(("openssl" ,openssl)
--
2.24.1
N
[PATCH 04/11] use wrapper to set JULIA_LOAD_PATH and JULIA_DEPOT_PATH
(address . 38546@debbugs.gnu.org)
87lfq4vqev.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
---
gnu/packages/julia.scm | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)

Toggle diff (55 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index e1c4685227..39c7d6d34f 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -297,7 +297,9 @@
;; 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\",\"client\",\"stacktraces\"]),testnames)"))
+ "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\",\"client\",
+ \"stacktraces\",\"stress\",\"precompile\"]),
+ testnames)"))
;; When HOME is not set, julia calls uv_os_homedir, which in
;; turns call getpwuid_r. Add the HOME env variable to the
;; external julia call to fix this
@@ -307,11 +309,23 @@
;; https://github.com/JuliaLang/julia/issues/32377
(substitute* "stdlib/REPL/test/replcompletions.jl"
(("@test count") "@test_broken count"))
- #t)))
+ #t))
+ (add-after 'install 'make-wrapper
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (program "julia"))
+ (with-directory-excursion bin
+ (wrap-program program
+ `("JULIA_LOAD_PATH" ":" prefix
+ ("" "$JULIA_LOAD_PATH")))
+ (wrap-program program
+ `("JULIA_DEPOT_PATH" ":" prefix
+ ("" "$JULIA_DEPOT_PATH"))))
+ #t))))
#:make-flags
(list
(string-append "prefix=" (assoc-ref %outputs "out"))
- (string-append "PREFIX=" (assoc-ref %outputs "out"))
;; Passing the MARCH flag is necessary to build binary substitutes for
;; the supported architectures.
@@ -435,7 +449,10 @@
(native-search-paths
(list (search-path-specification
(variable "JULIA_LOAD_PATH")
- (files (list "share/julia/packages/")))))
+ (files (list "share/julia/packages/")))
+ (search-path-specification
+ (variable "JULIA_DEPOT_PATH")
+ (files (list "share/julia/")))))
;; Julia is not officially released for ARM and MIPS.
;; See https://github.com/JuliaLang/julia/issues/10639
(supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
--
2.24.1
N
[PATCH 05/11] gnu: build: julia-build-system: fix package
(address . 38546@debbugs.gnu.org)
87k15ovqeq.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
precompilation

---
guix/build/julia-build-system.scm | 51 +++++++++++++------------------
1 file changed, 22 insertions(+), 29 deletions(-)

Toggle diff (88 lines)
diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
index ff6fcf5fe3..dbd4af623d 100644
--- a/guix/build/julia-build-system.scm
+++ b/guix/build/julia-build-system.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2019, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,53 +37,46 @@
;; subpath where we store the package content
(define %package-path "/share/julia/packages/")
-(define (generate-load-path inputs outputs)
- (string-append
- (string-join (map (match-lambda
- ((_ . path)
- (string-append path %package-path)))
- ;; Restrict to inputs beginning with "julia-".
- (filter (match-lambda
- ((name . _)
- (string-prefix? "julia-" name)))
- inputs))
- ":")
- (string-append ":" (assoc-ref outputs "out") %package-path)
- ;; stdlib is always required to find Julia's standard libraries.
- ;; usually there are other two paths in this variable:
- ;; "@" and "@v#.#"
- ":@stdlib"))
-
(define* (install #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package-dir (string-append out %package-path
- (string-append
- (strip-store-file-name source)))))
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (strip-store-file-name source))))
(mkdir-p package-dir)
- (copy-recursively source package-dir))
+ (copy-recursively (getcwd) package-dir))
#t)
-;; TODO: Precompilation is working, but I don't know how to tell
-;; julia to use use it. If (on rantime) we set HOME to
-;; store path, julia tries to write files there (failing)
(define* (precompile #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(builddir (string-append out "/share/julia/"))
(package (strip-store-file-name source)))
(mkdir-p builddir)
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
- ;; Actual precompilation
- (invoke-julia (string-append "using " package)))
+ ;; add new package dir to the load path
+ (setenv "JULIA_LOAD_PATH"
+ (string-append builddir "packages/" ":"
+ (or (getenv "JULIA_LOAD_PATH")
+ "")))
+ ;; Actual precompilation.
+ (invoke-julia
+ ;; when using julia as a user, julia writes precompile cache to the first
+ ;; entry of the DEPOT_PATH list (by default, the home dir). We want to
+ ;; write it to the store, so let's push the store path as the first
+ ;; element of DEPOT_PATH. Once the cache file exists, this hack is not
+ ;; needed anymore (like in the check phase). If the user install new
+ ;; pacakges, those will be installed and precompiled in the home dir
+ (string-append "pushfirst!(DEPOT_PATH, pop!(DEPOT_PATH)); using " package)))
#t)
(define* (check #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package (strip-store-file-name source))
(builddir (string-append out "/share/julia/")))
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (setenv "JULIA_LOAD_PATH" (string-append builddir "packages/"))
(invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")")))
#t)
--
2.24.1
N
[PATCH 06/11] gnu: Add julia-compat.
(address . 38546@debbugs.gnu.org)
87iml8vqen.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm: New file
* gnu/packages/julia-xyz.scm (julia-compat): New variable
---
gnu/local.mk | 1 +
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 gnu/packages/julia-xyz.scm

Toggle diff (47 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index fe8634b44d..e07229ee20 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -277,6 +277,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
+ %D%/packages/julia-xyz.scm \
%D%/packages/jupyter.scm \
%D%/packages/kawa.scm \
%D%/packages/kde.scm \
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
new file mode 100644
index 0000000000..7d9faa63e9
--- /dev/null
+++ b/gnu/packages/julia-xyz.scm
@@ -0,0 +1,27 @@
+(define-module (gnu packages julia-xyz)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system julia))
+
+(define-public julia-compat
+ (package
+ (name "julia-compat")
+ (version "3.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Compat.jl")
+ (commit (string-append "v" version))))
+ (file-name "Compat")
+ (sha256
+ (base32 "0d21h3l2ry2mmlhpg7b9cxifayzwcv7r13h5wydcbd5pjf6k4qd4"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Compat.jl")
+ (synopsis "Compatibility across Julia versions")
+ (description "The Compat package is designed to ease interoperability
+between older and newer versions of the Julia language. The Compat package
+provides a macro that lets you use the latest syntax in a backwards-compatible
+way.")
+ (license license:expat)))
--
2.24.1
N
[PATCH 07/11] gnu: Add julia-inifile.
(address . 38546@debbugs.gnu.org)
87h80svqej.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm (julia-inifile): New variable.
---
gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (30 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 7d9faa63e9..6b8053e5f8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -25,3 +25,23 @@ between older and newer versions of the Julia language. The Compat package
provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+
+(define-public julia-inifile
+ (package
+ (name "julia-inifile")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/IniFile.jl")
+ (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0")))
+ (file-name "IniFile")
+ (sha256
+ (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaIO/IniFile.jl")
+ (synopsis "Reading Windows-style INI files")
+ (description "This is a julia package that defines an IniFile type that
+allows to interface with @file{.ini} files")
+ (license license:expat)))
--
2.24.1
N
[PATCH 08/11] gnu: Add julia-sha.
(address . 38546@debbugs.gnu.org)
87ftgcvqee.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm (julia-sha): New variable.
---
gnu/packages/julia-xyz.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 6b8053e5f8..92ffde58e7 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -45,3 +45,26 @@ way.")
(description "This is a julia package that defines an IniFile type that
allows to interface with @file{.ini} files")
(license license:expat)))
+
+(define-public julia-sha
+ (package
+ (name "julia-sha")
+ (version "0.5.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/staticfloat/SHA.jl")
+ (commit (string-append "v" version))))
+ (file-name "SHA")
+ (sha256
+ (base32 "10a09kg9z0m8rvwmlgsna6p342kyvizx2axdqc6pzyhraddr8jrp"))))
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/staticfloat/SHA.jl")
+ (synopsis
+ "Performant, 100% native-julia SHA1, SHA2, and SHA3 implementation")
+ (description "Julia package implementing SHA algorithms. Each exported
+function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
+@code{IO} object.")
+ (license license:expat)))
--
2.24.1
N
[PATCH 09/11] gnu: Add julia-binaryprovider.
(address . 38546@debbugs.gnu.org)
87eevwvqec.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm (julia-binaryprovider): New variable.
---
gnu/packages/julia-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 92ffde58e7..0f8e04b4d1 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -68,3 +68,36 @@ allows to interface with @file{.ini} files")
function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
@code{IO} object.")
(license license:expat)))
+
+(define-public julia-binaryprovider
+ (package
+ (name "julia-binaryprovider")
+ (version "0.5.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (commit (string-append "v" version))))
+ (file-name "BinaryProvider")
+ (sha256
+ (base32 "174jmg4w8ncgfhdvfnm0p4cnlayw31j4s9sksqlwz1sipywqvww7"))))
+ (propagated-inputs `(("julia-sha" ,julia-sha)))
+ ;; We don't really need BinaryProvider (as guix provides the binaries) but
+ ;; since it's a dependency of other packages we want to precompile it.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-engine-probe
+ (lambda _
+ (substitute* "src/BinaryProvider.jl"
+ ;; Precompilation tries to download things from the internet,
+ ;; disable the download part
+ (("probe_platform_engines") "# probe_platform_engines"))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (synopsis "Reliable Binary provider for Julia")
+ (description "@code{BinaryProvider.jl} simplifies the installation of
+binaries required by julia packages.")
+ (license license:expat)))
--
2.24.1
N
[PATCH 10/11] gnu: Add julia-mbedtls.
(address . 38546@debbugs.gnu.org)
87d0bgvqe9.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm (julia-mbedtls): New variable.
---
gnu/packages/julia-xyz.scm | 49 +++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0f8e04b4d1..3e9f532697 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -2,7 +2,8 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix git-download)
- #:use-module (guix build-system julia))
+ #:use-module (guix build-system julia)
+ #:use-module (gnu packages tls))
(define-public julia-compat
(package
@@ -101,3 +102,49 @@ function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
(description "@code{BinaryProvider.jl} simplifies the installation of
binaries required by julia packages.")
(license license:expat)))
+
+(define-public julia-mbedtls
+ (package
+ (name "julia-mbedtls")
+ (version "0.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/MbedTLS.jl")
+ (commit (string-append "v" version))))
+ (file-name "MbedTLS")
+ (sha256
+ (base32 "1a8snw9gi21lm6r3kh6ly7ngi99s9k5shqkfiizj3g9li20q23h2"))))
+ (propagated-inputs
+ `(("julia-binaryprovider" ,julia-binaryprovider)
+ ("mbedtls-apache" ,mbedtls-apache)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'precompile 'build-deps
+ (lambda* (#:key outputs source inputs #:allow-other-keys)
+ (let ((f (open-file
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/julia/packages/"
+ (string-append
+ (strip-store-file-name source) "/deps/deps.jl"))
+ "w")))
+ (display (string-append "const libmbedcrypto = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedcrypto.so\"\n") f)
+ (display (string-append "const libmbedtls = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedtls.so\"\n") f)
+ (display (string-append "const libmbedx509 = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedx509.so\"\n") f)
+ (close-port f))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/MbedTLS.jl")
+ (synopsis "Apache's mbed TLS library wrapper")
+ (description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
+cryptography C libary for Julia.")
+ (license license:expat)))
--
2.24.1
N
[PATCH 11/11] gnu: Add julia-http.
(address . 38546@debbugs.gnu.org)
87blr0vqe7.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia-xyz.scm (julia-http): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 3e9f532697..ff1bb483f9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -148,3 +148,27 @@ binaries required by julia packages.")
(description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
cryptography C libary for Julia.")
(license license:expat)))
+
+(define-public julia-http
+ (package
+ (name "julia-http")
+ (version "0.8.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/HTTP.jl")
+ (commit (string-append "v" version))))
+ (file-name "HTTP")
+ (sha256
+ (base32 "0928fvncfp07i5hvqxjyj8i27xmxxllas1m5idqq2i8h7jshzq3y"))))
+ (propagated-inputs
+ `(("julia-inifile" ,julia-inifile)
+ ("julia-mbedtls" ,julia-mbedtls)
+ ("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://juliaweb.github.io/HTTP.jl/")
+ (synopsis "HTTP support for Julia")
+ (description "@code{HTTP.jl} is a Julia library for HTTP Messages,
+implementing both a client and a server.")
+ (license license:expat)))
--
2.24.1
N
N
Nicolò Balzarotti wrote on 18 Jan 2020 14:36
[nixo] [PATCH 01/11] gnu: julia: Update to 1.3.1.
(address . 38546@debbugs.gnu.org)
878sm4vqc7.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia.scm (julia): Update to 1.3.1.
* gnu/packages/julia.scm (libuv-julia): Update to 2.0.0.
---
gnu/packages/julia.scm | 278 +++++++++++++++++------------------------
1 file changed, 113 insertions(+), 165 deletions(-)

Toggle diff (438 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 65a5e42beb..e4db39afbd 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages elf)
#:use-module (gnu packages gcc)
#:use-module (gnu packages llvm)
@@ -43,18 +45,30 @@
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages wget)
#:use-module (ice-9 match))
+(define (julia-patch-url version name)
+ (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
+ "/deps/patches/" name ".patch"))
+
+(define (julia-patch name sha)
+ (let ((version "1.3.1"))
+ (origin (method url-fetch)
+ (uri (julia-patch-url version name))
+ (sha256 (base32 sha))
+ (file-name name))))
+
(define libuv-julia
- (let ((commit "26dbe5672c33fc885462c509fe2a9b36f35866fd")
- (revision "6"))
+ (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1"))
;; When upgrading Julia, also upgrade this.
- ;; Get the commit from https://github.com/JuliaLang/julia/blob/v1.1.1/deps/libuv.version
+ ;; Get the commit from
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.1/deps/libuv.version
(package
(inherit libuv)
(name "libuv-julia")
- (version (string-append "1.9.0-" revision "." (string-take commit 8)))
+ (version (string-append "2.0.0" "." (string-take commit 8)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -63,7 +77,7 @@
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "17pn2xmqaramilx897s9grs966i5246gi6sric5alch4g9j4685n"))))
+ "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))))
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments libuv)
@@ -72,16 +86,27 @@
(delete 'autogen)))))
(home-page "https://github.com/JuliaLang/libuv"))))
-(define (llvm-patch-url version name)
- (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
- "/deps/patches/" name))
-
-(define (llvm-patch name sha)
- (let ((version "1.1.1"))
- (origin (method url-fetch)
- (uri (llvm-patch-url version name))
- (sha256 (base32 sha))
- (file-name name))))
+(define libunwind-julia
+ ;; julia requires a patched version
+ (package
+ (inherit libunwind)
+ (name "libunwind-julia")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/libunwind/libunwind-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
+ (patches
+ (list
+ (julia-patch "libunwind-prefer-extbl"
+ "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
+ (julia-patch "libunwind-static-arm"
+ "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+ (build-system gnu-build-system)
+ (home-page "https://github.com/JuliaLang/libuv")))
(define llvm-julia
(package
@@ -99,39 +124,39 @@
;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
(patches
(list
- (llvm-patch "llvm-6.0-D44650.patch"
+ (julia-patch "llvm-6.0-D44650"
"1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
- (llvm-patch "llvm-6.0-DISABLE_ABI_CHECKS.patch"
+ (julia-patch "llvm-6.0-DISABLE_ABI_CHECKS"
"014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
- (llvm-patch "llvm-6.0-NVPTX-addrspaces.patch"
+ (julia-patch "llvm-6.0-NVPTX-addrspaces"
"1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
- (llvm-patch "llvm-6.0.0_D27296-libssp.patch"
+ (julia-patch "llvm-6.0.0_D27296-libssp"
"0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
- (llvm-patch "llvm-D27629-AArch64-large_model_6.0.1.patch"
+ (julia-patch "llvm-D27629-AArch64-large_model_6.0.1"
"1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
- (llvm-patch "llvm-D34078-vectorize-fdiv.patch"
+ (julia-patch "llvm-D34078-vectorize-fdiv"
"1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
- (llvm-patch "llvm-D42262-jumpthreading-not-i1.patch"
+ (julia-patch "llvm-D42262-jumpthreading-not-i1"
"1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
- (llvm-patch "llvm-D44892-Perf-integration.patch"
+ (julia-patch "llvm-D44892-Perf-integration"
"0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
- (llvm-patch "llvm-D46460.patch"
+ (julia-patch "llvm-D46460"
"1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
- (llvm-patch "llvm-D49832-SCEVPred.patch"
+ (julia-patch "llvm-D49832-SCEVPred"
"0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
- (llvm-patch "llvm-D50010-VNCoercion-ni.patch"
+ (julia-patch "llvm-D50010-VNCoercion-ni"
"0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
- (llvm-patch "llvm-D50167-scev-umin.patch"
+ (julia-patch "llvm-D50167-scev-umin"
"1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
- (llvm-patch "llvm-OProfile-line-num.patch"
+ (julia-patch "llvm-OProfile-line-num"
"1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
- (llvm-patch "llvm-PPC-addrspaces.patch"
+ (julia-patch "llvm-PPC-addrspaces"
"1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
- (llvm-patch "llvm-rL323946-LSRTy.patch"
+ (julia-patch "llvm-rL323946-LSRTy"
"10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
- (llvm-patch "llvm-rL326967-aligned-load.patch"
+ (julia-patch "llvm-rL326967-aligned-load"
"04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
- (llvm-patch "llvm-rL327898.patch"
+ (julia-patch "llvm-rL327898"
"15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))
(arguments
(substitute-keyword-arguments (package-arguments llvm-6)
@@ -158,7 +183,7 @@
(define-public julia
(package
(name "julia")
- (version "1.1.1")
+ (version "1.3.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -166,7 +191,7 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "0hk983mywimclgnjc41zmlppm5kfdz2aj85ky07p49ilcqxi998f"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -188,30 +213,24 @@
(add-after 'unpack 'prepare-deps
(lambda* (#:key inputs #:allow-other-keys)
(mkdir "deps/srccache")
- (copy-file (assoc-ref inputs "dsfmt")
- "deps/srccache/dsfmt-2.2.3.tar.gz")
+ ;; no USE_SYSTEM_{OBJCONV/LIBWHICH}
(copy-file (assoc-ref inputs "objconv")
"deps/srccache/objconv.zip")
- (copy-file (assoc-ref inputs "suitesparse")
- "deps/srccache/SuiteSparse-4.4.5.tar.gz")
- (copy-file (string-append (assoc-ref inputs "virtualenv")
- "/bin/virtualenv")
- "julia-env")
(copy-file (assoc-ref inputs "libwhich")
(string-append "deps/srccache/libwhich-"
"81e9723c0273d78493dc8c8ed570f68d9ce7e89e"
".tar.gz"))
- (copy-file (assoc-ref inputs "rmath")
- "deps/srccache/Rmath-julia-0.1.tar.gz")
-
;; needed by libwhich
(setenv "LD_LIBRARY_PATH"
(string-join (map (lambda (pkg)
(string-append (assoc-ref inputs pkg)
"/lib"))
- '("arpack-ng" "fftw" "gmp" "lapack"
- "libgit2" "mpfr" "openblas" "openlibm"
- "openspecfun" "pcre2"))
+ '("arpack-ng" "curl" "dsfmt"
+ "gmp" "lapack"
+ "libssh2" "libgit2"
+ "mbedtls" "mpfr"
+ "openblas" "openlibm" "pcre2"
+ "suitesparse"))
":"))
#t))
;; FIXME: Building the documentation requires Julia packages that
@@ -233,44 +252,12 @@
;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
(lambda* (#:key inputs #:allow-other-keys)
- (use-modules (ice-9 match))
- (substitute* "src/runtime_ccall.cpp"
- ;; Patch out invocations of '/sbin/ldconfig' to avoid getting
- ;; error messages about missing '/sbin/ldconfig' on Guix System.
- (("popen\\(.*ldconfig.*\\);")
- "NULL;\n")
-
- ;; Populate 'sonameMap'.
- (("jl_read_sonames.*;")
- (string-join
- (map (match-lambda
- ((input libname soname)
- (string-append
- "sonameMap[\"" libname "\"] = "
- "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
- '(("libc" "libc" "libc.so.6")
- ("pcre2" "libpcre2-8" "libpcre2-8.so")
- ("mpfr" "libmpfr" "libmpfr.so")
- ("openblas" "libblas" "libopenblas.so")
- ("arpack-ng" "libarpack" "libarpack.so")
- ("lapack" "liblapack" "liblapack.so")
- ("libgit2" "libgit2" "libgit2.so")
- ("gmp" "libgmp" "libgmp.so")
- ("openspecfun" "libopenspecfun" "libopenspecfun.so")
- ("fftw" "libfftw3" "libfftw3_threads.so")
- ("fftwf" "libfftw3f" "libfftw3f_threads.so"))))))
(substitute* "base/math.jl"
(("const libm = Base.libm_name")
(string-append "const libm = \""
(assoc-ref inputs "openlibm")
"/lib/libopenlibm.so"
- "\""))
- (("const openspecfun = \"libopenspecfun\"")
- (string-append "const openspecfun = \""
- (assoc-ref inputs "openspecfun")
- "/lib/libopenspecfun.so"
- "\"")))
- #t))
+ "\"")))))
(add-before 'build 'fix-include-and-link-paths
(lambda* (#:key inputs #:allow-other-keys)
;; LIBUTF8PROC is a linker flag, not a build target. It is
@@ -278,10 +265,10 @@
;; collection of build targets and a list of libraries to link
;; against.
(substitute* "src/flisp/Makefile"
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
- "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
- "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
+ "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
+ "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
;; The REPL must be linked with libuv.
(substitute* "ui/Makefile"
@@ -296,38 +283,28 @@
"/include/uv/errno.h")))
#t))
(add-before 'build 'replace-default-shell
- (lambda _
- (substitute* "base/client.jl"
- (("/bin/sh") (which "sh")))
- #t))
- (add-after 'unpack 'hardcode-paths
(lambda _
- (substitute* "stdlib/InteractiveUtils/src/InteractiveUtils.jl"
- (("`which") (string-append "`" (which "which")))
- (("`wget") (string-append "`" (which "wget"))))
+ (substitute* "base/client.jl"
+ (("/bin/sh") (which "sh")))
#t))
- (add-before 'check 'disable-broken-tests
+ (add-before 'check 'fix-broken-tests
(lambda _
- (define (touch file-name)
- (call-with-output-file file-name (const #t)))
- ;; FIXME: All git tests works except this one. But *THIS* "fix"
- ;; is not working, so right now I'm disabling all libgit2.jl tests
- ;; (substitute* "stdlib/LibGit2/test/libgit2.jl"
- ;; (("!LibGit2.use_http_path(cfg, github_cred)") "true")
- ;; (("LibGit2.use_http_path(cfg, mygit_cred)") "true"))
- (map (lambda (test)
- (delete-file test)
- (touch test))
- '("stdlib/Sockets/test/runtests.jl"
- "stdlib/Distributed/test/runtests.jl"
- ;; FIXME: see above
- "stdlib/LibGit2/test/libgit2.jl"))
- (substitute* "test/choosetests.jl"
- ;; These tests fail, probably because some of the input
- ;; binaries have been stripped and thus backtraces don't look
- ;; as expected.
- (("\"backtrace\",") "")
- (("\"cmdlineargs\",") ""))
+ (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\",\"client\",\"stacktraces\"]),testnames)"))
+ ;; When HOME is not set, julia calls uv_os_homedir, which in
+ ;; turns call getpwuid_r. Add the HOME env variable to the
+ ;; external julia call to fix this
+ (substitute* "test/cmdlineargs.jl"
+ (("\"JULIA_PROJECT\"") "\"HOME\"=>\"/tmp\", \"JULIA_PROJECT\""))
+ ;; Marking the test as broken as it's a known bug:
+ ;; https://github.com/JuliaLang/julia/issues/32377
+ (substitute* "stdlib/REPL/test/replcompletions.jl"
+ (("@test count") "@test_broken count"))
#t)))
#:make-flags
(list
@@ -345,26 +322,21 @@
;; platforms, e.g. when running "guix package --search="
(_ "MARCH=UNSUPPORTED"))
- "CONFIG_SHELL=bash" ;needed to build bundled libraries
- "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no
- ;build system for a shared library.
+ "CONFIG_SHELL=bash" ;needed to build bundled libraries
+ ;; list of "USE_SYSTEM_*" is here:
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
+ "USE_SYSTEM_DSFMT=1"
+ "USE_SYSTEM_P7ZIP=1"
"USE_SYSTEM_LAPACK=1"
"USE_SYSTEM_BLAS=1"
"USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
"LIBBLAS=-lopenblas"
"LIBBLASNAME=libopenblas"
- "USE_SYSTEM_FFTW=1"
- "LIBFFTWNAME=libfftw3"
- "LIBFFTWFNAME=libfftw3f"
-
- ;; TODO: Suitesparse does not install shared libraries, so we cannot
- ;; use the suitesparse package.
- ;; "USE_SYSTEM_SUITESPARSE=1"
- ;; (string-append "SUITESPARSE_INC=-I "
- ;; (assoc-ref %build-inputs "suitesparse")
- ;; "/include")
-
+ "USE_SYSTEM_SUITESPARSE=1"
+ (string-append "SUITESPARSE_INC=-I "
+ (assoc-ref %build-inputs "suitesparse")
+ "/include")
"USE_GPL_LIBS=1" ;proudly
"USE_SYSTEM_UTF8PROC=1"
(string-append "UTF8PROC_INC="
@@ -385,16 +357,19 @@
"USE_SYSTEM_PATCHELF=1"
"USE_SYSTEM_PCRE=1"
"USE_SYSTEM_OPENLIBM=1"
-
+ "USE_SYSTEM_LIBM=0"
+ "USE_SYSTEM_LIBSSH2=1"
+ "USE_SYSTEM_CURL=1"
"USE_SYSTEM_GMP=1"
"USE_SYSTEM_MPFR=1"
+ "USE_SYSTEM_MBEDTLS=1"
"USE_SYSTEM_ARPACK=1"
"USE_SYSTEM_LIBGIT2=1"
- "USE_SYSTEM_ZLIB=1"
- "USE_SYSTEM_OPENSPECFUN=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>.
@@ -403,12 +378,12 @@
("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
("lapack" ,lapack)
("openblas" ,openblas) ;Julia does not build with Atlas
- ("libunwind" ,libunwind)
+ ("libunwind" ,libunwind-julia)
("openlibm" ,openlibm)
- ("openspecfun" ,openspecfun)
+ ("mbedtls" ,mbedtls-apache)
+ ("curl" ,curl)
("libgit2" ,libgit2)
- ("fftw" ,fftw)
- ("fftwf" ,fftwf)
+ ("libssh2" ,libssh2)
("fortran" ,gfortran)
("libuv" ,libuv-julia)
("pcre2" ,pcre2)
@@ -418,31 +393,12 @@
("which" ,which)
("zlib" ,zlib)
("gmp" ,gmp)
- ("virtualenv" ,python2-virtualenv)
+ ("suitesparse" ,suitesparse)
;; FIXME: The following inputs are downloaded from upstream to allow us
;; to use the lightweight Julia release tarball. Ideally, these inputs
;; would eventually be replaced with proper Guix packages.
-
- ;; TODO: run "make -f contrib/repackage_system_suitesparse4.make" to copy static lib
- ;; Find dependency versions here:
- ;; https://raw.githubusercontent.com/JuliaLang/julia/77a2c1e245c85812dc1c7687540beedecc52758f/deps/Versions.make
- ("rmath"
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/JuliaLang/Rmath-julia")
- (commit "v0.1")))
- (file-name "rmath-julia-0.1-checkout")
- (sha256
- (base32
- "1zkpy0cg5zivq40zbhbdgj9128fqzs2j94wkwih8nc6xaj3gp9p6"))))
- ("suitesparse"
- ,(origin
- (method url-fetch)
- (uri "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.5.tar.gz")

This message was truncated. Download the full message here.
N
[PATCH 01/11] gnu: julia: Update to 1.3.1.
(address . 38546@debbugs.gnu.org)
875zh8vq4a.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
* gnu/packages/julia.scm (julia): Update to 1.3.1.
* gnu/packages/julia.scm (libuv-julia): Update to 2.0.0.
---
gnu/packages/julia.scm | 278 +++++++++++++++++------------------------
1 file changed, 113 insertions(+), 165 deletions(-)

Toggle diff (438 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 65a5e42beb..e4db39afbd 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages curl)
#:use-module (gnu packages elf)
#:use-module (gnu packages gcc)
#:use-module (gnu packages llvm)
@@ -43,18 +45,30 @@
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages ssh)
#:use-module (gnu packages wget)
#:use-module (ice-9 match))
+(define (julia-patch-url version name)
+ (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
+ "/deps/patches/" name ".patch"))
+
+(define (julia-patch name sha)
+ (let ((version "1.3.1"))
+ (origin (method url-fetch)
+ (uri (julia-patch-url version name))
+ (sha256 (base32 sha))
+ (file-name name))))
+
(define libuv-julia
- (let ((commit "26dbe5672c33fc885462c509fe2a9b36f35866fd")
- (revision "6"))
+ (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1"))
;; When upgrading Julia, also upgrade this.
- ;; Get the commit from https://github.com/JuliaLang/julia/blob/v1.1.1/deps/libuv.version
+ ;; Get the commit from
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.1/deps/libuv.version
(package
(inherit libuv)
(name "libuv-julia")
- (version (string-append "1.9.0-" revision "." (string-take commit 8)))
+ (version (string-append "2.0.0" "." (string-take commit 8)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -63,7 +77,7 @@
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "17pn2xmqaramilx897s9grs966i5246gi6sric5alch4g9j4685n"))))
+ "0dn3v6fdp1z382pqg3nhjzk60l61ky9b65mfgaj29fv2da95rwjs"))))
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments libuv)
@@ -72,16 +86,27 @@
(delete 'autogen)))))
(home-page "https://github.com/JuliaLang/libuv"))))
-(define (llvm-patch-url version name)
- (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version
- "/deps/patches/" name))
-
-(define (llvm-patch name sha)
- (let ((version "1.1.1"))
- (origin (method url-fetch)
- (uri (llvm-patch-url version name))
- (sha256 (base32 sha))
- (file-name name))))
+(define libunwind-julia
+ ;; julia requires a patched version
+ (package
+ (inherit libunwind)
+ (name "libunwind-julia")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/libunwind/libunwind-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1y0l08k6ak1mqbfj6accf9s5686kljwgsl4vcqpxzk5n74wpm6a3"))
+ (patches
+ (list
+ (julia-patch "libunwind-prefer-extbl"
+ "0lr4dafw8qyfh8sw8hhbwkql1dlhqv8px7k81y2l20hhxfgnh2m1")
+ (julia-patch "libunwind-static-arm"
+ "1jk3bmiw61ypcchqkk1fyg5wh8wpggk574wxyfyaic870zh3lhgq")))))
+ (build-system gnu-build-system)
+ (home-page "https://github.com/JuliaLang/libuv")))
(define llvm-julia
(package
@@ -99,39 +124,39 @@
;; Discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919628
(patches
(list
- (llvm-patch "llvm-6.0-D44650.patch"
+ (julia-patch "llvm-6.0-D44650"
"1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb")
- (llvm-patch "llvm-6.0-DISABLE_ABI_CHECKS.patch"
+ (julia-patch "llvm-6.0-DISABLE_ABI_CHECKS"
"014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg")
- (llvm-patch "llvm-6.0-NVPTX-addrspaces.patch"
+ (julia-patch "llvm-6.0-NVPTX-addrspaces"
"1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc")
- (llvm-patch "llvm-6.0.0_D27296-libssp.patch"
+ (julia-patch "llvm-6.0.0_D27296-libssp"
"0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh")
- (llvm-patch "llvm-D27629-AArch64-large_model_6.0.1.patch"
+ (julia-patch "llvm-D27629-AArch64-large_model_6.0.1"
"1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z")
- (llvm-patch "llvm-D34078-vectorize-fdiv.patch"
+ (julia-patch "llvm-D34078-vectorize-fdiv"
"1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay")
- (llvm-patch "llvm-D42262-jumpthreading-not-i1.patch"
+ (julia-patch "llvm-D42262-jumpthreading-not-i1"
"1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq")
- (llvm-patch "llvm-D44892-Perf-integration.patch"
+ (julia-patch "llvm-D44892-Perf-integration"
"0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05")
- (llvm-patch "llvm-D46460.patch"
+ (julia-patch "llvm-D46460"
"1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb")
- (llvm-patch "llvm-D49832-SCEVPred.patch"
+ (julia-patch "llvm-D49832-SCEVPred"
"0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn")
- (llvm-patch "llvm-D50010-VNCoercion-ni.patch"
+ (julia-patch "llvm-D50010-VNCoercion-ni"
"0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp")
- (llvm-patch "llvm-D50167-scev-umin.patch"
+ (julia-patch "llvm-D50167-scev-umin"
"1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v")
- (llvm-patch "llvm-OProfile-line-num.patch"
+ (julia-patch "llvm-OProfile-line-num"
"1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7")
- (llvm-patch "llvm-PPC-addrspaces.patch"
+ (julia-patch "llvm-PPC-addrspaces"
"1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p")
- (llvm-patch "llvm-rL323946-LSRTy.patch"
+ (julia-patch "llvm-rL323946-LSRTy"
"10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns")
- (llvm-patch "llvm-rL326967-aligned-load.patch"
+ (julia-patch "llvm-rL326967-aligned-load"
"04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4")
- (llvm-patch "llvm-rL327898.patch"
+ (julia-patch "llvm-rL327898"
"15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))
(arguments
(substitute-keyword-arguments (package-arguments llvm-6)
@@ -158,7 +183,7 @@
(define-public julia
(package
(name "julia")
- (version "1.1.1")
+ (version "1.3.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -166,7 +191,7 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "0hk983mywimclgnjc41zmlppm5kfdz2aj85ky07p49ilcqxi998f"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -188,30 +213,24 @@
(add-after 'unpack 'prepare-deps
(lambda* (#:key inputs #:allow-other-keys)
(mkdir "deps/srccache")
- (copy-file (assoc-ref inputs "dsfmt")
- "deps/srccache/dsfmt-2.2.3.tar.gz")
+ ;; no USE_SYSTEM_{OBJCONV/LIBWHICH}
(copy-file (assoc-ref inputs "objconv")
"deps/srccache/objconv.zip")
- (copy-file (assoc-ref inputs "suitesparse")
- "deps/srccache/SuiteSparse-4.4.5.tar.gz")
- (copy-file (string-append (assoc-ref inputs "virtualenv")
- "/bin/virtualenv")
- "julia-env")
(copy-file (assoc-ref inputs "libwhich")
(string-append "deps/srccache/libwhich-"
"81e9723c0273d78493dc8c8ed570f68d9ce7e89e"
".tar.gz"))
- (copy-file (assoc-ref inputs "rmath")
- "deps/srccache/Rmath-julia-0.1.tar.gz")
-
;; needed by libwhich
(setenv "LD_LIBRARY_PATH"
(string-join (map (lambda (pkg)
(string-append (assoc-ref inputs pkg)
"/lib"))
- '("arpack-ng" "fftw" "gmp" "lapack"
- "libgit2" "mpfr" "openblas" "openlibm"
- "openspecfun" "pcre2"))
+ '("arpack-ng" "curl" "dsfmt"
+ "gmp" "lapack"
+ "libssh2" "libgit2"
+ "mbedtls" "mpfr"
+ "openblas" "openlibm" "pcre2"
+ "suitesparse"))
":"))
#t))
;; FIXME: Building the documentation requires Julia packages that
@@ -233,44 +252,12 @@
;; using the output of "/sbin/ldconfig -p". Since ldconfig is not
;; used in Guix, we patch runtime_ccall.cpp to contain a static map.
(lambda* (#:key inputs #:allow-other-keys)
- (use-modules (ice-9 match))
- (substitute* "src/runtime_ccall.cpp"
- ;; Patch out invocations of '/sbin/ldconfig' to avoid getting
- ;; error messages about missing '/sbin/ldconfig' on Guix System.
- (("popen\\(.*ldconfig.*\\);")
- "NULL;\n")
-
- ;; Populate 'sonameMap'.
- (("jl_read_sonames.*;")
- (string-join
- (map (match-lambda
- ((input libname soname)
- (string-append
- "sonameMap[\"" libname "\"] = "
- "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
- '(("libc" "libc" "libc.so.6")
- ("pcre2" "libpcre2-8" "libpcre2-8.so")
- ("mpfr" "libmpfr" "libmpfr.so")
- ("openblas" "libblas" "libopenblas.so")
- ("arpack-ng" "libarpack" "libarpack.so")
- ("lapack" "liblapack" "liblapack.so")
- ("libgit2" "libgit2" "libgit2.so")
- ("gmp" "libgmp" "libgmp.so")
- ("openspecfun" "libopenspecfun" "libopenspecfun.so")
- ("fftw" "libfftw3" "libfftw3_threads.so")
- ("fftwf" "libfftw3f" "libfftw3f_threads.so"))))))
(substitute* "base/math.jl"
(("const libm = Base.libm_name")
(string-append "const libm = \""
(assoc-ref inputs "openlibm")
"/lib/libopenlibm.so"
- "\""))
- (("const openspecfun = \"libopenspecfun\"")
- (string-append "const openspecfun = \""
- (assoc-ref inputs "openspecfun")
- "/lib/libopenspecfun.so"
- "\"")))
- #t))
+ "\"")))))
(add-before 'build 'fix-include-and-link-paths
(lambda* (#:key inputs #:allow-other-keys)
;; LIBUTF8PROC is a linker flag, not a build target. It is
@@ -278,10 +265,10 @@
;; collection of build targets and a list of libraries to link
;; against.
(substitute* "src/flisp/Makefile"
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
- "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
- (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
- "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)\\$\\(EXE\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
+ "$(BUILDDIR)/$(EXENAME)$(EXE): $(OBJS) $(LLT_release)")
+ (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug$(EXE): \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
+ "$(BUILDDIR)/$(EXENAME)-debug\\$\\(EXE\\): $(DOBJS) $(LLT_debug)"))
;; The REPL must be linked with libuv.
(substitute* "ui/Makefile"
@@ -296,38 +283,28 @@
"/include/uv/errno.h")))
#t))
(add-before 'build 'replace-default-shell
- (lambda _
- (substitute* "base/client.jl"
- (("/bin/sh") (which "sh")))
- #t))
- (add-after 'unpack 'hardcode-paths
(lambda _
- (substitute* "stdlib/InteractiveUtils/src/InteractiveUtils.jl"
- (("`which") (string-append "`" (which "which")))
- (("`wget") (string-append "`" (which "wget"))))
+ (substitute* "base/client.jl"
+ (("/bin/sh") (which "sh")))
#t))
- (add-before 'check 'disable-broken-tests
+ (add-before 'check 'fix-broken-tests
(lambda _
- (define (touch file-name)
- (call-with-output-file file-name (const #t)))
- ;; FIXME: All git tests works except this one. But *THIS* "fix"
- ;; is not working, so right now I'm disabling all libgit2.jl tests
- ;; (substitute* "stdlib/LibGit2/test/libgit2.jl"
- ;; (("!LibGit2.use_http_path(cfg, github_cred)") "true")
- ;; (("LibGit2.use_http_path(cfg, mygit_cred)") "true"))
- (map (lambda (test)
- (delete-file test)
- (touch test))
- '("stdlib/Sockets/test/runtests.jl"
- "stdlib/Distributed/test/runtests.jl"
- ;; FIXME: see above
- "stdlib/LibGit2/test/libgit2.jl"))
- (substitute* "test/choosetests.jl"
- ;; These tests fail, probably because some of the input
- ;; binaries have been stripped and thus backtraces don't look
- ;; as expected.
- (("\"backtrace\",") "")
- (("\"cmdlineargs\",") ""))
+ (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\",\"client\",\"stacktraces\"]),testnames)"))
+ ;; When HOME is not set, julia calls uv_os_homedir, which in
+ ;; turns call getpwuid_r. Add the HOME env variable to the
+ ;; external julia call to fix this
+ (substitute* "test/cmdlineargs.jl"
+ (("\"JULIA_PROJECT\"") "\"HOME\"=>\"/tmp\", \"JULIA_PROJECT\""))
+ ;; Marking the test as broken as it's a known bug:
+ ;; https://github.com/JuliaLang/julia/issues/32377
+ (substitute* "stdlib/REPL/test/replcompletions.jl"
+ (("@test count") "@test_broken count"))
#t)))
#:make-flags
(list
@@ -345,26 +322,21 @@
;; platforms, e.g. when running "guix package --search="
(_ "MARCH=UNSUPPORTED"))
- "CONFIG_SHELL=bash" ;needed to build bundled libraries
- "USE_SYSTEM_DSFMT=0" ;not packaged for Guix and upstream has no
- ;build system for a shared library.
+ "CONFIG_SHELL=bash" ;needed to build bundled libraries
+ ;; list of "USE_SYSTEM_*" is here:
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.1/Make.inc
+ "USE_SYSTEM_DSFMT=1"
+ "USE_SYSTEM_P7ZIP=1"
"USE_SYSTEM_LAPACK=1"
"USE_SYSTEM_BLAS=1"
"USE_BLAS64=0" ;needed when USE_SYSTEM_BLAS=1
"LIBBLAS=-lopenblas"
"LIBBLASNAME=libopenblas"
- "USE_SYSTEM_FFTW=1"
- "LIBFFTWNAME=libfftw3"
- "LIBFFTWFNAME=libfftw3f"
-
- ;; TODO: Suitesparse does not install shared libraries, so we cannot
- ;; use the suitesparse package.
- ;; "USE_SYSTEM_SUITESPARSE=1"
- ;; (string-append "SUITESPARSE_INC=-I "
- ;; (assoc-ref %build-inputs "suitesparse")
- ;; "/include")
-
+ "USE_SYSTEM_SUITESPARSE=1"
+ (string-append "SUITESPARSE_INC=-I "
+ (assoc-ref %build-inputs "suitesparse")
+ "/include")
"USE_GPL_LIBS=1" ;proudly
"USE_SYSTEM_UTF8PROC=1"
(string-append "UTF8PROC_INC="
@@ -385,16 +357,19 @@
"USE_SYSTEM_PATCHELF=1"
"USE_SYSTEM_PCRE=1"
"USE_SYSTEM_OPENLIBM=1"
-
+ "USE_SYSTEM_LIBM=0"
+ "USE_SYSTEM_LIBSSH2=1"
+ "USE_SYSTEM_CURL=1"
"USE_SYSTEM_GMP=1"
"USE_SYSTEM_MPFR=1"
+ "USE_SYSTEM_MBEDTLS=1"
"USE_SYSTEM_ARPACK=1"
"USE_SYSTEM_LIBGIT2=1"
- "USE_SYSTEM_ZLIB=1"
- "USE_SYSTEM_OPENSPECFUN=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>.
@@ -403,12 +378,12 @@
("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
("lapack" ,lapack)
("openblas" ,openblas) ;Julia does not build with Atlas
- ("libunwind" ,libunwind)
+ ("libunwind" ,libunwind-julia)
("openlibm" ,openlibm)
- ("openspecfun" ,openspecfun)
+ ("mbedtls" ,mbedtls-apache)
+ ("curl" ,curl)
("libgit2" ,libgit2)
- ("fftw" ,fftw)
- ("fftwf" ,fftwf)
+ ("libssh2" ,libssh2)
("fortran" ,gfortran)
("libuv" ,libuv-julia)
("pcre2" ,pcre2)
@@ -418,31 +393,12 @@
("which" ,which)
("zlib" ,zlib)
("gmp" ,gmp)
- ("virtualenv" ,python2-virtualenv)
+ ("suitesparse" ,suitesparse)
;; FIXME: The following inputs are downloaded from upstream to allow us
;; to use the lightweight Julia release tarball. Ideally, these inputs
;; would eventually be replaced with proper Guix packages.
-
- ;; TODO: run "make -f contrib/repackage_system_suitesparse4.make" to copy static lib
- ;; Find dependency versions here:
- ;; https://raw.githubusercontent.com/JuliaLang/julia/77a2c1e245c85812dc1c7687540beedecc52758f/deps/Versions.make
- ("rmath"
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/JuliaLang/Rmath-julia")
- (commit "v0.1")))
- (file-name "rmath-julia-0.1-checkout")
- (sha256
- (base32
- "1zkpy0cg5zivq40zbhbdgj9128fqzs2j94wkwih8nc6xaj3gp9p6"))))
- ("suitesparse"
- ,(origin
- (method url-fetch)
- (uri "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.5.tar.gz")

This message was truncated. Download the full message here.
N
N
Nicolò Balzarotti wrote on 18 Jan 2020 14:42
[Nicolò Balzarotti] [PATCH 00/10] Update julia to 1.3.1, fix precompilation, add HTTP.jl
(address . 38546@debbugs.gnu.org)
8736ccvq31.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Ok I had time to look at this again.

1. Package installation can be done both the julia way and the guix way
2. SOURCE_DATE_EPOCH is respected in package precompile timestamp. Other fixes are needed to get reproducible builds, but for now that means that package cache is used.
3. This patch adds some first julia package (HTTP.jl and dependencies)
4. Updated julia to 1.3.1 (latest release). It's working great and the
build recipe is simplified a lot. However, some test is failing. The
"interesting" part is that when running tests alone, they are working.
It seems like the problem arise when tests are run on the _same core_
and not on different cores. I opened a issue upstream for this
further on it, but for now if it's fine for me this is ready to be merged.

I'm sending the patch series here.

Thanks, Nicolò

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

Toggle quote (54 lines)
> Hi,
>
> (+Cc: bug report.)
>
> Nicolò Balzarotti <anothersms@gmail.com> skribis:
>
>> Ludovic Courtès <ludo@gnu.org> writes:
>>
>>> Hi!
>>>
>>> nixo <anothersms@gmail.com> skribis:
>>>
>>>> This set of patches improve the state of julia-build-system.
>>>>
>>>> 1. set path JULIA_LOAD_PATH to enable installing packages, and
>>>> JULIA_DEPOT_PATH to allow guix-precompiled cache to be recognized by julia. To
>>>
>>> These two environment variables are supported upstream, right?
>>
>> Yes, those variables are documented here:
>> https://docs.julialang.org/en/v1/manual/environment-variables/index.html
>
> Great.
>
>> Should user be allowed to manually install packages in his own private
>> home folder manually? (I just tried with R: R recognize the store is RO
>> and ask for an alternative path). I'll try to allow "standard" package
>> installation and submit the patch again (also, I just read you other
>> comments, so I'll fix everything!)
>
> I think users should have the option to install packages in the normal
> Julia way, without Guix.
>
>>>> do this, a small "hack" with libfaketime was required (julia decides if the
>>>> cache is valid by comparing source ".jl" mtime with cache ".ji" file, in which
>>>> julia stores a timestamp. We need to force this timestamp to be equal to the
>>>> mtime of guix-store files).
>>>
>>> OK. This hack shouldn’t break “normal” Julia uses (outside of the
>>> store), right?
>> You are right, the issue is that julia finds its src (.jl) file to have
>> a different (although older) timestamp (because guix fixes the
>> mtime). This applies only to cache files placed in the store. Other
>> cache files (non-guix installed files) have the right timestamp, so are
>> not affected (I don't know if this explanation is clear. The TLDR is:
>> with this hack store works without double-precompilation, non-store
>> works normally, too).
>> However, I'll check if I can make it work with SOURCE_DATE_EPOCH. I
>> already read the code responsible for precompilation, so hopefully it
>> won't take too much time
>
> Awesome, thanks!
>
> Ludo’.
N
N
Nicolò Balzarotti wrote on 18 Jan 2020 14:59
[00/11] Update Julia, Fix precompilation, add HTTP.jl
(address . 38546@debbugs.gnu.org)(name . Ludovic Courtès)(address . ludo@gnu.org)
87wo9ouaq5.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
I'm sending the patches again as attachments since I think some of them
was badly formatted.
From aa245450a7c8a92c29388cc6603ff43f278dfdd7 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 13:58:37 +0100
Subject: [PATCH 02/11] gnu: julia: use SOURCE_DATE_EPOCH for precompilation
timestamp

* gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch: new file
---
gnu/local.mk | 1 +
gnu/packages/julia.scm | 4 ++-
...ia-fake-mtime-with-SOURCE_DATE_EPOCH.patch | 29 +++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch

Toggle diff (64 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 00ff3b8d61..fe8634b44d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1010,6 +1010,7 @@ dist_patch_DATA = \
%D%/packages/patches/java-xerces-bootclasspath.patch \
%D%/packages/patches/java-xerces-build_dont_unzip.patch \
%D%/packages/patches/java-xerces-xjavac_taskdef.patch \
+ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/libvirt-create-machine-cgroup.patch \
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index e4db39afbd..a66309b611 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -191,7 +191,9 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))
+ (patches
+ (search-patches "julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
diff --git a/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
new file mode 100644
index 0000000000..467e6d68d1
--- /dev/null
+++ b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
@@ -0,0 +1,29 @@
+From e4dc28db1d70819505fd1a68fd9d2bfc4fb61a7d Mon Sep 17 00:00:00 2001
+From: nixo <nicolo@nixo.xyz>
+Date: Fri, 17 Jan 2020 11:28:30 +0100
+Subject: [PATCH] base: loading: support fake mtime with SOURCE_DATE_EPCOCH
+
+Do this when loading libraries
+---
+ base/loading.jl | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/base/loading.jl b/base/loading.jl
+index 7f11a2d4fc..1b4686d1dc 100644
+--- a/base/loading.jl
++++ b/base/loading.jl
+@@ -807,7 +807,10 @@ function _include_dependency(mod::Module, _path::AbstractString)
+ path = normpath(joinpath(dirname(prev), _path))
+ end
+ if _track_dependencies[]
+- push!(_require_dependencies, (mod, path, mtime(path)))
++ push!(_require_dependencies,
++ (mod, path,
++ haskey(ENV, "SOURCE_DATE_EPOCH") ?
++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+ end
+ return path, prev
+ end
+--
+2.24.1
+
--
2.24.1
From fe1f84062e88b6e4d77f35f12d7219fd47687c3a Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:23:44 +0100
Subject: [PATCH 04/11] use wrapper to set JULIA_LOAD_PATH and JULIA_DEPOT_PATH

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

Toggle diff (55 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index e1c4685227..39c7d6d34f 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -297,7 +297,9 @@
;; 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\",\"client\",\"stacktraces\"]),testnames)"))
+ "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\",\"client\",
+ \"stacktraces\",\"stress\",\"precompile\"]),
+ testnames)"))
;; When HOME is not set, julia calls uv_os_homedir, which in
;; turns call getpwuid_r. Add the HOME env variable to the
;; external julia call to fix this
@@ -307,11 +309,23 @@
;; https://github.com/JuliaLang/julia/issues/32377
(substitute* "stdlib/REPL/test/replcompletions.jl"
(("@test count") "@test_broken count"))
- #t)))
+ #t))
+ (add-after 'install 'make-wrapper
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (program "julia"))
+ (with-directory-excursion bin
+ (wrap-program program
+ `("JULIA_LOAD_PATH" ":" prefix
+ ("" "$JULIA_LOAD_PATH")))
+ (wrap-program program
+ `("JULIA_DEPOT_PATH" ":" prefix
+ ("" "$JULIA_DEPOT_PATH"))))
+ #t))))
#:make-flags
(list
(string-append "prefix=" (assoc-ref %outputs "out"))
- (string-append "PREFIX=" (assoc-ref %outputs "out"))
;; Passing the MARCH flag is necessary to build binary substitutes for
;; the supported architectures.
@@ -435,7 +449,10 @@
(native-search-paths
(list (search-path-specification
(variable "JULIA_LOAD_PATH")
- (files (list "share/julia/packages/")))))
+ (files (list "share/julia/packages/")))
+ (search-path-specification
+ (variable "JULIA_DEPOT_PATH")
+ (files (list "share/julia/")))))
;; Julia is not officially released for ARM and MIPS.
;; See https://github.com/JuliaLang/julia/issues/10639
(supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
--
2.24.1
From 3191a0958c97831bc65750a6c4231d449e92aca3 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Fri, 17 Jan 2020 19:40:55 +0100
Subject: [PATCH 05/11] gnu: build: julia-build-system: fix package
precompilation

---
guix/build/julia-build-system.scm | 51 +++++++++++++------------------
1 file changed, 22 insertions(+), 29 deletions(-)

Toggle diff (88 lines)
diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
index ff6fcf5fe3..dbd4af623d 100644
--- a/guix/build/julia-build-system.scm
+++ b/guix/build/julia-build-system.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2019, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,53 +37,46 @@
;; subpath where we store the package content
(define %package-path "/share/julia/packages/")
-(define (generate-load-path inputs outputs)
- (string-append
- (string-join (map (match-lambda
- ((_ . path)
- (string-append path %package-path)))
- ;; Restrict to inputs beginning with "julia-".
- (filter (match-lambda
- ((name . _)
- (string-prefix? "julia-" name)))
- inputs))
- ":")
- (string-append ":" (assoc-ref outputs "out") %package-path)
- ;; stdlib is always required to find Julia's standard libraries.
- ;; usually there are other two paths in this variable:
- ;; "@" and "@v#.#"
- ":@stdlib"))
-
(define* (install #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package-dir (string-append out %package-path
- (string-append
- (strip-store-file-name source)))))
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (strip-store-file-name source))))
(mkdir-p package-dir)
- (copy-recursively source package-dir))
+ (copy-recursively (getcwd) package-dir))
#t)
-;; TODO: Precompilation is working, but I don't know how to tell
-;; julia to use use it. If (on rantime) we set HOME to
-;; store path, julia tries to write files there (failing)
(define* (precompile #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(builddir (string-append out "/share/julia/"))
(package (strip-store-file-name source)))
(mkdir-p builddir)
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
- ;; Actual precompilation
- (invoke-julia (string-append "using " package)))
+ ;; add new package dir to the load path
+ (setenv "JULIA_LOAD_PATH"
+ (string-append builddir "packages/" ":"
+ (or (getenv "JULIA_LOAD_PATH")
+ "")))
+ ;; Actual precompilation.
+ (invoke-julia
+ ;; when using julia as a user, julia writes precompile cache to the first
+ ;; entry of the DEPOT_PATH list (by default, the home dir). We want to
+ ;; write it to the store, so let's push the store path as the first
+ ;; element of DEPOT_PATH. Once the cache file exists, this hack is not
+ ;; needed anymore (like in the check phase). If the user install new
+ ;; pacakges, those will be installed and precompiled in the home dir
+ (string-append "pushfirst!(DEPOT_PATH, pop!(DEPOT_PATH)); using " package)))
#t)
(define* (check #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package (strip-store-file-name source))
(builddir (string-append out "/share/julia/")))
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (setenv "JULIA_LOAD_PATH" (string-append builddir "packages/"))
(invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")")))
#t)
--
2.24.1
From 7aabfd980a00fa292e73db66230a0558389a9011 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:05:00 +0100
Subject: [PATCH 06/11] gnu: Add julia-compat.

* gnu/packages/julia-xyz.scm: New file
* gnu/packages/julia-xyz.scm (julia-compat): New variable
---
gnu/local.mk | 1 +
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 gnu/packages/julia-xyz.scm

Toggle diff (47 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index fe8634b44d..e07229ee20 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -277,6 +277,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
+ %D%/packages/julia-xyz.scm \
%D%/packages/jupyter.scm \
%D%/packages/kawa.scm \
%D%/packages/kde.scm \
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
new file mode 100644
index 0000000000..7d9faa63e9
--- /dev/null
+++ b/gnu/packages/julia-xyz.scm
@@ -0,0 +1,27 @@
+(define-module (gnu packages julia-xyz)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system julia))
+
+(define-public julia-compat
+ (package
+ (name "julia-compat")
+ (version "3.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Compat.jl")
+ (commit (string-append "v" version))))
+ (file-name "Compat")
+ (sha256
+ (base32 "0d21h3l2ry2mmlhpg7b9cxifayzwcv7r13h5wydcbd5pjf6k4qd4"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Compat.jl")
+ (synopsis "Compatibility across Julia versions")
+ (description "The Compat package is designed to ease interoperability
+between older and newer versions of the Julia language. The Compat package
+provides a macro that lets you use the latest syntax in a backwards-compatible
+way.")
+ (license license:expat)))
--
2.24.1
From 9d6e97b3b87480fbc5f7dc32ad8e9db838e141ff Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:06:11 +0100
Subject: [PATCH 07/11] gnu: Add julia-inifile.

* gnu/packages/julia-xyz.scm (julia-inifile): New variable.
---
gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (30 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 7d9faa63e9..6b8053e5f8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -25,3 +25,23 @@ between older and newer versions of the Julia language. The Compat package
provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+
+(define-public julia-inifile
+ (package
+ (name "julia-inifile")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/IniFile.jl")
+ (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0")))
+ (file-name "IniFile")
+ (sha256
+ (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaIO/IniFile.jl")
+ (synopsis "Reading Windows-style INI files")
+ (description "This is a julia package that defines an IniFile type that
+allows to interface with @file{.ini} files")
+ (license license:expat)))
--
2.24.1
From bc96f48b6916eab179f7f1a911e54182e9c9ed71 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:07:13 +0100
Subject: [PATCH 08/11] gnu: Add julia-sha.

* gnu/packages/julia-xyz.scm (julia-sha): New variable.
---
gnu/packages/julia-xyz.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 6b8053e5f8..92ffde58e7 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -45,3 +45,26 @@ way.")
(description "This is a julia package that defines an IniFile type that
allows to interface with @file{.ini} files")
(license license:expat)))
+
+(define-public julia-sha
+ (package
+ (name "julia-sha")
+ (version "0.5.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/staticfloat/SHA.jl")
+ (commit (string-append "v" version))))
+ (file-name "SHA")
+ (sha256
+ (base32 "10a09kg9z0m8rvwmlgsna6p342kyvizx2axdqc6pzyhraddr8jrp"))))
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/staticfloat/SHA.jl")
+ (synopsis
+ "Performant, 100% native-julia SHA1, SHA2, and SHA3 implementation")
+ (description "Julia package implementing SHA algorithms. Each exported
+function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
+@code{IO} object.")
+ (license license:expat)))
--
2.24.1
From d1094a0e8346807904a96424d8c8c59c6a91bf40 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:07:36 +0100
Subject: [PATCH 09/11] gnu: Add julia-binaryprovider.

* gnu/packages/julia-xyz.scm (julia-binaryprovider): New variable.
---
gnu/packages/julia-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 92ffde58e7..0f8e04b4d1 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -68,3 +68,36 @@ allows to interface with @file{.ini} files")
function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
@code{IO} object.")
(license license:expat)))
+
+(define-public julia-binaryprovider
+ (package
+ (name "julia-binaryprovider")
+ (version "0.5.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (commit (string-append "v" version))))
+ (file-name "BinaryProvider")
+ (sha256
+ (base32 "174jmg4w8ncgfhdvfnm0p4cnlayw31j4s9sksqlwz1sipywqvww7"))))
+ (propagated-inputs `(("julia-sha" ,julia-sha)))
+ ;; We don't really need BinaryProvider (as guix provides the binaries) but
+ ;; since it's a dependency of other packages we want to precompile it.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-engine-probe
+ (lambda _
+ (substitute* "src/BinaryProvider.jl"
+ ;; Precompilation tries to download things from the internet,
+ ;; disable the download part
+ (("probe_platform_engines") "# probe_platform_engines"))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (synopsis "Reliable Binary provider for Julia")
+ (description "@code{BinaryProvider.jl} simplifies the installation of
+binaries required by julia packages.")
+ (license license:expat)))
--
2.24.1
From 5239d2a1c3dc713496817eb0018a062af4b280be Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:11:14 +0100
Subject: [PATCH 10/11] gnu: Add julia-mbedtls.

* gnu/packages/julia-xyz.scm (julia-mbedtls): New variable.
---
gnu/packages/julia-xyz.scm | 49 +++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0f8e04b4d1..3e9f532697 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -2,7 +2,8 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix git-download)
- #:use-module (guix build-system julia))
+ #:use-module (guix build-system julia)
+ #:use-module (gnu packages tls))
(define-public julia-compat
(package
@@ -101,3 +102,49 @@ function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
(description "@code{BinaryProvider.jl} simplifies the installation of
binaries required by julia packages.")
(license license:expat)))
+
+(define-public julia-mbedtls
+ (package
+ (name "julia-mbedtls")
+ (version "0.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/MbedTLS.jl")
+ (commit (string-append "v" version))))
+ (file-name "MbedTLS")
+ (sha256
+ (base32 "1a8snw9gi21lm6r3kh6ly7ngi99s9k5shqkfiizj3g9li20q23h2"))))
+ (propagated-inputs
+ `(("julia-binaryprovider" ,julia-binaryprovider)
+ ("mbedtls-apache" ,mbedtls-apache)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'precompile 'build-deps
+ (lambda* (#:key outputs source inputs #:allow-other-keys)
+ (let ((f (open-file
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/julia/packages/"
+ (string-append
+ (strip-store-file-name source) "/deps/deps.jl"))
+ "w")))
+ (display (string-append "const libmbedcrypto = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedcrypto.so\"\n") f)
+ (display (string-append "const libmbedtls = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedtls.so\"\n") f)
+ (display (string-append "const libmbedx509 = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedx509.so\"\n") f)
+ (close-port f))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/MbedTLS.jl")
+ (synopsis "Apache's mbed TLS library wrapper")
+ (description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
+cryptography C libary for Julia.")
+ (license license:expat)))
--
2.24.1
From bd7ba60316819b1201966dc650f50e4c320a4dfd Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:11:45 +0100
Subject: [PATCH 11/11] gnu: Add julia-http.

* gnu/packages/julia-xyz.scm (julia-http): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 3e9f532697..ff1bb483f9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -148,3 +148,27 @@ binaries required by julia packages.")
(description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
cryptography C libary for Julia.")
(license license:expat)))
+
+(define-public julia-http
+ (package
+ (name "julia-http")
+ (version "0.8.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/HTTP.jl")
+ (commit (string-append "v" version))))
+ (file-name "HTTP")
+ (sha256
+ (base32 "0928fvncfp07i5hvqxjyj8i27xmxxllas1m5idqq2i8h7jshzq3y"))))
+ (propagated-inputs
+ `(("julia-inifile" ,julia-inifile)
+ ("julia-mbedtls" ,julia-mbedtls)
+ ("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://juliaweb.github.io/HTTP.jl/")
+ (synopsis "HTTP support for Julia")
+ (description "@code{HTTP.jl} is a Julia library for HTTP Messages,
+implementing both a client and a server.")
+ (license license:expat)))
--
2.24.1
N
N
Nicolò Balzarotti wrote on 18 Jan 2020 15:35
Julia patches v3
(address . 38546@debbugs.gnu.org)
87r1zwu92d.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Sorry again, I fixed some unrelated changes that slipped in

Thanks, Nicolò
From f849311d8b97688966d5e6d93d856c7c50d9eab2 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 13:58:37 +0100
Subject: [PATCH 02/11] gnu: julia: use SOURCE_DATE_EPOCH for precompilation
timestamp

* gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch: new file
---
gnu/local.mk | 1 +
gnu/packages/julia.scm | 4 ++-
...ia-fake-mtime-with-SOURCE_DATE_EPOCH.patch | 29 +++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch

Toggle diff (64 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 00ff3b8d61..fe8634b44d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1010,6 +1010,7 @@ dist_patch_DATA = \
%D%/packages/patches/java-xerces-bootclasspath.patch \
%D%/packages/patches/java-xerces-build_dont_unzip.patch \
%D%/packages/patches/java-xerces-xjavac_taskdef.patch \
+ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/libvirt-create-machine-cgroup.patch \
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 3455dc6239..156dc722f9 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -191,7 +191,9 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))
+ (patches
+ (search-patches "julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
diff --git a/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
new file mode 100644
index 0000000000..467e6d68d1
--- /dev/null
+++ b/gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch
@@ -0,0 +1,29 @@
+From e4dc28db1d70819505fd1a68fd9d2bfc4fb61a7d Mon Sep 17 00:00:00 2001
+From: nixo <nicolo@nixo.xyz>
+Date: Fri, 17 Jan 2020 11:28:30 +0100
+Subject: [PATCH] base: loading: support fake mtime with SOURCE_DATE_EPCOCH
+
+Do this when loading libraries
+---
+ base/loading.jl | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/base/loading.jl b/base/loading.jl
+index 7f11a2d4fc..1b4686d1dc 100644
+--- a/base/loading.jl
++++ b/base/loading.jl
+@@ -807,7 +807,10 @@ function _include_dependency(mod::Module, _path::AbstractString)
+ path = normpath(joinpath(dirname(prev), _path))
+ end
+ if _track_dependencies[]
+- push!(_require_dependencies, (mod, path, mtime(path)))
++ push!(_require_dependencies,
++ (mod, path,
++ haskey(ENV, "SOURCE_DATE_EPOCH") ?
++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+ end
+ return path, prev
+ end
+--
+2.24.1
+
--
2.24.1
From a14f7c993da9ead8b497de94c112f0a3ec93ef6c Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:23:44 +0100
Subject: [PATCH 04/11] gnu: julia: use wrapper to set JULIA_LOAD_PATH and
JULIA_DEPOT_PATH

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

Toggle diff (40 lines)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 40924b0ced..39c7d6d34f 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -309,7 +309,20 @@
;; https://github.com/JuliaLang/julia/issues/32377
(substitute* "stdlib/REPL/test/replcompletions.jl"
(("@test count") "@test_broken count"))
- #t)))
+ #t))
+ (add-after 'install 'make-wrapper
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (program "julia"))
+ (with-directory-excursion bin
+ (wrap-program program
+ `("JULIA_LOAD_PATH" ":" prefix
+ ("" "$JULIA_LOAD_PATH")))
+ (wrap-program program
+ `("JULIA_DEPOT_PATH" ":" prefix
+ ("" "$JULIA_DEPOT_PATH"))))
+ #t))))
#:make-flags
(list
(string-append "prefix=" (assoc-ref %outputs "out"))
@@ -436,7 +449,10 @@
(native-search-paths
(list (search-path-specification
(variable "JULIA_LOAD_PATH")
- (files (list "share/julia/packages/")))))
+ (files (list "share/julia/packages/")))
+ (search-path-specification
+ (variable "JULIA_DEPOT_PATH")
+ (files (list "share/julia/")))))
;; Julia is not officially released for ARM and MIPS.
;; See https://github.com/JuliaLang/julia/issues/10639
(supported-systems '("i686-linux" "x86_64-linux" "aarch64-linux"))
--
2.24.1
From fe7101742199677293cdbbd34be8992c95f7bd8c Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Fri, 17 Jan 2020 19:40:55 +0100
Subject: [PATCH 05/11] gnu: build: julia-build-system: fix package
precompilation

---
guix/build/julia-build-system.scm | 51 +++++++++++++------------------
1 file changed, 22 insertions(+), 29 deletions(-)

Toggle diff (88 lines)
diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
index ff6fcf5fe3..dbd4af623d 100644
--- a/guix/build/julia-build-system.scm
+++ b/guix/build/julia-build-system.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2019, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -37,53 +37,46 @@
;; subpath where we store the package content
(define %package-path "/share/julia/packages/")
-(define (generate-load-path inputs outputs)
- (string-append
- (string-join (map (match-lambda
- ((_ . path)
- (string-append path %package-path)))
- ;; Restrict to inputs beginning with "julia-".
- (filter (match-lambda
- ((name . _)
- (string-prefix? "julia-" name)))
- inputs))
- ":")
- (string-append ":" (assoc-ref outputs "out") %package-path)
- ;; stdlib is always required to find Julia's standard libraries.
- ;; usually there are other two paths in this variable:
- ;; "@" and "@v#.#"
- ":@stdlib"))
-
(define* (install #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package-dir (string-append out %package-path
- (string-append
- (strip-store-file-name source)))))
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (strip-store-file-name source))))
(mkdir-p package-dir)
- (copy-recursively source package-dir))
+ (copy-recursively (getcwd) package-dir))
#t)
-;; TODO: Precompilation is working, but I don't know how to tell
-;; julia to use use it. If (on rantime) we set HOME to
-;; store path, julia tries to write files there (failing)
(define* (precompile #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(builddir (string-append out "/share/julia/"))
(package (strip-store-file-name source)))
(mkdir-p builddir)
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
- ;; Actual precompilation
- (invoke-julia (string-append "using " package)))
+ ;; add new package dir to the load path
+ (setenv "JULIA_LOAD_PATH"
+ (string-append builddir "packages/" ":"
+ (or (getenv "JULIA_LOAD_PATH")
+ "")))
+ ;; Actual precompilation.
+ (invoke-julia
+ ;; when using julia as a user, julia writes precompile cache to the first
+ ;; entry of the DEPOT_PATH list (by default, the home dir). We want to
+ ;; write it to the store, so let's push the store path as the first
+ ;; element of DEPOT_PATH. Once the cache file exists, this hack is not
+ ;; needed anymore (like in the check phase). If the user install new
+ ;; pacakges, those will be installed and precompiled in the home dir
+ (string-append "pushfirst!(DEPOT_PATH, pop!(DEPOT_PATH)); using " package)))
#t)
(define* (check #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package (strip-store-file-name source))
(builddir (string-append out "/share/julia/")))
+ ;; With a patch, SOURCE_DATE_EPOCH is honored
+ (setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
- (setenv "JULIA_LOAD_PATH" (generate-load-path inputs outputs))
+ (setenv "JULIA_LOAD_PATH" (string-append builddir "packages/"))
(invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")")))
#t)
--
2.24.1
From 607383a2523efd85f8ec454c31fee8fb68b38249 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:05:00 +0100
Subject: [PATCH 06/11] gnu: Add julia-compat.

* gnu/packages/julia-xyz.scm: New file
* gnu/packages/julia-xyz.scm (julia-compat): New variable
---
gnu/local.mk | 1 +
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+)
create mode 100644 gnu/packages/julia-xyz.scm

Toggle diff (47 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index fe8634b44d..e07229ee20 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -277,6 +277,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
+ %D%/packages/julia-xyz.scm \
%D%/packages/jupyter.scm \
%D%/packages/kawa.scm \
%D%/packages/kde.scm \
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
new file mode 100644
index 0000000000..7d9faa63e9
--- /dev/null
+++ b/gnu/packages/julia-xyz.scm
@@ -0,0 +1,27 @@
+(define-module (gnu packages julia-xyz)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system julia))
+
+(define-public julia-compat
+ (package
+ (name "julia-compat")
+ (version "3.2.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Compat.jl")
+ (commit (string-append "v" version))))
+ (file-name "Compat")
+ (sha256
+ (base32 "0d21h3l2ry2mmlhpg7b9cxifayzwcv7r13h5wydcbd5pjf6k4qd4"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Compat.jl")
+ (synopsis "Compatibility across Julia versions")
+ (description "The Compat package is designed to ease interoperability
+between older and newer versions of the Julia language. The Compat package
+provides a macro that lets you use the latest syntax in a backwards-compatible
+way.")
+ (license license:expat)))
--
2.24.1
From c503ef2c5421939ed28a7f6a676c9c70f812d3fb Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:06:11 +0100
Subject: [PATCH 07/11] gnu: Add julia-inifile.

* gnu/packages/julia-xyz.scm (julia-inifile): New variable.
---
gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (30 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 7d9faa63e9..6b8053e5f8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -25,3 +25,23 @@ between older and newer versions of the Julia language. The Compat package
provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+
+(define-public julia-inifile
+ (package
+ (name "julia-inifile")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/IniFile.jl")
+ (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0")))
+ (file-name "IniFile")
+ (sha256
+ (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaIO/IniFile.jl")
+ (synopsis "Reading Windows-style INI files")
+ (description "This is a julia package that defines an IniFile type that
+allows to interface with @file{.ini} files")
+ (license license:expat)))
--
2.24.1
From a2ff2e6f01b022972205d4efd47cf06e9ec1899b Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:07:13 +0100
Subject: [PATCH 08/11] gnu: Add julia-sha.

* gnu/packages/julia-xyz.scm (julia-sha): New variable.
---
gnu/packages/julia-xyz.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 6b8053e5f8..92ffde58e7 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -45,3 +45,26 @@ way.")
(description "This is a julia package that defines an IniFile type that
allows to interface with @file{.ini} files")
(license license:expat)))
+
+(define-public julia-sha
+ (package
+ (name "julia-sha")
+ (version "0.5.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/staticfloat/SHA.jl")
+ (commit (string-append "v" version))))
+ (file-name "SHA")
+ (sha256
+ (base32 "10a09kg9z0m8rvwmlgsna6p342kyvizx2axdqc6pzyhraddr8jrp"))))
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/staticfloat/SHA.jl")
+ (synopsis
+ "Performant, 100% native-julia SHA1, SHA2, and SHA3 implementation")
+ (description "Julia package implementing SHA algorithms. Each exported
+function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
+@code{IO} object.")
+ (license license:expat)))
--
2.24.1
From 189ca6851f5f57ce09e65c81e9b8f50ba0008a80 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:07:36 +0100
Subject: [PATCH 09/11] gnu: Add julia-binaryprovider.

* gnu/packages/julia-xyz.scm (julia-binaryprovider): New variable.
---
gnu/packages/julia-xyz.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 92ffde58e7..0f8e04b4d1 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -68,3 +68,36 @@ allows to interface with @file{.ini} files")
function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
@code{IO} object.")
(license license:expat)))
+
+(define-public julia-binaryprovider
+ (package
+ (name "julia-binaryprovider")
+ (version "0.5.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (commit (string-append "v" version))))
+ (file-name "BinaryProvider")
+ (sha256
+ (base32 "174jmg4w8ncgfhdvfnm0p4cnlayw31j4s9sksqlwz1sipywqvww7"))))
+ (propagated-inputs `(("julia-sha" ,julia-sha)))
+ ;; We don't really need BinaryProvider (as guix provides the binaries) but
+ ;; since it's a dependency of other packages we want to precompile it.
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-engine-probe
+ (lambda _
+ (substitute* "src/BinaryProvider.jl"
+ ;; Precompilation tries to download things from the internet,
+ ;; disable the download part
+ (("probe_platform_engines") "# probe_platform_engines"))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (synopsis "Reliable Binary provider for Julia")
+ (description "@code{BinaryProvider.jl} simplifies the installation of
+binaries required by julia packages.")
+ (license license:expat)))
--
2.24.1
From 87b37b3f041709a1926f441a9643b723ca2ef8a1 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:11:14 +0100
Subject: [PATCH 10/11] gnu: Add julia-mbedtls.

* gnu/packages/julia-xyz.scm (julia-mbedtls): New variable.
---
gnu/packages/julia-xyz.scm | 49 +++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0f8e04b4d1..3e9f532697 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -2,7 +2,8 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix git-download)
- #:use-module (guix build-system julia))
+ #:use-module (guix build-system julia)
+ #:use-module (gnu packages tls))
(define-public julia-compat
(package
@@ -101,3 +102,49 @@ function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
(description "@code{BinaryProvider.jl} simplifies the installation of
binaries required by julia packages.")
(license license:expat)))
+
+(define-public julia-mbedtls
+ (package
+ (name "julia-mbedtls")
+ (version "0.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/MbedTLS.jl")
+ (commit (string-append "v" version))))
+ (file-name "MbedTLS")
+ (sha256
+ (base32 "1a8snw9gi21lm6r3kh6ly7ngi99s9k5shqkfiizj3g9li20q23h2"))))
+ (propagated-inputs
+ `(("julia-binaryprovider" ,julia-binaryprovider)
+ ("mbedtls-apache" ,mbedtls-apache)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'precompile 'build-deps
+ (lambda* (#:key outputs source inputs #:allow-other-keys)
+ (let ((f (open-file
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/julia/packages/"
+ (string-append
+ (strip-store-file-name source) "/deps/deps.jl"))
+ "w")))
+ (display (string-append "const libmbedcrypto = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedcrypto.so\"\n") f)
+ (display (string-append "const libmbedtls = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedtls.so\"\n") f)
+ (display (string-append "const libmbedx509 = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedx509.so\"\n") f)
+ (close-port f))
+ #t)))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/MbedTLS.jl")
+ (synopsis "Apache's mbed TLS library wrapper")
+ (description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
+cryptography C libary for Julia.")
+ (license license:expat)))
--
2.24.1
From 488857fdd17d1cb8d479dd18b367b33cb449cd22 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 14:11:45 +0100
Subject: [PATCH 11/11] gnu: Add julia-http.

* gnu/packages/julia-xyz.scm (julia-http): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 3e9f532697..ff1bb483f9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -148,3 +148,27 @@ binaries required by julia packages.")
(description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
cryptography C libary for Julia.")
(license license:expat)))
+
+(define-public julia-http
+ (package
+ (name "julia-http")
+ (version "0.8.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/HTTP.jl")
+ (commit (string-append "v" version))))
+ (file-name "HTTP")
+ (sha256
+ (base32 "0928fvncfp07i5hvqxjyj8i27xmxxllas1m5idqq2i8h7jshzq3y"))))
+ (propagated-inputs
+ `(("julia-inifile" ,julia-inifile)
+ ("julia-mbedtls" ,julia-mbedtls)
+ ("julia-compat" ,julia-compat)))
+ (build-system julia-build-system)
+ (home-page "https://juliaweb.github.io/HTTP.jl/")
+ (synopsis "HTTP support for Julia")
+ (description "@code{HTTP.jl} is a Julia library for HTTP Messages,
+implementing both a client and a server.")
+ (license license:expat)))
--
2.24.1
Z
Z
zimoun wrote on 20 Jan 2020 19:49
Re: [bug#38546] [00/11] Update Julia, Fix precompilation, add HTTP.jl
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ3qBy4jTCKqsJ2msYA6zTmmWeQSU0ObaZdxc0Cg9zM-Ug@mail.gmail.com
Hi Nicolò,

Thank you for working on this.
Julia rocks! ;-)


However, I am lost with your patch set.

I have tried only the first patch you attached. I hit this error:

Toggle snippet (3 lines)
error: dsfmt: unbound variable

So something is missing. :-)

Then I notice that you change the list of 'patches' and you "forgot"
to send them too. :-)


Almost related, does this update fix the reproducibility bug [1]? For example,

Toggle snippet (5 lines)
./pre-inst-env guix build julia
./pre-inst-env guix build julia --check --no-grafts -K


N
N
Nicolò Balzarotti wrote on 21 Jan 2020 14:45
(name . zimoun)(address . zimon.toutoune@gmail.com)
87d0bcly8f.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi Simon,

Sorry, I forgot to send the dsfmt patch. Also, julia's
SOURCE_DATE_EPOCH patch was named differently. I've fixed this in theattached patches. You need to apply Add-dsfmt.patch, Update-to-1.3.1
and then julia-use-SOURCE_DATE_EPOCH.

About reproducibility: if I'm not wrong, sys.so contains Base library
precompiled ([1]). Precompilation is still non deterministic (here's
[2] an issue on github). Something I did to check precompilation:

Since I'm tired of this, I've started investigating better.

Loaded a guix container
#+begin_src bash
mkdir -p /tmp/jlprecompiled/
./pre-inst-env guix environment -u nixbld --no-cwd --container --network --expose=$(realpath determinism) --share=/tmp/jlprecompiled/ --ad-hoc julia coreutils nss-certs curl tar gzip libfaketime
#+end_src

from this container, run some time this:

#+begin_src bash
export SSL_CERT_DIR="$GUIX_ENVIRONMENT/etc/ssl/certs"
export SSL_CERT_FILE="$SSL_CERT_DIR/ca-certificates.crt"
export GIT_SSL_CAINFO="$SSL_CERT_FILE"

SOURCE_DATE_EPOCH=1 julia --startup-file=no -q -e 'using Pkg; Pkg.instantiate()'
SOURCE_DATE_EPOCH=1 faketime '2008-12-24 08:15:42' julia --startup-file=no -q -e 'using Random; using Pkg; Pkg.add("Compat"); Random.seed!(0); using Compat'

cp -r ~/.julia/compiled/v1.3/Compat/ /tmp/jlprecompiled/$RANDOM
sha256sum ~/.julia/compiled/v1.3/Compat/*
# 6c10d65f6cd9cdd5b98e4d5e2b82b7bd00508f0daccef0967dec92cb6468052e /home/nixbld/.julia/compiled/v1.3/Compat/GSFWK_Pua4I.ji
ls -lah ~/.julia/compiled/v1.3/Compat/*
# -rw------- 1 nixbld users 102K Jan 21 07:39 /home/nixbld/.julia/compiled/v1.3/Compat/GSFWK_Pua4I.ji
#+end_src

I could not get the same results twice (also, size differs). I'll work
on this on some spare time (for example, there are other places where
SOURCE_DATE_EPOCH can be used, but this [3] is a problem I need to
solve first).

Maybe 1.3.1 (when reviewed) can be merged, since we have
the same problem with julia 1.1, but we can wait for the
source-date-epoch and julia-xyz patches until we solve this.

What do you think?

Thanks, Nicolò

From 337ddd64ce4f3a00f33a90496822500dc6df2010 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 28 Dec 2019 00:10:48 +0100
Subject: [PATCH] gnu: Add dsfmt.

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

Toggle diff (76 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 8364d528fd..1d35d880bd 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -372,6 +372,69 @@ semiconductors.")
(license license:gpl3+)
(home-page "https://www.gnu.org/software/dionysus/")))
+(define-public dsfmt
+ (package
+ (name "dsfmt")
+ (version "2.2.3")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"))
+ ;; julia needs those (and is the only program depending on dsfmt now)
+ (patches
+ (list
+ (origin (method url-fetch)
+ (uri
+ "https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/patches/dSFMT.c.patch")
+ (sha256 (base32 "09mhv11bms8jsmkmdqvlcgljwhzw3b6n9nncpi2b6dla9798hw2y"))
+ (file-name "dSFMT.c.patch"))
+ (origin (method url-fetch)
+ (uri
+ "https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/patches/dSFMT.h.patch")
+ (sha256 (base32 "1py5rd0yxic335lzka23f6x2dhncrpizpyrk57gi2f28c0p98y5n"))
+ (file-name "dSFMT.h.patch"))))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (replace 'build
+ ;; upstream Makefile does not build a shared library
+ (lambda _
+ (invoke
+ "gcc"
+ ;; flags copied from julia
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.0/deps/dsfmt.mk
+ "-DNDEBUG" "-DDSFMT_MEXP=19937"
+ "-fPIC" "-DDSFMT_DO_NOT_USE_OLD_NAMES"
+ "-O3" "-finline-functions" "-fomit-frame-pointer"
+ "-fno-strict-aliasing" "--param" "max-inline-insns-single=1800"
+ "-Wmissing-prototypes" "-Wall" "-std=c99" "-shared" "dSFMT.c"
+ "-o" "libdSFMT.so")))
+ (replace 'install ;no "install" target
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib (string-append (assoc-ref outputs "out")
+ "/lib"))
+ (inc (string-append (assoc-ref outputs "out")
+ "/include")))
+ (install-file "libdSFMT.so" lib)
+ (install-file "dSFMT.h" inc)
+ #t))))))
+ (synopsis "Double precision SIMD-oriented Fast Mersenne Twister")
+ (description "Speed up Fast Mersenne Twister generation by avoiding the
+expensive conversion of integer to double (floating point). dSFMT directly
+generates double precision floating point pseudorandom numbers which have the
+IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985)
+format. dSFMT is only available on the CPUs which use IEEE 754 format double
+precision floating point numbers.")
+ (home-page "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/")
+ (license license:bsd-3)))
+
(define-public gsl
(package
(name "gsl")
--
2.25.0
From f33153f5f185562d01cfbfbfed43732483132f84 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 18 Jan 2020 13:58:37 +0100
Subject: [PATCH] gnu: julia: use SOURCE_DATE_EPOCH for precompilation
timestamp

* gnu/packages/patches/julia-fake-mtime-with-SOURCE_DATE_EPOCH.patch: new file
---
gnu/local.mk | 1 +
gnu/packages/julia.scm | 4 ++-
.../julia-SOURCE_DATE_EPOCH-mtime.patch | 29 +++++++++++++++++++
3 files changed, 33 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch

Toggle diff (64 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 00ff3b8d61..fe8634b44d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1010,6 +1010,7 @@ dist_patch_DATA = \
%D%/packages/patches/java-xerces-bootclasspath.patch \
%D%/packages/patches/java-xerces-build_dont_unzip.patch \
%D%/packages/patches/java-xerces-xjavac_taskdef.patch \
+ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/libvirt-create-machine-cgroup.patch \
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 3455dc6239..794980c12f 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -191,7 +191,9 @@
version "/julia-" version ".tar.gz"))
(sha256
(base32
- "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))))
+ "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x"))
+ (patches
+ (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
diff --git a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
new file mode 100644
index 0000000000..467e6d68d1
--- /dev/null
+++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch
@@ -0,0 +1,29 @@
+From e4dc28db1d70819505fd1a68fd9d2bfc4fb61a7d Mon Sep 17 00:00:00 2001
+From: nixo <nicolo@nixo.xyz>
+Date: Fri, 17 Jan 2020 11:28:30 +0100
+Subject: [PATCH] base: loading: support fake mtime with SOURCE_DATE_EPCOCH
+
+Do this when loading libraries
+---
+ base/loading.jl | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/base/loading.jl b/base/loading.jl
+index 7f11a2d4fc..1b4686d1dc 100644
+--- a/base/loading.jl
++++ b/base/loading.jl
+@@ -807,7 +807,10 @@ function _include_dependency(mod::Module, _path::AbstractString)
+ path = normpath(joinpath(dirname(prev), _path))
+ end
+ if _track_dependencies[]
+- push!(_require_dependencies, (mod, path, mtime(path)))
++ push!(_require_dependencies,
++ (mod, path,
++ haskey(ENV, "SOURCE_DATE_EPOCH") ?
++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path)))
+ end
+ return path, prev
+ end
+--
+2.24.1
+
--
2.25.0
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (33 lines)
> Hi Nicolò,
>
> Thank you for working on this.
> Julia rocks! ;-)
>
>
> However, I am lost with your patch set.
>
> I have tried only the first patch you attached. I hit this error:
>
> --8<---------------cut here---------------start------------->8---
> error: dsfmt: unbound variable
> --8<---------------cut here---------------end--------------->8---
>
> So something is missing. :-)
>
> Then I notice that you change the list of 'patches' and you "forgot"
> to send them too. :-)
>
>
> Almost related, does this update fix the reproducibility bug [1]? For example,
>
> --8<---------------cut here---------------start------------->8---
> ./pre-inst-env guix build julia
> ./pre-inst-env guix build julia --check --no-grafts -K
> --8<---------------cut here---------------end--------------->8---
>
>
> [1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22304
>
>
> All the best,
> simon
Z
Z
zimoun wrote on 22 Jan 2020 10:22
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ3p6dkJyiwBqjjaG0Vnn0s07+7YxUG_Mdc3Eq5ixC3qDA@mail.gmail.com
Hi Nicolò,

Cool that you figured out a source of non-reproducibility.


On Tue, 21 Jan 2020 at 14:45, Nicolò Balzarotti <anothersms@gmail.com> wrote:

Toggle quote (4 lines)
> Sorry, I forgot to send the dsfmt patch. Also, julia's
> SOURCE_DATE_EPOCH patch was named differently. I've fixed this in theattached patches. You need to apply Add-dsfmt.patch, Update-to-1.3.1
> and then julia-use-SOURCE_DATE_EPOCH.

This patch 'julia-SOURCE_DATE_EPOCH-mtime.patch' is the one you
mentioned here [#], right?

Could you send it as an upstream PR?



Toggle quote (4 lines)
> About reproducibility: if I'm not wrong, sys.so contains Base library
> precompiled ([1]). Precompilation is still non deterministic (here's
> [2] an issue on github). Something I did to check precompilation:

I am not sure to well understand the source of non-determinism.

Does the patch about SOURCE_DATE_EPOCH fix the issue of [1] and [2]?
Or is it something else?


Toggle quote (5 lines)
> I could not get the same results twice (also, size differs). I'll work
> on this on some spare time (for example, there are other places where
> SOURCE_DATE_EPOCH can be used, but this [3] is a problem I need to
> solve first).

Is the problem [3] not solved by 'julia-SOURCE_DATE_EPOCH-mtime.patch'?



Toggle quote (4 lines)
> Maybe 1.3.1 (when reviewed) can be merged, since we have
> the same problem with julia 1.1, but we can wait for the
> source-date-epoch and julia-xyz patches until we solve this.

My opinion is: if a patch is floating around to fix the
source-date-epoch issue, let try to push it upstream. If it is
rejected, let talk later if Guix will include it or not. And in the
meantime, I will try to review the 1.3.1 because yes I agree that it
should be included even if we know it is not reproducible -- the
package Guitarix [@] is updated and not reproducible neither.



Thank you for working on this.


All the best,
simon


Toggle quote (3 lines)
> [2] https://github.com/JuliaLang/julia/issues/25900
> [3] https://github.com/JuliaLang/julia/issues/34115
N
N
Nicolò Balzarotti wrote on 22 Jan 2020 10:59
(name . zimoun)(address . zimon.toutoune@gmail.com)
877e1jdd62.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi Simon,

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

Toggle quote (29 lines)
> Hi Nicolò,
>
> Cool that you figured out a source of non-reproducibility.
>
>
> On Tue, 21 Jan 2020 at 14:45, Nicolò Balzarotti <anothersms@gmail.com> wrote:
>
>> Sorry, I forgot to send the dsfmt patch. Also, julia's
>> SOURCE_DATE_EPOCH patch was named differently. I've fixed this in theattached patches. You need to apply Add-dsfmt.patch, Update-to-1.3.1
>> and then julia-use-SOURCE_DATE_EPOCH.
>
> This patch 'julia-SOURCE_DATE_EPOCH-mtime.patch' is the one you
> mentioned here [#], right?
>
> Could you send it as an upstream PR?
>
> [#] https://github.com/JuliaLang/julia/issues/34115#issuecomment-568171025
>
>
>> About reproducibility: if I'm not wrong, sys.so contains Base library
>> precompiled ([1]). Precompilation is still non deterministic (here's
>> [2] an issue on github). Something I did to check precompilation:
>
> I am not sure to well understand the source of non-determinism.
>
> Does the patch about SOURCE_DATE_EPOCH fix the issue of [1] and [2]?
> Or is it something else?
>

The first patch (the one I mention in [#]) fixes _one source of_
non-determinism (the stored mtime inside the precompile cache). But
others are present (precompiling the same file 2 times lead to
differences even in file size, something I reported on [2]). What I'm
working on is trying to find out what other sources are and patch them,
too. I patched some c code (src/support/timefuncs.c) so that it follows
SOURCE_DATE_EPOCH too. This finally lead to same-size files. I'm now
working on parsing binary (.ji) files directly with julia built in
function to have a textual representation of the differences.

I can't send SOURCE_DATE_EPOCH patches upstream until [3] is merged, as
patching timefuncts leads to an endless test suite (as they were using
time() to check for passed time. If time() always returns 1, tests
sleeps forever). Yesterday evening I completed that patch (and has been
approved). My plans are on finding the hopefully last source of
non-determinism, patch it and send everything upstream (hoping they
care).

Toggle quote (22 lines)
>
>> I could not get the same results twice (also, size differs). I'll work
>> on this on some spare time (for example, there are other places where
>> SOURCE_DATE_EPOCH can be used, but this [3] is a problem I need to
>> solve first).
>
> Is the problem [3] not solved by 'julia-SOURCE_DATE_EPOCH-mtime.patch'?
>
>
>
>> Maybe 1.3.1 (when reviewed) can be merged, since we have
>> the same problem with julia 1.1, but we can wait for the
>> source-date-epoch and julia-xyz patches until we solve this.
>
> My opinion is: if a patch is floating around to fix the
> source-date-epoch issue, let try to push it upstream. If it is
> rejected, let talk later if Guix will include it or not. And in the
> meantime, I will try to review the 1.3.1 because yes I agree that it
> should be included even if we know it is not reproducible -- the
> package Guitarix [@] is updated and not reproducible neither.
>

Thanks! I hope in a 1.4 release where everything is fixed ;)

Nicolò

Toggle quote (13 lines)
>
>
> Thank you for working on this.
>
>
> All the best,
> simon
>
>
>> [1] https://docs.julialang.org/en/v1/devdocs/sysimg/
>> [2] https://github.com/JuliaLang/julia/issues/25900
>> [3] https://github.com/JuliaLang/julia/issues/34115
Z
Z
zimoun wrote on 24 Jan 2020 18:26
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ19pt6aq0niwQDKfOES8TMGzDBXVmMS3aiRTFcBXithpQ@mail.gmail.com
Hi Nicolò,

On Wed, 22 Jan 2020 at 10:59, Nicolò Balzarotti <anothersms@gmail.com> wrote:

Toggle quote (10 lines)
> The first patch (the one I mention in [#]) fixes _one source of_
> non-determinism (the stored mtime inside the precompile cache). But
> others are present (precompiling the same file 2 times lead to
> differences even in file size, something I reported on [2]). What I'm
> working on is trying to find out what other sources are and patch them,
> too. I patched some c code (src/support/timefuncs.c) so that it follows
> SOURCE_DATE_EPOCH too. This finally lead to same-size files. I'm now
> working on parsing binary (.ji) files directly with julia built in
> function to have a textual representation of the differences.

Thank you for the explanations. Cool!


Toggle quote (8 lines)
> I can't send SOURCE_DATE_EPOCH patches upstream until [3] is merged, as
> patching timefuncts leads to an endless test suite (as they were using
> time() to check for passed time. If time() always returns 1, tests
> sleeps forever). Yesterday evening I completed that patch (and has been
> approved). My plans are on finding the hopefully last source of
> non-determinism, patch it and send everything upstream (hoping they
> care).

Awesome if upstream are responsive.


Toggle quote (2 lines)
> Thanks! I hope in a 1.4 release where everything is fixed ;)

I have seen that 1.4-rc1 is just released. Hope that everything about
reproducibility will be fixed. ;-)


I have not yet tried your patches. Sorry bit busy at work.
And I will not have any slot next week, so I will be back on the topic
after the Guix Days. Except if someone beats me. :-)
(see you there :-)


Thank you for improving the Julia ecosystem in Guix because Julia is
becoming quite popular.

Cheers,
simon
Z
Z
zimoun wrote on 4 Feb 2020 19:03
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ3xcGohx0sU7Tz-_h+neocE0KPZ59CncUTQQLOzK_ykeA@mail.gmail.com
Hi Nicoló,

On Fri, 24 Jan 2020 at 18:26, zimoun <zimon.toutoune@gmail.com> wrote:

Toggle quote (5 lines)
> I have not yet tried your patches. Sorry bit busy at work.
> And I will not have any slot next week, so I will be back on the topic
> after the Guix Days. Except if someone beats me. :-)
> (see you there :-)

I have tried them. Ouch! The tests eat so much...

Do you have a special motivation to rename 'llvm-patch' to 'julia-patch'?
(I agree, it is better :-))

Well, only 2 inputs are missing. Do you think it is affordable to pack
them and so remove the commentary?

Toggle snippet (8 lines)
;; FIXME: The following inputs are downloaded from upstream to allow us
;; to use the lightweight Julia release tarball. Ideally, these inputs
;; would eventually be replaced with proper Guix packages.
;; Find dependencies versions here:
;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make


Otherwise, there is some issues about indentation -- I think you use
Emacs, so check that '.dir-locals.el' is correctly setup -- double
space for sentences in description,
'patch/julia-SOURCE_DATE_EPOCH-mtime.patch' should be added with the
same commit that "Update", etc.
I have half-corrected so I can send you these 2 v2-patches if you want to. :-)

And I have not tried yet to build with '--check'.


All the best,
simon
Z
Z
zimoun wrote on 7 Feb 2020 13:06
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ3a7_LV55vhe449ETFaTqdSZp7D3Rvr0ipnvkdKr3i_QQ@mail.gmail.com
Hi Nicoló,


On Tue, 4 Feb 2020 at 19:03, zimoun <zimon.toutoune@gmail.com> wrote:

Toggle quote (2 lines)
> I have tried them. Ouch! The tests eat so much...

The tests fail on my desktop machine with 8GB of RAM.

Toggle snippet (29 lines)
running testset Distributed...
ERROR: LoadError: TaskFailedException:
Timed out waiting to read host:port string from worker.
Stacktrace:
[1] worker_from_id(::Distributed.ProcessGroup, ::Int64) at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/cluster.jl:1059
[2] worker_from_id at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/cluster.jl:1056
[inlined]
[3] #remote_do#156 at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/remotecall.jl:482
[inlined]
[4] remote_do at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/remotecall.jl:482
[inlined]
[5] kill at /tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/managers.jl:534
[inlined]
[6] create_worker(::Distributed.LocalManager, ::WorkerConfig) at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/cluster.jl:581
[7] setup_launched_worker(::Distributed.LocalManager, ::WorkerConfig,
::Array{Int64,1}) at
/tmp/guix-build-julia-1.3.1.drv-0/julia-1.3.1/usr/share/julia/stdlib/v1.3/Distributed/src/cluster.jl:523
[8] (::Distributed.var"#43#46"{Distributed.LocalManager,Array{Int64,1},WorkerConfig})()
at ./task.jl:333

[...more failed...]


Do they pass on your machine?


Toggle quote (2 lines)
> And I have not tried yet to build with '--check'.

Still not reproducible as expected [1]. :-)



Cheers,
simon

ps:
I think you are busy by your thesis. Cross the fingers. ;-)
Z
Z
zimoun wrote on 11 Feb 2020 15:51
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ38fzeaLjGjQkNq3EYv7JSxEpsn9zgnnyt3E9WaQQZxSQ@mail.gmail.com
Hi Nicoló,

I have seen your message on IRC.
Cool for the release 1.4.


Could we try to include first this 1.3 one? Then push the 1.4 if it
is already ready.

Because then, this release will be usable "forever" (or almost ;-)
even if it is not perfect and issues are fixed with the 1.4.
I mean, once a package is inside Guix, then it becomes "easily" usable
with 'guix time-machine' and saved on Software Heritage.
Therefore, considering the big picture of Scientific Reproducibility,
it matters -- for the future to be able to travel back -- to also have
1.3. ;-)

I think we are almost done. From my point of view, we just need to
address (or comment) these 3 points:

1.
Toggle quote (4 lines)
> Do you have a special motivation to rename 'llvm-patch' to 'julia-patch'?
> (I agree, it is better :-))


2.
Toggle quote (12 lines)
> Well, only 2 inputs are missing. Do you think it is affordable to pack
> them and so remove the commentary?
>
> --8<---------------cut here---------------start------------->8---
> ;; FIXME: The following inputs are downloaded from upstream to allow us
> ;; to use the lightweight Julia release tarball. Ideally, these inputs
> ;; would eventually be replaced with proper Guix packages.
> ;; Find dependencies versions here:
> ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
> --8<---------------cut here---------------end--------------->8---


3.
Toggle quote (9 lines)
> Otherwise, there is some issues about indentation -- I think you use
> Emacs, so check that '.dir-locals.el' is correctly setup -- double
> space for sentences in description,
> 'patch/julia-SOURCE_DATE_EPOCH-mtime.patch' should be added with the
> same commit that "Update", etc.
> I have half-corrected so I can send you these 2 v2-patches if you want to. :-)



What do you think?


Cheers,
simon
N
N
Nicolò Balzarotti wrote on 11 Feb 2020 16:10
(name . zimoun)(address . zimon.toutoune@gmail.com)
87lfp9dusm.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Hi,
Toggle quote (18 lines)
> Hi Nicoló,
>
> I have seen your message on IRC.
> Cool for the release 1.4.
>
>
> Could we try to include first this 1.3 one? Then push the 1.4 if it
> is already ready.
>
> Because then, this release will be usable "forever" (or almost ;-)
> even if it is not perfect and issues are fixed with the 1.4.
> I mean, once a package is inside Guix, then it becomes "easily" usable
> with 'guix time-machine' and saved on Software Heritage.
> Therefore, considering the big picture of Scientific Reproducibility,
> it matters -- for the future to be able to travel back -- to also have
> 1.3. ;-)
>

Ok, let's do both
Toggle quote (7 lines)
> I think we are almost done. From my point of view, we just need to
> address (or comment) these 3 points:
>
> 1.
>> Do you have a special motivation to rename 'llvm-patch' to 'julia-patch'?
>> (I agree, it is better :-))
>
Yes, because now it's not only used by llvm-julia but also by the new
libunwind-julia. So calling llvm-patch a function that takes a patch
from the julia repo and that is applied to a "julia module" is measleading.

Toggle quote (14 lines)
>
> 2.
>> Well, only 2 inputs are missing. Do you think it is affordable to pack
>> them and so remove the commentary?
>>
>> --8<---------------cut here---------------start------------->8---
>> ;; FIXME: The following inputs are downloaded from upstream to allow us
>> ;; to use the lightweight Julia release tarball. Ideally, these inputs
>> ;; would eventually be replaced with proper Guix packages.
>> ;; Find dependencies versions here:
>> ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
>> --8<---------------cut here---------------end--------------->8---
>

I indeed tried. The main problem is that in the Makefile there's no
USE_SYSTEM_{OBJCONV/LIBWHICH}, and I didn't want to mess with the it.
But yes, I think I could at least try again.

Toggle quote (10 lines)
>
> 3.
>> Otherwise, there is some issues about indentation -- I think you use
>> Emacs, so check that '.dir-locals.el' is correctly setup -- double
>> space for sentences in description,
>> 'patch/julia-SOURCE_DATE_EPOCH-mtime.patch' should be added with the
>> same commit that "Update", etc.
>> I have half-corrected so I can send you these 2 v2-patches if you want to. :-)
>
>
If you already fixed them, yes please send a v2 patch and I'll continue
working from there.

Toggle quote (3 lines)
>
> What do you think?
>
Fine for me, do we need also to debug a broken test right?
Toggle quote (5 lines)
>
> Cheers,
> simon


Nicolò
Z
Z
zimoun wrote on 11 Feb 2020 16:19
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ3uhRfg8Z4upVhkeACbp8GBty+oiBjoGNEiOKtaGKuvpQ@mail.gmail.com
On Tue, 11 Feb 2020 at 16:10, Nicolò Balzarotti <anothersms@gmail.com> wrote:

Toggle quote (8 lines)
> > 1.
> >> Do you have a special motivation to rename 'llvm-patch' to 'julia-patch'?
> >> (I agree, it is better :-))
> >
> Yes, because now it's not only used by llvm-julia but also by the new
> libunwind-julia. So calling llvm-patch a function that takes a patch
> from the julia repo and that is applied to a "julia module" is measleading.

Ok.


Toggle quote (16 lines)
> > 2.
> >> Well, only 2 inputs are missing. Do you think it is affordable to pack
> >> them and so remove the commentary?
> >>
> >> --8<---------------cut here---------------start------------->8---
> >> ;; FIXME: The following inputs are downloaded from upstream to allow us
> >> ;; to use the lightweight Julia release tarball. Ideally, these inputs
> >> ;; would eventually be replaced with proper Guix packages.
> >> ;; Find dependencies versions here:
> >> ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
> >> --8<---------------cut here---------------end--------------->8---
>
> I indeed tried. The main problem is that in the Makefile there's no
> USE_SYSTEM_{OBJCONV/LIBWHICH}, and I didn't want to mess with the it.
> But yes, I think I could at least try again.

Let me check how it will be crawled by SWH to be sure that Guix will
be able to still build Julia 1.3 even if GitHub does not exist
anymore.
And I am in favour to let these 2 inputs.


Toggle quote (11 lines)
> > 3.
> >> Otherwise, there is some issues about indentation -- I think you use
> >> Emacs, so check that '.dir-locals.el' is correctly setup -- double
> >> space for sentences in description,
> >> 'patch/julia-SOURCE_DATE_EPOCH-mtime.patch' should be added with the
> >> same commit that "Update", etc.
> >> I have half-corrected so I can send you these 2 v2-patches if you want to. :-)
> >
> If you already fixed them, yes please send a v2 patch and I'll continue
> working from there.

Stay tuned. :-)
I try to send it today...


Toggle quote (2 lines)
> Fine for me, do we need also to debug a broken test right?

I do not know if the test are broken. I am not able to run them on my
desktop machine. Not enough memory.


Cheers,
simon
N
N
Nicolò Balzarotti wrote on 11 Feb 2020 16:24
(name . zimoun)(address . zimon.toutoune@gmail.com)
87imkddu4b.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Hi

Toggle quote (49 lines)
> On Tue, 11 Feb 2020 at 16:10, Nicolò Balzarotti <anothersms@gmail.com> wrote:
>
>> > 1.
>> >> Do you have a special motivation to rename 'llvm-patch' to 'julia-patch'?
>> >> (I agree, it is better :-))
>> >
>> Yes, because now it's not only used by llvm-julia but also by the new
>> libunwind-julia. So calling llvm-patch a function that takes a patch
>> from the julia repo and that is applied to a "julia module" is measleading.
>
> Ok.
>
>
>> > 2.
>> >> Well, only 2 inputs are missing. Do you think it is affordable to pack
>> >> them and so remove the commentary?
>> >>
>> >> --8<---------------cut here---------------start------------->8---
>> >> ;; FIXME: The following inputs are downloaded from upstream to allow us
>> >> ;; to use the lightweight Julia release tarball. Ideally, these inputs
>> >> ;; would eventually be replaced with proper Guix packages.
>> >> ;; Find dependencies versions here:
>> >> ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make
>> >> --8<---------------cut here---------------end--------------->8---
>>
>> I indeed tried. The main problem is that in the Makefile there's no
>> USE_SYSTEM_{OBJCONV/LIBWHICH}, and I didn't want to mess with the it.
>> But yes, I think I could at least try again.
>
> Let me check how it will be crawled by SWH to be sure that Guix will
> be able to still build Julia 1.3 even if GitHub does not exist
> anymore.
> And I am in favour to let these 2 inputs.
>
>
>> > 3.
>> >> Otherwise, there is some issues about indentation -- I think you use
>> >> Emacs, so check that '.dir-locals.el' is correctly setup -- double
>> >> space for sentences in description,
>> >> 'patch/julia-SOURCE_DATE_EPOCH-mtime.patch' should be added with the
>> >> same commit that "Update", etc.
>> >> I have half-corrected so I can send you these 2 v2-patches if you want to. :-)
>> >
>> If you already fixed them, yes please send a v2 patch and I'll continue
>> working from there.
>
> Stay tuned. :-)
> I try to send it today...
>
Don't worry, I'm still working on my PhD thesis so my spare time until
the end of the week is low :D
Toggle quote (6 lines)
>
>> Fine for me, do we need also to debug a broken test right?
>
> I do not know if the test are broken. I am not able to run them on my
> desktop machine. Not enough memory.
>
Ok, so I'll run tests a few times on my server then
Toggle quote (4 lines)
>
> Cheers,
> simon

Thanks, Nicolò
Z
Z
zimoun wrote on 11 Feb 2020 18:42
control #38546 retitle
(address . control@debbugs.gnu.org)
CAJ3okZ3SyaELVEE80-LjZrkVOFF=fU-xG9Suw2TbrpY6MAb3ZQ@mail.gmail.com
retitle 38546 Update Julia to 1.3.1.
thanks
Z
Z
zimoun wrote on 11 Feb 2020 18:58
[PATCH v4] Update Julia 1.3.1: almost done
CAJ3okZ1SaicNCyXmreOWsByyirkuPD3JSvmAR_Vza=OiKTeRmw@mail.gmail.com
Hi,

Please find attach the almost updated julia using 2 patches. The first
add a dependency and the second update and patch.

I hope that I do not screw up the indentation; sometimes my Emacs does
weird stuff. Anyway.

If it is fine with you, please ping Ludo or any committer. :-)


Cheers,
simon
From c9fb979b67f15ff9f4744af21d1e91017037af17 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Sat, 28 Dec 2019 00:10:48 +0100
Subject: [PATCH v4 1/2] gnu: Add dsfmt.

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

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

Friendly ping. :-)


On Tue, 11 Feb 2020 at 18:58, zimoun <zimon.toutoune@gmail.com> wrote:
Toggle quote (14 lines)
>
> Hi,
>
> Please find attach the almost updated julia using 2 patches. The first
> add a dependency and the second update and patch.
>
> I hope that I do not screw up the indentation; sometimes my Emacs does
> weird stuff. Anyway.
>
> If it is fine with you, please ping Ludo or any committer. :-)
>
>
> Cheers,
> simon
N
N
Nicolò Balzarotti wrote on 24 Feb 2020 21:59
Re: [bug#38546] [PATCH v4] Update Julia 1.3.1: almost done
87imjvwvjx.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (2 lines)
> Hi,
>
Hi,
Toggle quote (3 lines)
> Friendly ping. :-)
>

Here's a friendly 1.3.1 + HTTP.jl + dependencies patch submission.
Hopefully this time it's fine. Package precompilation should be working
now (except json, whose cache, for some reason, is not valid and gets
rebuilt).
As a reminder: determinism is still not addressed and will be fixed in
the 1.4.0 release (hopefully, upstream is still not that responsive).
However, there are dozens of julia packages that I want to package, so
if this first batch is finally fine, more will come.
From aa02b06ade12613f81ddc0415fb0eecffb808352 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:06:28 +0100
Subject: [PATCH 01/16] gnu: Add dsfmt.

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

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

* gnu/packages/julia-xyz.scm (julia-compat): New variable.
* gnu/packages/julia-xyz.scm: New file.
* gnu/local.mk: Add gnu/packages/julia-xyz.scm.
---
gnu/local.mk | 1 +
gnu/packages/julia-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+)
create mode 100644 gnu/packages/julia-xyz.scm

Toggle diff (65 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c2273d5745..1ebcc45a4c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -281,6 +281,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/jrnl.scm \
%D%/packages/jose.scm \
%D%/packages/julia.scm \
+ %D%/packages/julia-xyz.scm \
%D%/packages/jupyter.scm \
%D%/packages/kawa.scm \
%D%/packages/kde.scm \
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
new file mode 100644
index 0000000000..abcfc4d0cf
--- /dev/null
+++ b/gnu/packages/julia-xyz.scm
@@ -0,0 +1,45 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages julia-xyz)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system julia))
+
+(define-public julia-compat
+ (package
+ (name "julia-compat")
+ (version "3.6.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Compat.jl")
+ (commit (string-append "v" version))))
+ (file-name "Compat")
+ (sha256
+ (base32 "0dxy0kpwgz3a9w665lp154x9yrnic89f2b27b1nmh69jhnnb2zgr"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Compat.jl")
+ (synopsis "Compatibility across Julia versions")
+ (description "The Compat package is designed to ease interoperability
+between older and newer versions of the Julia language. The Compat package
+provides a macro that lets you use the latest syntax in a backwards-compatible
+way.")
+ (license license:expat)))
--
2.25.0
From a7a34a28d99bd9411d18e0e7f3d4efb406f2a817 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:33:08 +0100
Subject: [PATCH 05/16] gnu: Add julia-sha.

* gnu/packages/julia-xyz.scm (julia-sha): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index abcfc4d0cf..91d497a0ce 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -43,3 +43,27 @@ between older and newer versions of the Julia language. The Compat package
provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+
+(define-public julia-sha
+ (package
+ (name "julia-sha")
+ (version "0.5.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/staticfloat/SHA.jl")
+ ;; tests fixed in this untagged version
+ (commit "97b17a7fabf894257726c33cbd78255ac380906d")))
+ (file-name "SHA")
+ (sha256
+ (base32 "169y78cmppj117cmh8ncnyh381caf9dsklaks5l40mia9jdcqbgl"))))
+ (build-system julia-build-system)
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (home-page "https://github.com/staticfloat/SHA.jl")
+ (synopsis
+ "Performant, 100% native-julia SHA1, SHA2, and SHA3 implementation")
+ (description "Julia package implementing SHA algorithms. Each exported
+function takes in either an @code{Array{UInt8}}, a @code{ByteString} or an
+@code{IO} object.")
+ (license license:expat)))
--
2.25.0
From 3fae18e43bd9cd0931d153a0b47bd2ba90d7eedb Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:42:00 +0100
Subject: [PATCH 06/16] gnu: Add julia-binaryprovider.

* gnu/packages/julia-xyz.scm (julia-binaryprovider): New variable.
---
gnu/packages/julia-xyz.scm | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)

Toggle diff (41 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 91d497a0ce..86c0a6c3e9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -20,7 +20,33 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix git-download)
- #:use-module (guix build-system julia))
+ #:use-module (guix build-system julia)
+ #:use-module (gnu packages curl))
+
+(define-public julia-binaryprovider
+ (package
+ (name "julia-binaryprovider")
+ (version "0.5.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (commit (string-append "v" version))))
+ (file-name "BinaryProvider")
+ (sha256
+ (base32 "174jmg4w8ncgfhdvfnm0p4cnlayw31j4s9sksqlwz1sipywqvww7"))))
+ (build-system julia-build-system)
+ ;; We don't really need BinaryProvider (as guix provides the binaries) but
+ ;; since it's a dependency of other packages we want to precompile it.
+ (arguments `(#:tests? #f))
+ (propagated-inputs `(("julia-sha" ,julia-sha)))
+ (inputs `(("curl" ,curl)))
+ (home-page "https://github.com/JuliaPackaging/BinaryProvider.jl")
+ (synopsis "Reliable Binary provider for Julia")
+ (description "@code{BinaryProvider.jl} simplifies the installation of
+binaries required by julia packages.")
+ (license license:expat)))
(define-public julia-compat
(package
--
2.25.0
From 3f4e7fdbe183b950ef57c71b25de13ffc29eea68 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:42:59 +0100
Subject: [PATCH 07/16] gnu: Add julia-inifile.

* gnu/packages/julia-xyz.scm (julia-inifile): New variable.
---
gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 86c0a6c3e9..213aa0543c 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -70,6 +70,26 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+(define-public julia-inifile
+ (package
+ (name "julia-inifile")
+ (version "0.5.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/IniFile.jl")
+ (commit "8ba59958495fa276d6489d2c3903e765d75e0bc0")))
+ (file-name "IniFile")
+ (sha256
+ (base32 "11h6f99jpbg729lplw841m68jprka7q3n8yw390bndlmcdsjabpd"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaIO/IniFile.jl")
+ (synopsis "Reading Windows-style INI files")
+ (description "This is a julia package that defines an IniFile type that
+allows to interface with @file{.ini} files.")
+ (license license:expat)))
+
(define-public julia-sha
(package
(name "julia-sha")
--
2.25.0
From 44e8535f4e8b72cdb99c396dab53badcd5b02073 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:43:37 +0100
Subject: [PATCH 08/16] gnu: Add julia-mbedtls.

* gnu/packages/julia-xyz.scm (julia-mbedtls): New variable.
---
gnu/packages/julia-xyz.scm | 55 +++++++++++++++++++++++++++++++++++++-
1 file changed, 54 insertions(+), 1 deletion(-)

Toggle diff (75 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 213aa0543c..508b4835ca 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -21,7 +21,8 @@
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system julia)
- #:use-module (gnu packages curl))
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages tls))
(define-public julia-binaryprovider
(package
@@ -90,6 +91,58 @@ way.")
allows to interface with @file{.ini} files.")
(license license:expat)))
+(define-public julia-mbedtls
+ (package
+ (name "julia-mbedtls")
+ (version "0.7.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/MbedTLS.jl")
+ (commit (string-append "v" version))))
+ (file-name "MbedTLS")
+ (sha256
+ (base32 "1a8snw9gi21lm6r3kh6ly7ngi99s9k5shqkfiizj3g9li20q23h2"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-binaryprovider" ,julia-binaryprovider)))
+ (inputs `(("mbedtls-apache" ,mbedtls-apache)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'disable-network-tests
+ (lambda _
+ (substitute* "test/runtests.jl"
+ (("testhost =") "return #"))
+ #t))
+ ;; Add binary dependency paths
+ (add-before 'precompile 'build-deps
+ (lambda* (#:key outputs source inputs #:allow-other-keys)
+ (let ((f (open-file
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/julia/packages/"
+ (string-append
+ (strip-store-file-name source) "/deps/deps.jl"))
+ "w")))
+ (display (string-append "const libmbedcrypto = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedcrypto.so\"\n") f)
+ (display (string-append "const libmbedtls = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedtls.so\"\n") f)
+ (display (string-append "const libmbedx509 = \""
+ (assoc-ref inputs "mbedtls-apache")
+ "/lib/libmbedx509.so\"\n") f)
+ (close-port f))
+ #t)))))
+ (home-page "https://github.com/JuliaLang/MbedTLS.jl")
+ (synopsis "Apache's mbed TLS library wrapper")
+ (description "@code{MbedTLS.jl} provides a wrapper around the mbed TLS and
+cryptography C libary for Julia.")
+ (license license:expat)))
+
(define-public julia-sha
(package
(name "julia-sha")
--
2.25.0
From 2f205551cf5193a4d41541ba772b1db10f2f9248 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:46:35 +0100
Subject: [PATCH 09/16] gnu: Add julia-bufferedstreams.

* gnu/packages/julia-xyz.scm (julia-bufferedstreams): New variable.
---
gnu/packages/julia-xyz.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 508b4835ca..c26765f2a4 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -49,6 +49,31 @@
binaries required by julia packages.")
(license license:expat)))
+(define-public julia-bufferedstreams
+ (package
+ (name "julia-bufferedstreams")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/BioJulia/BufferedStreams.jl")
+ (commit (string-append "v" version))))
+ (file-name "BufferedStreams")
+ (sha256
+ (base32 "0sf4sxbq55mg2pwxyxf0c839z1lk0yxg8nmb7617bfbvw31cp88z"))))
+ (build-system julia-build-system)
+ ;; tests are freezing, see
+ ;; https://travis-ci.org/BioJulia/BufferedStreams.jl/jobs/491050182
+ (arguments '(#:tests? #f))
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (home-page "https://github.com/BioJulia/BufferedStreams.jl")
+ (synopsis "Fast composable IO streams")
+ (description "@code{BufferedStreams} provides buffering for IO
+operations. It can wrap any IO type automatically making incremental reading
+and writing faster.")
+ (license license:expat)))
+
(define-public julia-compat
(package
(name "julia-compat")
--
2.25.0
From 5a906605765854b7955a8530e89f63959f3cc2ff Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:48:25 +0100
Subject: [PATCH 10/16] gnu: Add julia-parsers.

* gnu/packages/julia-xyz.scm (julia-parsers): New variable.
---
gnu/packages/julia-xyz.scm | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

Toggle diff (33 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index c26765f2a4..22b1cc9914 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -168,6 +168,26 @@ allows to interface with @file{.ini} files.")
cryptography C libary for Julia.")
(license license:expat)))
+(define-public julia-parsers
+ (package
+ (name "julia-parsers")
+ (version "0.3.11")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaData/Parsers.jl")
+ (commit (string-append "v" version))))
+ (file-name "Parsers")
+ (sha256
+ (base32 "07dgcy12206a3lw55h00znq3yq4faczng6bbdn3lhc0l6jmclsly"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaData/Parsers.jl")
+ (synopsis "Fast parsing machinery for basic types in Julia")
+ (description "@code{Parsers} is a collection of type parsers and utilities
+for Julia")
+ (license license:expat)))
+
(define-public julia-sha
(package
(name "julia-sha")
--
2.25.0
From 68f095c392924936f59c7df9ec2363f6054651ab Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:51:21 +0100
Subject: [PATCH 11/16] gnu: Add julia-offsetarrays.

* gnu/packages/julia-xyz.scm (julia-offsetarrays): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 22b1cc9914..5cc7529c20 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -168,6 +168,30 @@ allows to interface with @file{.ini} files.")
cryptography C libary for Julia.")
(license license:expat)))
+(define-public julia-offsetarrays
+ (package
+ (name "julia-offsetarrays")
+ (version "1.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaArrays/OffsetArrays.jl")
+ (commit (string-append "v" version))))
+ (file-name "OffsetArrays")
+ (sha256
+ (base32 "0x86px7gynyzqqwan88z3lkq8yj0id4pa718l8xqj4yp9fbz440c"))))
+ (build-system julia-build-system)
+ ;; tests require Catindices, introducing a circular dependency
+ (arguments '(#:tests? #f))
+ (home-page "https://github.com/JuliaArrays/OffsetArrays.jl")
+ (synopsis "Fortran-like arrays with arbitrary, zero or negative starting
+indices")
+ (description "OffsetArrays provides Julia users with arrays that have
+arbitrary indices, similar to those found in some other programming languages
+like Fortran.")
+ (license license:expat)))
+
(define-public julia-parsers
(package
(name "julia-parsers")
--
2.25.0
From 3a0f60d4e21dd893ee11ddde0947c0323c9b5537 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 15:54:30 +0100
Subject: [PATCH 12/16] gnu: Add julia-fixedpointnumbers.

* gnu/packages/julia-xyz.scm (julia-fixedpointnumbers): New variable.
---
gnu/packages/julia-xyz.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 5cc7529c20..046c365b08 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -96,6 +96,32 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+(define-public julia-fixedpointnumbers
+ (package
+ (name "julia-fixedpointnumbers")
+ (version "0.8.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/FixedPointNumbers.jl")
+ (commit (string-append "v" version))))
+ (file-name "FixedPointNumbers")
+ (sha256
+ (base32 "0zi0va64vhnhqga62j7116m5alrkfzlv7qady4bq6v9sfrwfzvw1"))))
+ (build-system julia-build-system)
+ (propagated-inputs `(("julia-compat" ,julia-compat)))
+ (home-page "https://github.com/JuliaMath/FixedPointNumbers.jl")
+ (synopsis "Fixed point types for julia")
+ (description "This library implements fixed-point number types. A
+fixed-point number represents a fractional, or non-integral, number. In
+contrast with the more widely known floating-point numbers, with fixed-point
+numbers the decimal point doesn't \"float\": fixed-point numbers are
+effectively integers that are interpreted as being scaled by a constant
+factor. Consequently, they have a fixed number of digits (bits) after the
+decimal (radix) point.")
+ (license license:expat)))
+
(define-public julia-inifile
(package
(name "julia-inifile")
--
2.25.0
From 8582ad38d348dae41be96b5c9ff9512748c6ee7b Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 16:08:00 +0100
Subject: [PATCH 13/16] gnu: Add julia-orderedcollections.

* gnu/packages/julia-xyz.scm (julia-orderedcollections): New variable.
---
gnu/packages/julia-xyz.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 046c365b08..797c61ce6f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -218,6 +218,30 @@ arbitrary indices, similar to those found in some other programming languages
like Fortran.")
(license license:expat)))
+(define-public julia-orderedcollections
+ (package
+ (name "julia-orderedcollections")
+ (version "1.1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaCollections/OrderedCollections.jl")
+ ;; They added Package.toml after the 1.1.0 tag
+ (commit "7a789d72a40f4c446f59575f5d77a63df4391a24")))
+ (file-name "OrderedCollections")
+ (sha256
+ (base32 "09b3mlzkxcbc8wn0pji73591865li07q4kvvfzn9x4256mw47riq"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaCollections/OrderedCollections.jl")
+ (synopsis "Julia implementation of associative containers that preserve
+insertion order")
+ (description "This package implements OrderedDicts and OrderedSets, which
+are similar to containers in base Julia. However, during iteration the
+Ordered* containers return items in the order in which they were added to the
+collection.")
+ (license license:expat)))
+
(define-public julia-parsers
(package
(name "julia-parsers")
--
2.25.0
From 3b122c28d94bd0bdd149a0e7d1031d81bc85face Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 16:08:25 +0100
Subject: [PATCH 14/16] gnu: Add julia-datastructures.

* gnu/packages/julia-xyz.scm (julia-datastructures): New variable.
---
gnu/packages/julia-xyz.scm | 43 ++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)

Toggle diff (56 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 797c61ce6f..a4a9939894 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -96,6 +96,49 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+(define-public julia-datastructures
+ (package
+ (name "julia-datastructures")
+ (version "0.17.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaCollections/DataStructures.jl")
+ (commit (string-append "v" version))))
+ (file-name "DataStructures")
+ (sha256
+ (base32 "1gp5n99c1llwp2zfsh1iw9jr5hhjswrq7v8iwkp2vj7yp5vvy5lw"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-orderedcollections" ,julia-orderedcollections)))
+ (home-page "https://github.com/JuliaCollections/DataStructures.jl")
+ (synopsis "Julia implementation of Data structures")
+ (description "This package implements a variety of data structures,
+including:
+
+@enumerate
+@item Deque (implemented with an unrolled linked list)
+@item CircularBuffer
+@item CircularDeque
+@item Stack
+@item Queue
+@item Accumulators and Counters (i.e. Multisets / Bags)
+@item Disjoint Sets
+@item Binary Heap
+@item Mutable Binary Heap
+@item Ordered Dicts and Sets
+@item Dictionaries with Defaults
+@item Trie
+@item Linked List and Mutable Linked List
+@item Sorted Dict, Sorted Multi-Dict and Sorted Set
+@item DataStructures.IntSet
+@item Priority Queue
+@item Fenwick Tree
+@item SparseIntSet
+@end enumerate")
+ (license license:expat)))
+
(define-public julia-fixedpointnumbers
(package
(name "julia-fixedpointnumbers")
--
2.25.0
From e29caaaf651b750f8fcc734dab06921c81f4b226 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 16:09:38 +0100
Subject: [PATCH 15/16] gnu: Add julia-json.

* gnu/packages/julia-xyz.scm (julia-json): New variable.
---
gnu/packages/julia-xyz.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

Toggle diff (38 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index a4a9939894..5130663e48 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -185,6 +185,31 @@ decimal (radix) point.")
allows to interface with @file{.ini} files.")
(license license:expat)))
+(define-public julia-json
+ (package
+ (name "julia-json")
+ (version "0.21.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaIO/JSON.jl")
+ (commit (string-append "v" version))))
+ (file-name "JSON")
+ (sha256
+ (base32 "0knmfjhchd3ggy86dsfyb7l4v3fv5dcr207cgp54mj7rj96caqsm"))))
+ (build-system julia-build-system)
+ (propagated-inputs `(("julia-parsers" ,julia-parsers)))
+ ;; For some reason, the precompile cache for this package is broken,
+ ;; meaning that it will get re-generated at `using'
+ (inputs `(("julia-offsetarrays" ,julia-offsetarrays)
+ ("julia-datastructures" ,julia-datastructures)
+ ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
+ (home-page "https://github.com/JuliaIO/JSON.jl")
+ (synopsis "JSON parsing and printing in Julia")
+ (description "Parsing and printing JSON in pure Julia.")
+ (license license:expat)))
+
(define-public julia-mbedtls
(package
(name "julia-mbedtls")
--
2.25.0
From 238554a69cab1f7b1eedb93d453e78587b0e4597 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Mon, 24 Feb 2020 16:37:10 +0100
Subject: [PATCH 16/16] gnu: Add julia-http.

* gnu/packages/julia-xyz.scm (julia-http): New variable.
---
gnu/packages/julia-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

Toggle diff (58 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 5130663e48..be3c776f49 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -165,6 +165,51 @@ factor. Consequently, they have a fixed number of digits (bits) after the
decimal (radix) point.")
(license license:expat)))
+(define-public julia-http
+ (package
+ (name "julia-http")
+ (version "0.8.9")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaWeb/HTTP.jl")
+ (commit (string-append "v" version))))
+ (file-name "HTTP")
+ (sha256
+ (base32 "11g49gnnacvmihnr0p3inqmsdw6wllyfkq5sbka09mwnrf3vahs7"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'install 'disable-network-tests
+ (lambda _
+ (substitute* "test/runtests.jl"
+ (("\"client.jl") "# \"client.jl")
+ (("\"multipart.jl") "# \"multipart.jl")
+ (("\"aws4.jl") "# \"as4.jl")
+ ;; some of those might still be saved
+ (("\"async.jl") "# \"async.jl")
+ (("\"server.jl") "# \"server.jl"))
+ (substitute* "test/websockets.jl"
+ (("for s in socket_type") "for s in []"))
+ (substitute* "test/messages.jl"
+ (("@testset \"Read methods\" ") "return\n"))
+ #t)))))
+ (propagated-inputs
+ `(("julia-inifile" ,julia-inifile)
+ ("julia-mbedtls" ,julia-mbedtls)
+ ("julia-compat" ,julia-compat)))
+ ;; required for tests
+ (inputs
+ `(("julia-json" ,julia-json)
+ ("julia-bufferedstreams" ,julia-bufferedstreams)))
+ (home-page "https://juliaweb.github.io/HTTP.jl/")
+ (synopsis "HTTP support for Julia")
+ (description "@code{HTTP.jl} is a Julia library for HTTP Messages,
+implementing both a client and a server.")
+ (license license:expat)))
+
(define-public julia-inifile
(package
(name "julia-inifile")
--
2.25.0
Thanks, Nicolò

Toggle quote (16 lines)
>
> On Tue, 11 Feb 2020 at 18:58, zimoun <zimon.toutoune@gmail.com> wrote:
>>
>> Hi,
>>
>> Please find attach the almost updated julia using 2 patches. The first
>> add a dependency and the second update and patch.
>>
>> I hope that I do not screw up the indentation; sometimes my Emacs does
>> weird stuff. Anyway.
>>
>> If it is fine with you, please ping Ludo or any committer. :-)
>>
>>
>> Cheers,
>> simon
Z
Z
zimoun wrote on 25 Feb 2020 17:12
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)(address . 38546@debbugs.gnu.org)
CAJ3okZ0Zczy6mO9UgpCaO2SedxUm-bSZ_jwcP9O1_b4F7uOoqA@mail.gmail.com
Hi Nicolò,

On Mon, 24 Feb 2020 at 21:59, Nicolò Balzarotti <anothersms@gmail.com> wrote:

Toggle quote (5 lines)
> Here's a friendly 1.3.1 + HTTP.jl + dependencies patch submission.
> Hopefully this time it's fine. Package precompilation should be working
> now (except json, whose cache, for some reason, is not valid and gets
> rebuilt).

Cool! Thank you.
I would like to first push 1.3.1, i.e., the patches v4.

Then let open another bug report with the patches attached here.
Otherwise, it seems a non-ending process. ;-)


About processing, if you use Magit to generate your patches, do not
forget to increment the reroll-count (W c C-m v) otherwise "git
format-patch -v5". It eases to know which version of the patches we
are talking about. For example, here it is the fifth.


Toggle quote (5 lines)
> As a reminder: determinism is still not addressed and will be fixed in
> the 1.4.0 release (hopefully, upstream is still not that responsive).
> However, there are dozens of julia packages that I want to package, so
> if this first batch is finally fine, more will come.

Yes, hope soon. :-)


Cheers,
simon
N
N
Nicolò Balzarotti wrote on 25 Feb 2020 19:08
(name . zimoun)(address . zimon.toutoune@gmail.com)(address . 38546@debbugs.gnu.org)
87fteywndk.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

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

v5 of the Julia 1.3.1 update patch.

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

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

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

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

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

julia bin/install_packages.jl
Activating environment at `~/workspace/LMGPU.jl/Project.toml`
Cloning default registries into `~/.julia`
ERROR: LoadError: failed to clone from https://github.com/JuliaRegistries/General.git,error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)

Other bug reports from other libgit2 version bumps suggest using an
older version of libgit2


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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl5vT64ACgkQQarn3Mo9
g1EdbA//Q8mcp3oISeiBKSdkgjF+3VqMWY007AnXpa/frFgkyqS/A1m0oVZUbk54
dVZlqItIOIqZ4wA+t237VIMLZzpUdjoC6UP4GqOnDP2Mha4U5xUI9rxydD1Jt0HE
Pm9Afz+vODeAQWlfC1fePhTge3qXV2bInUsnvrKmD8onZLTrR6aOdTtHNm7iBUzH
t9o/OTJH0sdlsy7Jb5rDAfZuQ4H5BQgIipGGvluoQir7e6ui3mOBpeVLvsXq+qxV
owKj/ir8Kzr/kOqrkdWfKEisFfzGy2tdpCCFCDiZnvocaNi0xwdFP2j5/y20kv81
hDX70G0OeZ2C72PWCDnssmSVEO5LsFNZSlpyy3dklZtIxqE55N6jz5a9U6nfl/0w
xElVsANaUcM4mrWCZNb8I42l1H7qpnZ2RvlDcF23gHpOAXJWedQTBWP4utVIKuDI
Q7HO/WExw0a+kvXDXlMC0URY5V0SvjgVbPdfiZg0VZQ7HTbU1F7MoIhBKlNjKYp8
+AbSQjLoyJxi49AvcwcVXyxU1pHV5JleANCUR4EAWxVEJ/CSupLNdsJQrdYkeRrh
V91qR/upg1yP4A4VqJeXSosGDcQ8T1bqgf2ErobYnh+gv1U8RER6JTaw5q7bmP6G
KZXAU8wFLXqk20z3U11xe/S//6PH0sgPgONd3bRuFZQ2OoESVoo=
=J9Pl
-----END PGP SIGNATURE-----


N
N
Nicolò Balzarotti wrote on 17 Mar 2020 08:51
(name . Efraim Flashner)(address . efraim@flashner.co.il)
87fte7772m.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi Efraim, thanks for the report.

Yes, according to this report[1] we should downgrade libgit2 0.99. I'll
try to send an updated patch in the next days.

In the meanwhile, reding arch bug-tracker [2] I saw that libgit2 depends
on http-parser (USE_HTTP_PARSER). Should we unbundle it from git?

Thanks, Nicolò




Efraim Flashner <efraim@flashner.co.il> writes:

Toggle quote (16 lines)
> The upgrade of libgit2 to 0.99.0 seems to have broken this
>
> julia bin/install_packages.jl
> Activating environment at `~/workspace/LMGPU.jl/Project.toml`
> Cloning default registries into `~/.julia`
> Cloning registry from "https://github.com/JuliaRegistries/General.git"
> ERROR: LoadError: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
>
> Other bug reports from other libgit2 version bumps suggest using an
> older version of libgit2
>
>
> --
> 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
E
E
Efraim Flashner wrote on 17 Mar 2020 09:12
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200317081210.GN927@E5400
On Tue, Mar 17, 2020 at 08:51:13AM +0100, Nicolò Balzarotti wrote:
Toggle quote (5 lines)
> Hi Efraim, thanks for the report.
>
> Yes, according to this report[1] we should downgrade libgit2 0.99. I'll
> try to send an updated patch in the next days.

We can just add a libgit2-0.28 for now and remove it later.

I saw that there were patches for using llvm-8 as a base for llvm-julia
instead of llvm-6, but that can wait until later.

Toggle quote (4 lines)
>
> In the meanwhile, reding arch bug-tracker [2] I saw that libgit2 depends
> on http-parser (USE_HTTP_PARSER). Should we unbundle it from git?

That sounds like a separate issue, but a good idea.

Toggle quote (27 lines)
>
> Thanks, Nicolò
>
> [1] https://github.com/JuliaLang/julia/issues/33111
> [2] https://bugs.archlinux.org/task/65540
>
>
>
> Efraim Flashner <efraim@flashner.co.il> writes:
>
> > The upgrade of libgit2 to 0.99.0 seems to have broken this
> >
> > julia bin/install_packages.jl
> > Activating environment at `~/workspace/LMGPU.jl/Project.toml`
> > Cloning default registries into `~/.julia`
> > Cloning registry from "https://github.com/JuliaRegistries/General.git"
> > ERROR: LoadError: failed to clone from https://github.com/JuliaRegistries/General.git, error: GitError(Code:ERROR, Class:Invalid, invalid version 0 on git_proxy_options)
> >
> > Other bug reports from other libgit2 version bumps suggest using an
> > older version of libgit2
> >
> >
> > --
> > 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

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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl5whloACgkQQarn3Mo9
g1H0YhAAo6GjUv9OUofK+YH1soCpPK70bDrXho6E+Ooys7Gi+UWASctWZHFUvB9v
A5kSJrwezPglIGHgXUNt1usYaLQ8/LXKAWtBwOsMRulAdy/6CUvGJMlQLP6yeYFu
uqHU/jLV1qh/93vl/gnwl9QKId6ww9w3pxyTuQtAfXo73sIx0GGc8l0xRTWS+GVP
FDYk8f/sLP12kiEO4uvS35OqB6g2jyXHA1Pf6uR3KQqJmq5b7IDRC1HfdVoKy3Qm
5vHgl/rYUHUcCzVHTzOkuguYK91f6oNdjUVXF9PfnU3eD/Ztf7IYG9c8S7cCSPA9
1cKNCX4Nmh1kAu2ZdpXLnU50HRfOlo7S2dtaovkszZWs1yQK6AumnbJ/mVaZCFQq
2gXq45/yfODlht2g0PV5J0g0TJPf2NtOqgfjwaR8hwPPUzF4YHq8u08LD2xsXnMA
kot1MyE8bALeLxdWXDHAPp2n6LOL6DIvAt/4/aE5P61d/M4MUWP1YjMek+xVsK45
7w4yHZ2OR4Gba0Uf4KUgksoxign+JRmukasJtJ9q3oDX23k6gp3OiWsXRWWbiy0Y
X2JH0njiXLql41yGVrTS9iFdKEFYkkhcl5SF4QKIbBeMsqfKmmibu3YuzvuMnVyI
cv+k/8FPDAQIBHLlQoSrxnwj9hbtu5rZF2clJHeh5I9xvUmLuF8=
=/cT1
-----END PGP SIGNATURE-----


M
M
Marius Bakke wrote on 17 Mar 2020 13:21
87zhcfb29s.fsf@devup.no
Efraim Flashner <efraim@flashner.co.il> writes:

Toggle quote (5 lines)
>> In the meanwhile, reding arch bug-tracker [2] I saw that libgit2 depends
>> on http-parser (USE_HTTP_PARSER). Should we unbundle it from git?
>
> That sounds like a separate issue, but a good idea.

We used to unbundle it up until libgit2 0.99.0, because the release
notes said that their fork is incompatible with the released version of
http-parser.

We should look into what the compatibility issues are before unbundling
it again. Maybe it's not relevant for Guix.
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5wwL8ACgkQoqBt8qM6
VPoPcAf+P04I6hcONWlCbM78bUnAAPdD3ey+5yvYCn9dVIQ8vc0Su8jjxTj3LG34
kIDZoef0edJQEZ3S53bE+zndqbsxUsbhv/pn0a3JvIl+62TBYXJzo3HtO52xzYyt
Hes+UtnJrOuw3wh22PjH7/4oA2OC3JxZTgCpsyAR3iQ8YIbL75yLe/tvXVTgSzd5
+/+uEF9aK7qJ77DsbGG94pTlF3BkOpGPBys9qhRhSMHkrL4HmeQIpAZ4jJfRd+PY
qulaEAlilXY2IAhNaOWoTs23uuf89lPdvp1RLaetRykm8L63B5j8ZUibJ/nyISOO
4qI8QtrZM9H5ovwjWHvIAJ0E5HkGwQ==
=Mxxc
-----END PGP SIGNATURE-----

N
N
Nicolò Balzarotti wrote on 17 Mar 2020 14:37
878sjz6r0u.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi,

I looked at it. THe patch is literally a one-line change[1] they make
to support RFC 3986. According to [2], the patch has been ported to
fedora http-parser. Our version is different form the one bundled in
libgit2, but deleting the corresponding line (see snippet) libgit2 tests
are now passing. However, this http-parser test is failing:

*** http_parser_parse_url("http://hostname:/")"proxy empty port" test failed, unexpected rv 0 ***

I opened an issue upstream here [3] so that if they fix it we can
continue unbundling it without having to patch it ourselves.

Hope they decide to upstream it

I'll send updates if there are news on the issue,
thanks, Nicolò.



#+name: http-parser.patch
#+begin_src diff
diff -u a/http_parser.c b/http_parser.c
--- a/http_parser.c 2020-03-17 14:05:53.542832960 +0100
+++ b/http_parser.c 2020-03-17 14:05:21.810382406 +0100
@@ -2394,7 +2394,6 @@
case s_http_host_v6_zone_start:
case s_http_host_v6_zone:
- case s_http_host_port_start:
case s_http_userinfo:
case s_http_userinfo_start:
return 1;
default:
#+end_src


Marius Bakke <mbakke@fastmail.com> writes:

Toggle quote (13 lines)
> Efraim Flashner <efraim@flashner.co.il> writes:
>
>>> In the meanwhile, reding arch bug-tracker [2] I saw that libgit2 depends
>>> on http-parser (USE_HTTP_PARSER). Should we unbundle it from git?
>>
>> That sounds like a separate issue, but a good idea.
>
> We used to unbundle it up until libgit2 0.99.0, because the release
> notes said that their fork is incompatible with the released version of
> http-parser.
>
> We should look into what the compatibility issues are before unbundling
> it again. Maybe it's not relevant for Guix.
M
M
Marius Bakke wrote on 19 Mar 2020 13:28
871rpobkbq.fsf@devup.no
Nicolò Balzarotti <anothersms@gmail.com> writes:

Toggle quote (17 lines)
> Hi,
>
> I looked at it. THe patch is literally a one-line change[1] they make
> to support RFC 3986. According to [2], the patch has been ported to
> fedora http-parser. Our version is different form the one bundled in
> libgit2, but deleting the corresponding line (see snippet) libgit2 tests
> are now passing. However, this http-parser test is failing:
>
> *** http_parser_parse_url("http://hostname:/") "proxy empty port" test failed, unexpected rv 0 ***
>
> I opened an issue upstream here [3] so that if they fix it we can
> continue unbundling it without having to patch it ourselves.
>
> Hope they decide to upstream it
>
> I'll send updates if there are news on the issue,

Awesome, thank you very much for looking into it. I have no objections
to taking the patches from the upstream PR [0] if that helps updating
Julia. :-)

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl5zZVkACgkQoqBt8qM6
VPou8Af9HL+BSWK6l4TPDPEN99LuxehYt3+wNWiiVuKy7dl8uYsVA3uqg6iYF2Zh
3PUE01CHFFxCiDUWWd3GpcFMXT00x46OUXTbwAhT+fztOEfcQK+6E7yBSa154MjE
kLT8V9TCHuCsgQh/8EyO0nDdqiopqOBUSmw7y6Y1dzX9WjzZpMP3clasSeVnYhwg
L0J2F/CbWxqbXl9MHKnxNPp+LckIodZez+WeGSdPHP0VZ2Go5lbc1j63vb01+SUj
W3SwNCD9XQXfRhTpdifUv5XLPlkCu5D4cUVfDsRaftC7iFzvr9ApwzFjM4ydX27v
f6RK3mgOQ9fTq5bgjiJorbSeQg9YHQ==
=dSmi
-----END PGP SIGNATURE-----

E
E
Efraim Flashner wrote on 6 Apr 2020 08:09
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200406060949.GB1518@E5400
On Thu, Mar 19, 2020 at 01:28:09PM +0100, Marius Bakke wrote:
Toggle quote (25 lines)
> Nicolò Balzarotti <anothersms@gmail.com> writes:
>
> > Hi,
> >
> > I looked at it. THe patch is literally a one-line change[1] they make
> > to support RFC 3986. According to [2], the patch has been ported to
> > fedora http-parser. Our version is different form the one bundled in
> > libgit2, but deleting the corresponding line (see snippet) libgit2 tests
> > are now passing. However, this http-parser test is failing:
> >
> > *** http_parser_parse_url("http://hostname:/") "proxy empty port" test failed, unexpected rv 0 ***
> >
> > I opened an issue upstream here [3] so that if they fix it we can
> > continue unbundling it without having to patch it ourselves.
> >
> > Hope they decide to upstream it
> >
> > I'll send updates if there are news on the issue,
>
> Awesome, thank you very much for looking into it. I have no objections
> to taking the patches from the upstream PR [0] if that helps updating
> Julia. :-)
>
> 0: https://github.com/nodejs/http-parser/pull/483

Any news from upstream?


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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6Kx6oACgkQQarn3Mo9
g1EU1xAAmoJHK3g2lYUcl1Q03EINHabB57ymD/6idebrt94AhOp7j7sKJsv/Z7Wl
+6FqVHLElULukweC5y+oKl2U4qk6lZDETyrM97wC7M30uwC6hYp4GrkxARa/8Q+W
jYIRmqMXQ1WNzBiI2i1dMKcZDUHNEdT5fs9dDYPajbaccZ077ijXf8Osd3miFZNC
F+bsFW4dUhQNmE49bTMuw7/EReItjK6eIzJnLtBfc5g19QjhkEkcbw09Jzij1SfZ
5tR/Z5dZhLb6f8jUdKF50pyvU+z3xF03QNS4H0/7Na7Obl2UajNJd6yPbUxF5L0a
fs5Jl6ueieGISmSXtUIdD24sp+kBgmMC5yjrQ598Lfa5tYWLF5MLHgDeEnn6Olz+
ANWr/JdKS9C8mHpO9SzpNiRRrreIzjRqEkJSLDsGFkJ/DF3T4HhyqkG9L8PoLsFv
Y/Tah2XayFFqAKjdieFtEO0yyRmxAvUKKyBc0BXaGf/QexgQk5Jyr+j+CBnK3foM
bMl45BbaJWViXYll56nbfo/fAeBPY3NdWIjfTBqmdD/P924ALDwWN+vqVLtQIU/9
tEBpp22pR6ekHU0EZvEuwPPQ1qx2JVLdaAH2fXJF0JLSceCA0v5YzYpuk7cM0r0v
ik7eLVTwri71p1CPBH9ITtXj3l3eSsNFGzY22PKPQW/x1ejiB90=
=mHVN
-----END PGP SIGNATURE-----


N
N
Nicolò Balzarotti wrote on 6 Apr 2020 10:18
(name . Efraim Flashner)(address . efraim@flashner.co.il)
87lfn9hvse.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Efraim Flashner <efraim@flashner.co.il> writes:

Hi Efraim,

no, AFAIK.

The http-parser PR[1] received a comment 18 days ago, so maybe things are slowly
moving.
Julia issue[2] basically suggest to workaround the problem, while [3]
seems to have a patch for julia 1.4.0 ready.

In the meantime, I'm sending a quick patch that patches our http-parser
with the one applied system-wide by fedora[4].

How was the command to build all packages depending even indirectly from
another package (http-parser in this case)? I'll build everything and
hope tests will pass.

Thanks, Nicolò
From da44aeb1810a12d83aafee9db05acb9262e6e880 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=B2=20Balzarotti?= <nicolo@nixo.xyz>
Date: Thu, 2 Apr 2020 08:49:46 +0200
Subject: [PATCH 1/4] gnu: Add dsfmt.

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

Toggle diff (92 lines)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 5e56289682..be2b87a41d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -35,6 +35,7 @@
;;; Copyright © 2019 Robert Smith <robertsmith@posteo.net>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2020 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -375,6 +376,77 @@ semiconductors.")
(license license:gpl3+)
(home-page "https://www.gnu.org/software/dionysus/")))
+(define-public dsfmt
+ (package
+ (name "dsfmt")
+ (version "2.2.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"))
+ ;; julia needs those (and is the only program depending on dsfmt now)
+ (patches
+ (list
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://raw.githubusercontent.com/JuliaLang/julia/"
+ "v1.3.0/deps/patches/dSFMT.c.patch"))
+ (sha256 (base32
+ "09mhv11bms8jsmkmdqvlcgljwhzw3b6n9nncpi2b6dla9798hw2y"))
+ (file-name "dSFMT.c.patch"))
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://raw.githubusercontent.com/JuliaLang/julia/"
+ "v1.3.0/deps/patches/dSFMT.h.patch"))
+ (sha256 (base32
+ "1py5rd0yxic335lzka23f6x2dhncrpizpyrk57gi2f28c0p98y5n"))
+ (file-name "dSFMT.h.patch"))))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure) ;no configure script
+ (replace 'build
+ ;; upstream Makefile does not build a shared library
+ (lambda _
+ (invoke
+ "gcc"
+ ;; flags copied from julia
+ ;; https://github.com/JuliaLang/julia/blob/v1.3.0/deps/dsfmt.mk
+ "-DNDEBUG" "-DDSFMT_MEXP=19937"
+ "-fPIC" "-DDSFMT_DO_NOT_USE_OLD_NAMES"
+ "-O3" "-finline-functions" "-fomit-frame-pointer"
+ "-fno-strict-aliasing" "--param" "max-inline-insns-single=1800"
+ "-Wmissing-prototypes" "-Wall" "-std=c99" "-shared" "dSFMT.c"
+ "-o" "libdSFMT.so")))
+ (replace 'install ;no "install" target
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((lib (string-append (assoc-ref outputs "out")
+ "/lib"))
+ (inc (string-append (assoc-ref outputs "out")
+ "/include")))
+ (install-file "libdSFMT.so" lib)
+ (install-file "dSFMT.h" inc)
+ #t))))))
+ (synopsis "Double precision SIMD-oriented Fast Mersenne Twister")
+ (description
+ "The dSMFT package speeds up Fast Mersenne Twister generation by avoiding
+the expensive conversion of integer to double (floating point). dSFMT directly
+generates double precision floating point pseudorandom numbers which have the
+IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985)
+format. dSFMT is only available on the CPUs which use IEEE 754 format double
+precision floating point numbers.")
+ (home-page "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/")
+ (license license:bsd-3)))
+
(define-public gsl
(package
(name "gsl")
--
2.26.0
From 544ea20e9f7105ee01c274895ab1c4687dc99090 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=B2=20Balzarotti?= <nicolo@nixo.xyz>
Date: Thu, 2 Apr 2020 11:50:27 +0200
Subject: [PATCH 2/4] gnu: http-parser: add patch applied by libgit2.

Fixes parsing of colon followed by empty port, allowed by RFC 3986
specifications. Fedora is applying it to system http-parser too.
---
gnu/packages/web.scm | 14 ++++++++++++++
1 file changed, 14 insertions(+)

Toggle diff (27 lines)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a553dc2150..6c73720689 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -5788,6 +5788,20 @@ into your tests. It automatically starts up a HTTP server in a separate thread
(uri (git-reference (url home-page)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
+ (patches
+ ;; When parsing URLs, treat an empty port (eg
+ ;; `http://hostname:/`) as if it were unspecified. This patch is
+ ;; applied to fedora http-parser and to libgit2 bundled version.
+ (list
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://src.fedoraproject.org/rpms/http-parser/raw/"
+ "e89b4c4e2874c19079a5a1a2d2ccc61b551aa289/"
+ "f/0001-url-treat-empty-port-as-default.patch"))
+ (sha256
+ (base32
+ "0pbxf2nq9pcn299k2b2ls8ldghaqln9glnp79gi57mamx4iy0f6g")))))
(sha256
(base32
"189zi61vczqgmqjd2myjcjbbi5icrk7ccs0kn6nj8hxqiv5j3811"))))
--
2.26.0
From 2bd301c0e04a182295c4cce973e5b7553c4aa5b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=B2=20Balzarotti?= <nicolo@nixo.xyz>
Date: Thu, 2 Apr 2020 11:54:15 +0200
Subject: [PATCH 3/4] gnu: libgit2: Use system http-parser.

---
gnu/packages/version-control.scm | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)

Toggle diff (44 lines)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 8af54c6e35..00fb96f474 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -612,16 +612,13 @@ on @command{git}, and use any regular Git hosting service.")
(base32
"0qxzv49ip378g1n7hrbifb9c6pys2kj1hnxcafmbb94gj3pgd9kg"))
(patches (search-patches "libgit2-mtime-0.patch"))
-
- ;; Remove bundled software. Keep "http-parser" because it
- ;; contains patches that are not available in the system version.
(snippet '(begin
(with-directory-excursion "deps"
(for-each (lambda (dir)
(delete-file-recursively dir))
(lset-difference equal?
(scandir ".")
- '("." ".." "http-parser"))))
+ '("." ".."))))
#t))
(modules '((guix build utils)
(srfi srfi-1)
@@ -630,7 +627,8 @@ on @command{git}, and use any regular Git hosting service.")
(outputs '("out" "debug"))
(arguments
`(#:configure-flags '("-DUSE_NTLMCLIENT=OFF" ;TODO: package this
- "-DREGEX_BACKEND=pcre2")
+ "-DREGEX_BACKEND=pcre2"
+ "-DUSE_HTTP_PARSER=system")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-pcre2-reference
@@ -657,7 +655,8 @@ on @command{git}, and use any regular Git hosting service.")
(replace 'check
(lambda _ (invoke "./libgit2_clar" "-v" "-Q"))))))
(inputs
- `(("libssh2" ,libssh2)))
+ `(("libssh2" ,libssh2)
+ ("http-parser" ,http-parser)))
(native-inputs
`(("pkg-config" ,pkg-config)
("python" ,python)))
--
2.26.0
Toggle quote (33 lines)
> On Thu, Mar 19, 2020 at 01:28:09PM +0100, Marius Bakke wrote:
>> Nicolò Balzarotti <anothersms@gmail.com> writes:
>>
>> > Hi,
>> >
>> > I looked at it. THe patch is literally a one-line change[1] they make
>> > to support RFC 3986. According to [2], the patch has been ported to
>> > fedora http-parser. Our version is different form the one bundled in
>> > libgit2, but deleting the corresponding line (see snippet) libgit2 tests
>> > are now passing. However, this http-parser test is failing:
>> >
>> > *** http_parser_parse_url("http://hostname:/") "proxy empty port" test failed, unexpected rv 0 ***
>> >
>> > I opened an issue upstream here [3] so that if they fix it we can
>> > continue unbundling it without having to patch it ourselves.
>> >
>> > Hope they decide to upstream it
>> >
>> > I'll send updates if there are news on the issue,
>>
>> Awesome, thank you very much for looking into it. I have no objections
>> to taking the patches from the upstream PR [0] if that helps updating
>> Julia. :-)
>>
>> 0: https://github.com/nodejs/http-parser/pull/483
>
> Any news from upstream?
>
>
> --
> 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
E
E
Efraim Flashner wrote on 6 Apr 2020 10:37
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200406083754.GF1518@E5400
On Mon, Apr 06, 2020 at 10:18:25AM +0200, Nicolò Balzarotti wrote:
Toggle quote (21 lines)
> Efraim Flashner <efraim@flashner.co.il> writes:
>
> Hi Efraim,
>
> no, AFAIK.
>
> The http-parser PR[1] received a comment 18 days ago, so maybe things are slowly
> moving.
> Julia issue[2] basically suggest to workaround the problem, while [3]
> seems to have a patch for julia 1.4.0 ready.
>
> In the meantime, I'm sending a quick patch that patches our http-parser
> with the one applied system-wide by fedora[4].
>
> How was the command to build all packages depending even indirectly from
> another package (http-parser in this case)? I'll build everything and
> hope tests will pass.
>
> Thanks, Nicolò
>

'guix refresh -l http-parser' will list all the packages which depend,
even indirectly, on it. ./pre-inst-env guix build --no-grafts
$(./pre-inst-env guix refresh -l http-parser | cut -f2 -d':') will build
them all if you don't feel like copy-pasting the list.


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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6K6l0ACgkQQarn3Mo9
g1HwFg//QlGstEV/9v5wbyTFX39eeqZcmBZiqjwhFo3jO860oTh9SHvj5V0xs5OT
W55T001ws8EFxZ0gXtWME15JMid6kikwRonjtetOc8T9tffqPad57OUo+sYcK+1A
0kEsP5LMvqYvpY4p+LJTvreOTkjbku67EORgAexGfxrFVRaZPmvibeFE7W7s4k1V
MiMkK0lmg/pdWfscjG42JQGYtYwwvP3fXmueZaMi+Pjlqh3UbpQbk1ggDWOpgDeT
e2mf6VyxayftpBd7JxMuSW7Cxr0+ZL/XacFM+1dPKzMiO7xm2ogJSkik7xPciu6+
JdeLofQdtFmlFxsKFQIsd88tbbLQlMYYYXhkOoDLtkMT+0u6qaCTQARywGp+QcPZ
popRj43i4Divnl/kcY+rQwFA1jduUbcVIhy6YrC7Oxq3a1R2XVEN2LGZZ3vjhyrW
ckvjhkYRI8OH+qvJg9RW1MJ6lgGBjYJcL163VYdZNPH7OIorqHPZm0OUIrhQTJGz
4QLCpP9YO11REn/Hx3r9EqVDsHREwY+ZWMjCOXpx/6U5NE9cZpjw0ydOj9pGo1q7
V/zHChzZPEWUJ2oGwZfHxLqOm2n936o+cGlZ3kGv5GbeM+5W5KTMF/ax7yTDvP8M
Gmj8IH9tGAqeUE5ME2MMHNQJarK2cOcWorLOBBJnNvuSXjXCmxY=
=nbf/
-----END PGP SIGNATURE-----


N
N
Nicolò Balzarotti wrote on 7 Apr 2020 01:18
(name . Efraim Flashner)(address . efraim@flashner.co.il)
877dysjj9r.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hello again, the build completed right now.

Efraim Flashner <efraim@flashner.co.il> writes:

Toggle quote (28 lines)
> On Mon, Apr 06, 2020 at 10:18:25AM +0200, Nicolò Balzarotti wrote:
>> Efraim Flashner <efraim@flashner.co.il> writes:
>>
>> Hi Efraim,
>>
>> no, AFAIK.
>>
>> The http-parser PR[1] received a comment 18 days ago, so maybe things are slowly
>> moving.
>> Julia issue[2] basically suggest to workaround the problem, while [3]
>> seems to have a patch for julia 1.4.0 ready.
>>
>> In the meantime, I'm sending a quick patch that patches our http-parser
>> with the one applied system-wide by fedora[4].
>>
>> How was the command to build all packages depending even indirectly from
>> another package (http-parser in this case)? I'll build everything and
>> hope tests will pass.
>>
>> Thanks, Nicolò
>>
>
> 'guix refresh -l http-parser' will list all the packages which depend,
> even indirectly, on it. ./pre-inst-env guix build --no-grafts
> $(./pre-inst-env guix refresh -l http-parser | cut -f2 -d':') will build
> them all if you don't feel like copy-pasting the list.
>

Thanks!

From the output of guix refresh, it could not find
guix-minimal@1.0.1-15.0984481 guix-daemon@1.0.1-15.0984481.

This command succeeded:
#+begin_src bash
./pre-inst-env guix build --no-grafts jami@20191101.3.67671e7 ungoogled-chromium-wayland@80.0.3987.162-0.516e2d9 ungoogled-chromium@80.0.3987.162-0.516e2d9 emacs-nodejs-repl@0.2.2 geierlein@0.9.13 node-env-variable@0.0.4 node-mersenne@0.0.4 node-color-name@1.1.3 node-util-deprecate@1.0.2 node-stack-trace@0.0.10-1.4fd379e node-statsd-parser@0.0.4 ruby-autoprefixer-rails@9.4.7 celestia-gtk@1.6.1-815.9dbdf29 celestia@1.6.1-815.9dbdf29 rust-libgit2-sys@0.8.2 rust-libgit2-sys@0.10.0 fritzing@0.9.3b gitg@3.32.1 cuirass@0.0.1-28.b9031db emacs-guix@0.5.2 guix-jupyter@0.1.0 hpcguix-web@0.0.1-4.f39c90b guile2.0-git@0.3.0 julia@1.3.1 kopete@19.08.3 dolphin-plugins@19.08.3 kate@19.08.3 kdevelop@5.4.6 offlate@0.5 gitless@0.8.8 exa@0.9.0 tokei@10.1.1 r-biocworkflowtools@1.12.1 r-activpal@0.1.3 r-chemometricswithr@0.1.13 r-abjutils@0.2.3 r-adapr@2.0.0 stagit@0.7.2
#+end_src

But two packages are failing:
- sssd@1.16.4
- rust-libgit2-sys

What do you suggest? If those errors are actually related http-parser
patch, we could either fix/disable those tests or use the patched
version in julia only.

Thanks, Nicolò

Toggle quote (5 lines)
>
> --
> 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
E
E
Efraim Flashner wrote on 7 Apr 2020 07:41
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200407054151.GH1518@E5400
On Tue, Apr 07, 2020 at 01:18:08AM +0200, Nicolò Balzarotti wrote:
Toggle quote (53 lines)
> Hello again, the build completed right now.
>
> Efraim Flashner <efraim@flashner.co.il> writes:
>
> > On Mon, Apr 06, 2020 at 10:18:25AM +0200, Nicolò Balzarotti wrote:
> >> Efraim Flashner <efraim@flashner.co.il> writes:
> >>
> >> Hi Efraim,
> >>
> >> no, AFAIK.
> >>
> >> The http-parser PR[1] received a comment 18 days ago, so maybe things are slowly
> >> moving.
> >> Julia issue[2] basically suggest to workaround the problem, while [3]
> >> seems to have a patch for julia 1.4.0 ready.
> >>
> >> In the meantime, I'm sending a quick patch that patches our http-parser
> >> with the one applied system-wide by fedora[4].
> >>
> >> How was the command to build all packages depending even indirectly from
> >> another package (http-parser in this case)? I'll build everything and
> >> hope tests will pass.
> >>
> >> Thanks, Nicolò
> >>
> >
> > 'guix refresh -l http-parser' will list all the packages which depend,
> > even indirectly, on it. ./pre-inst-env guix build --no-grafts
> > $(./pre-inst-env guix refresh -l http-parser | cut -f2 -d':') will build
> > them all if you don't feel like copy-pasting the list.
> >
>
> Thanks!
>
> From the output of guix refresh, it could not find
> guix-minimal@1.0.1-15.0984481 guix-daemon@1.0.1-15.0984481.
>
> This command succeeded:
> #+begin_src bash
> ./pre-inst-env guix build --no-grafts jami@20191101.3.67671e7 ungoogled-chromium-wayland@80.0.3987.162-0.516e2d9 ungoogled-chromium@80.0.3987.162-0.516e2d9 emacs-nodejs-repl@0.2.2 geierlein@0.9.13 node-env-variable@0.0.4 node-mersenne@0.0.4 node-color-name@1.1.3 node-util-deprecate@1.0.2 node-stack-trace@0.0.10-1.4fd379e node-statsd-parser@0.0.4 ruby-autoprefixer-rails@9.4.7 celestia-gtk@1.6.1-815.9dbdf29 celestia@1.6.1-815.9dbdf29 rust-libgit2-sys@0.8.2 rust-libgit2-sys@0.10.0 fritzing@0.9.3b gitg@3.32.1 cuirass@0.0.1-28.b9031db emacs-guix@0.5.2 guix-jupyter@0.1.0 hpcguix-web@0.0.1-4.f39c90b guile2.0-git@0.3.0 julia@1.3.1 kopete@19.08.3 dolphin-plugins@19.08.3 kate@19.08.3 kdevelop@5.4.6 offlate@0.5 gitless@0.8.8 exa@0.9.0 tokei@10.1.1 r-biocworkflowtools@1.12.1 r-activpal@0.1.3 r-chemometricswithr@0.1.13 r-abjutils@0.2.3 r-adapr@2.0.0 stagit@0.7.2
> #+end_src
>
> But two packages are failing:
> - sssd@1.16.4
> - rust-libgit2-sys
>
> What do you suggest? If those errors are actually related http-parser
> patch, we could either fix/disable those tests or use the patched
> version in julia only.
>
> Thanks, Nicolò
>

One of the rust-libgit2-sys packages is known to fail and isn't an
issue. For sssd I see that 1.16.5 has been recently released. Hopefully
that can be a drop-in replacement.

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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6MEpsACgkQQarn3Mo9
g1EbRQ//YCnDGJPlHEsUY9SzZKKrr9R7o63+I5TYHd58TzstWnN9b9mim48Bsha5
sBECGoy3F3dyH804V3MDB/bGB66QPxGSU0n+hVKDrig4lTtsqMc7f6AVlP0Tilww
hgWKzvFs0BCLYeoXZZuaPI2cxNdgqWyQD61cTOvAeFPtoK2tMXbUK4XLb/ckueDe
XEQBngJtAD7OrXXVRq5kLAv/Rm+iNUc6EYdBzMQtrQTYq2oiFgH9JHHv5r5PWtXg
88bFF4QtMGpIKUepvVQMh+kCt02hTRxPx+Nu6YzsnwjdeAZBDuzQ22ZHQDeYvr4T
Vh6mk5lWg16M8mXjhCmcEnIjFW809tGMJD3Qe3z6u+OVKUiOfko+LCmY+Vf/iBan
H3nRYg4TGU6WLmDoJkBAKMfFFF5j7ljd3d/iO0svIVZAuH1VCxo2cEft7cmyEV1Y
DVV9rAgkhUrrbQn1OSrwLfBfQlIz17FIRmiWcJWv0MflWQuuPXs5qNA2RUdqFlQA
AFDXsKVH6B9DvvbC0djwZQ1x4bDbjMoD0LIRBweQ9h1dtoClxm1NEd0V6FlePu8S
CIfriKkJyu3tEwKibgeMYKVz8Yfrr1EbnGl+WvAILEeT4RoCF7qzbmGAuq5FDa6z
Gw8z09U65csZfTRdFyzcNTKJg1ptpA/juh1sYswWFmKk8wfb+EQ=
=r7Ac
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 7 Apr 2020 08:05
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200407060517.GI1518@E5400
On Tue, Apr 07, 2020 at 08:41:56AM +0300, Efraim Flashner wrote:
Toggle quote (59 lines)
> On Tue, Apr 07, 2020 at 01:18:08AM +0200, Nicolò Balzarotti wrote:
> > Hello again, the build completed right now.
> >
> > Efraim Flashner <efraim@flashner.co.il> writes:
> >
> > > On Mon, Apr 06, 2020 at 10:18:25AM +0200, Nicolò Balzarotti wrote:
> > >> Efraim Flashner <efraim@flashner.co.il> writes:
> > >>
> > >> Hi Efraim,
> > >>
> > >> no, AFAIK.
> > >>
> > >> The http-parser PR[1] received a comment 18 days ago, so maybe things are slowly
> > >> moving.
> > >> Julia issue[2] basically suggest to workaround the problem, while [3]
> > >> seems to have a patch for julia 1.4.0 ready.
> > >>
> > >> In the meantime, I'm sending a quick patch that patches our http-parser
> > >> with the one applied system-wide by fedora[4].
> > >>
> > >> How was the command to build all packages depending even indirectly from
> > >> another package (http-parser in this case)? I'll build everything and
> > >> hope tests will pass.
> > >>
> > >> Thanks, Nicolò
> > >>
> > >
> > > 'guix refresh -l http-parser' will list all the packages which depend,
> > > even indirectly, on it. ./pre-inst-env guix build --no-grafts
> > > $(./pre-inst-env guix refresh -l http-parser | cut -f2 -d':') will build
> > > them all if you don't feel like copy-pasting the list.
> > >
> >
> > Thanks!
> >
> > From the output of guix refresh, it could not find
> > guix-minimal@1.0.1-15.0984481 guix-daemon@1.0.1-15.0984481.
> >
> > This command succeeded:
> > #+begin_src bash
> > ./pre-inst-env guix build --no-grafts jami@20191101.3.67671e7 ungoogled-chromium-wayland@80.0.3987.162-0.516e2d9 ungoogled-chromium@80.0.3987.162-0.516e2d9 emacs-nodejs-repl@0.2.2 geierlein@0.9.13 node-env-variable@0.0.4 node-mersenne@0.0.4 node-color-name@1.1.3 node-util-deprecate@1.0.2 node-stack-trace@0.0.10-1.4fd379e node-statsd-parser@0.0.4 ruby-autoprefixer-rails@9.4.7 celestia-gtk@1.6.1-815.9dbdf29 celestia@1.6.1-815.9dbdf29 rust-libgit2-sys@0.8.2 rust-libgit2-sys@0.10.0 fritzing@0.9.3b gitg@3.32.1 cuirass@0.0.1-28.b9031db emacs-guix@0.5.2 guix-jupyter@0.1.0 hpcguix-web@0.0.1-4.f39c90b guile2.0-git@0.3.0 julia@1.3.1 kopete@19.08.3 dolphin-plugins@19.08.3 kate@19.08.3 kdevelop@5.4.6 offlate@0.5 gitless@0.8.8 exa@0.9.0 tokei@10.1.1 r-biocworkflowtools@1.12.1 r-activpal@0.1.3 r-chemometricswithr@0.1.13 r-abjutils@0.2.3 r-adapr@2.0.0 stagit@0.7.2
> > #+end_src
> >
> > But two packages are failing:
> > - sssd@1.16.4
> > - rust-libgit2-sys
> >
> > What do you suggest? If those errors are actually related http-parser
> > patch, we could either fix/disable those tests or use the patched
> > version in julia only.
> >
> > Thanks, Nicolò
> >
>
> One of the rust-libgit2-sys packages is known to fail and isn't an
> issue. For sssd I see that 1.16.5 has been recently released. Hopefully
> that can be a drop-in replacement.
>

I built sssd@1.16.5 with the http-parser patch and it passed all of its
tests so that looks good.

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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6MGBkACgkQQarn3Mo9
g1HTpBAAojNlNa5pf0qrAtfasRz+M+M/WxFctIjRUI/P+16BNYxCDWDuBtoVgra8
7Jc4tpDOaFOnn6pn/sAKLkwyM/mP9ugWAh9rHX6YV2tawjcwDYiiAc4jbRTRvm43
dkeqJEPwX2+QPDDi9oXfr21J4DIxWORMe4a4YvoZ1MK6t+yvTOQ1lbyOOLz8fA47
n+xLFBOgn1R2jp9O0gnz/3iMHNNBUyqPh8Q/HDlov0O5nADvgBSbSxg2nzmhnR7X
z0moaLhmZF0soVjPLePcDy5fl4JiqqP9DqFEUs2NV0Iage6J3z1yvhtJOsCUYnK1
lllBd+bsojvR+LYqCpzxW4ynkgtAwowJpV7IT/NovysIJg8zLuFXGxxoshvV9olv
+zN8LKCN0zoYgxx0hAw6r1lSnMtoWgEFmFacL3vu5rWAzLRRCD9WaMlrbYbJp2e0
r9eZRwbbz91mavb4ycQo3Pho9qu0VgUpRL51RYxCTAJT3IldQRwtkQyW6KsvTBHM
Aoj9huJ/0Dur4pU5rmmnqyWXG7o5TWL8fL6U0wZrcqpHgE4SzZb44XkGyPl86IDn
Y104pnZ2wj4OFFr4CD3GvfYFjxxO7ORkoBVh9ewCaZM3+o7wsAy5vEOMCsA0Tr2t
iVUpbhNyKT6F0qYausWUzGaqCVWu4Et5yHxV6o3lfAZ7JkXUBN8=
=PsVS
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 7 Apr 2020 16:35
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
20200407143545.GL1518@E5400
I pushed the patches. I also bumped libgit2 to 1.0.0 which was released
6 days ago. There were a couple of minor things with the patches:

dsfmt: I also installed the license file
libgit2: Reworded the commit message
julia: I pushed a patch first to redo the indentation so that your patch
would stand out and not get lost on the indentation changes.
I filled out the commit message for julia-1.3.1 which I think was the
main thing.


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

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6Mj8EACgkQQarn3Mo9
g1E2yA/7B62b3EBjeUcPncnTUujjMn8vWpl6bC+ewp5++c0IvHvicpM1RtCIbzQF
MZg8OSBCMxlbKVr1kgMHWorTpeF7mjPNAAKVt7J8JHUwgwyAz5X7JFYMwTSw2Quo
5XZXr25GQ2JLzTB9xl5r4N6/VoHXtqgOmiDEcrHhi63Yb+V3iblAhKowL8sXnYSw
spXNwNl68gU4EM7BUX3E2yHRt4H5mO5zy/6ZL7LpnMcIzOuRgPgIEqt9P/E6ctpp
+C+6gkJYFysYecbQG8nROAMl+4bcofr8e/z18vTf/2GEHPIAH2KX0xH2IqokK3M6
ghbVjZvb8FW9YXPrOk78lH5aoy8bZFRlYNMDntSGcb6dzoSlv3SfdEXQ3tK362Py
I7x0+8clHp9WQRFoOZAvcHjeUuJfBFomgBrNj4oChFs6T75DcYahTqvcnBImnN98
eaYJLHx+Mnv04EueyfOoSE5nvOGO+TQgEx009oH18oIeZhSUd7o2XVp6ZJIbXPUI
SM7EP42+2/1dvOYUAL7cnUHo6EujICN25CNjhCZ6ycBDIY/ri0luL1bQDm1ZkeEW
JEm0371jUCCypq7NT8vkF8zidMELwA2yMvdsfWl7JVuwVDoduZu6feoji7ShxGbO
SEqmUydoiE016aPTNKHhsRgYs30TUMWYko2bDdyMmbD6hiDMbDw=
=TBXb
-----END PGP SIGNATURE-----


Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 38546@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 38546
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch