[PATCH 00/29] Add Zygote (piece for Machine Learning with Julia)

  • Done
  • quality assurance status badge
Details
3 participants
  • Nicolò Balzarotti
  • Ludovic Courtès
  • zimoun
Owner
unassigned
Submitted by
zimoun
Severity
normal
Z
Z
zimoun wrote on 23 Mar 2021 20:42
(address . guix-patches@gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194211.16398-1-zimon.toutoune@gmail.com
Hi,

This adds all the packages required to build Zygote, the source-to-source
automatic differentiation in Julia.


It is the first brick to have Flux, the Julia machine learning framework.


Noting that (at least 3) large pieces are still missing: Juno, Documenter and
CUDA.

Speaking about the Julia package CUDA, it is required by the test suite of
Zygote, that's why the #:tests? is #f. However, we manually check the package
by running the small examples, e.g.,

Toggle snippet (31 lines)
$ ./pre-inst-env guix environment -C --ad-hoc julia julia-zygote -- julia
julia> using Zygote
[ Info: Precompiling Zygote [e88e6eb3-aa80-5325-afca-941959d7151f]

julia> f(x) = 5x + 3
f (generic function with 1 method)

julia> f(10), f'(10)
(53, 5)

julia> @code_llvm f'(10)

; @ /gnu/store/5m6676w77bbz44prbfxhxmk88srgxy81-profile/share/julia/packages/Zygote/src/compiler/interface.jl:62 within `#43'
define i64 @"julia_#43_2036"(i64) {
top:
ret i64 5
}

julia> W, b = rand(2, 3), rand(2);

julia> predict(x) = W*x .+ b;

julia> g = gradient(Params([W, b])) do
sum(predict([1,2,3]))
end
Grads(...)

julia> g[W], g[b]
([1.0 2.0 3.0; 1.0 2.0 3.0], 2-element Fill{Float64}: entries equal to 1.0)

All the packages are not archived because of the rate limit. They should be soon.

Toggle snippet (30 lines)
for n in $(git log -30 --format="%s" --reverse | cut -d'-' -f2 | sed 's/\.//');
do
./pre-inst-env guix lint -c archival julia-${n} ;
done

gnu/packages/julia-xyz.scm:397:7: julia-constructionbase@1.1.0: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:817:5: julia-macrotools@0.5.6: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:1040:5: julia-reexport@1.0.0: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:723:5: julia-irtools@0.4.2: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:283:5: julia-colortypes@0.10.12: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:1059:5: julia-requires@1.1.3: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:1085:5: julia-richardson@1.4.0: scheduled Software Heritage archival
gnu/packages/julia-xyz.scm:552:5: julia-finitedifferences@0.12.2: Software Heritage rate limit reached; try again later
gnu/packages/julia-xyz.scm:211:5: julia-chainrulestestutils@0.6.4: archival rate limit exceeded; try again later

gnu/packages/julia-xyz.scm:528:5: julia-fillarrays@0.11.7: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:309:5: julia-commonsubexpressions@0.3.0: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:131:5: julia-calculus@0.5.1: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:441:5: julia-diffresults@1.0.3: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:488:5: julia-difftests@0.1.1: archival rate limit exceeded; try again later
guix lint: error: julia-compilersupportlibraries: unknown package
guix lint: error: julia-openspecfun: unknown package
gnu/packages/julia-xyz.scm:1112:5: julia-specialfunctions@1.3.0: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:155:5: julia-chainrules@0.7.54: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:613:5: julia-forwarddiff@0.10.17: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:1221:5: julia-zygoterules@0.2.1: archival rate limit exceeded; try again later
gnu/packages/julia-xyz.scm:1243:5: julia-zygote@0.6.4: archival rate limit exceeded; try again later


Last, well, I feel motivated to implement an (recursive) importer, even
inaccurate, it will greatly help.


All the best,
simon

zimoun (29):
gnu: Add julia-constructionbase.
gnu: Add julia-macrotools.
gnu: Add julia-nanmath.
gnu: Add julia-reexport.
gnu: Add julia-irtools.
gnu: Add julia-staticarrays.
gnu: Add julia-unitful.
gnu: Add julia-abstractffts.
gnu: Add julia-colortypes.
gnu: Add julia-colors.
gnu: Add julia-example.
gnu: Add julia-requires.
gnu: Add julia-chainrulescore.
gnu: Add julia-richardson.
gnu: Add julia-finitedifferences.
gnu: Add julia-chainrulestestutils.
gnu: Add julia-fillarrays.
gnu: Add julia-commonsubexpressions.
gnu: Add julia-calculus.
gnu: Add julia-diffresults.
gnu: Add julia-difftests.
gnu: Add julia-compilersupportlibraries-jll.
gnu: Add julia-openspecfun-jll.
gnu: Add julia-specialfunctions.
gnu: Add julia-diffrules.
gnu: Add julia-chainrules.
gnu: Add julia-forwarddiff.
gnu: Add julia-zygoterules.
gnu: Add julia-zygote.

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


base-commit: a2f3a456bec357394fe550d927c26bbbdaa7ba6e
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 01/29] gnu: Add julia-constructionbase.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-1-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-constructionbase): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0d35cbde57..2e344fd6f1 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -117,6 +118,27 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+(define-public julia-constructionbase
+ (let ((commit "de77e2865b554f9b078fd8c35b593cce0554ae02"))
+ (package
+ (name "julia-constructionbase")
+ (version "1.1.0") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaObjects/ConstructionBase.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1y79sfj0rds1skl9j16p9161hwa9khm0xc2m4hgjcbh5zzvyr57v"))))
+ (build-system julia-build-system)
+ (home-page "https://juliaobjects.github.io/ConstructionBase.jl/dev/")
+ (synopsis "Primitive functions for construction of objects")
+ (description "This very lightwight package provides primitive functions
+for construction of objects.")
+ (license license:expat))))
+
(define-public julia-datastructures
(package
(name "julia-datastructures")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 03/29] gnu: Add julia-nanmath.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-3-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-nanmath): 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 c187c905b0..e2cd912e4b 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -435,6 +435,26 @@ TLS} and cryptography C libary for Julia.")
wrappers.")
(license license:expat)))
+(define-public julia-nanmath
+ (package
+ (name "julia-nanmath")
+ (version "0.3.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mlubin/NaNMath.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hczhz00qj99w63vp627kwk02l2sr2qmzc2rkwwkdwvzy670p25q"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/mlubin/NaNMath.jl")
+ (synopsis "Implementations of basic math functions")
+ (description "Implementations of basic math functions which return
+@code{NaN} instead of throwing a @code{DomainError}.")
+ (license license:expat)))
+
(define-public julia-orderedcollections
(package
(name "julia-orderedcollections")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 02/29] gnu: Add julia-macrotools.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-2-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-macrotools): New variable.
---
gnu/packages/julia-xyz.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 2e344fd6f1..c187c905b0 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -344,6 +344,27 @@ used in autogenerated packages via @code{BinaryBuilder.jl}.")
and printing JSON documents.")
(license license:expat)))
+(define-public julia-macrotools
+ (package
+ (name "julia-macrotools")
+ (version "0.5.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/MacroTools.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0k4z2hyasd9cwxf4l61zk3w4ajs44k69wx6z1ghdn8f5p8xy217f"))))
+ (build-system julia-build-system)
+ (home-page "https://fluxml.ai/MacroTools.jl")
+ (synopsis "Tools for working with Julia code and expressions")
+ (description "This library provides tools for working with Jlia code and
+expressions. This includes a template-matching system and code-walking tools
+that let you do deep transformations of code..")
+ (license license:expat)))
+
(define-public julia-mbedtls
(package
(name "julia-mbedtls")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 04/29] gnu: Add julia-reexport.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-4-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-reexport): New variable.
---
gnu/packages/julia-xyz.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index e2cd912e4b..727c4285f9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -522,6 +522,25 @@ languages like Fortran.")
utilities for Julia.")
(license license:expat)))
+(define-public julia-reexport
+ (package
+ (name "julia-reexport")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/simonster/Reexport.jl")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1yhhja1zz6dy5f4fd19bdwd6jwgj7q4w3avzgyg1hjhmdl8jrh0s"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/simonster/Reexport.jl")
+ (synopsis "Re-export modules and symbols")
+ (description "This package provides tools to re-export modules and symbols.")
+ (license license:expat)))
+
(define-public julia-uris
(package
(name "julia-uris")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 05/29] gnu: Add julia-irtools.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-5-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-irtools): 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 727c4285f9..9a34fea4ea 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -276,6 +276,32 @@ implementing both a client and a server.")
allows to interface with @file{.ini} files.")
(license license:expat)))
+(define-public julia-irtools
+ (package
+ (name "julia-irtools")
+ (version "0.4.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/IRTools.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0wwzy77jcdnffnd5fr6xan7162g4wydz67igrq82wflwnrhlcx5y"))))
+ (arguments
+ '(#:tests? #f)) ;require Documenter, not packaged yet
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/FluxML/IRTools.jl")
+ (synopsis "Simpe and flexible IR format")
+ (description "This package provides a simple and flexible IR format,
+expressive enough to work with both lowered and typed Julia code, as well as
+external IRs. It can be used with Julia metaprogramming tools such as
+Cassette.")
+ (license license:expat)))
+
(define-public julia-jllwrappers
(package
(name "julia-jllwrappers")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 06/29] gnu: Add julia-staticarrays.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-6-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-staticarrays): 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 9a34fea4ea..226d4dff6c 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -567,6 +567,31 @@ utilities for Julia.")
(description "This package provides tools to re-export modules and symbols.")
(license license:expat)))
+(define-public julia-staticarrays
+ (package
+ (name "julia-staticarrays")
+ (version "1.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaArrays/StaticArrays.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "01z8bcqwpfkp8p1h1r36pr5cc3798y76zkas7g3206pcsdhvlkz1"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-benchmarktools" ,julia-benchmarktools)))
+ (home-page "https://github.com/JuliaArrays/StaticArrays.jl")
+ (synopsis "Statically sized arrays")
+ (description "This package provides a framework for implementing
+statically sized arrays in Julia, using the abstract type
+@code{StaticArray{Size,T,N} <: AbstractArray{T,N}}. Subtypes of
+@code{StaticArray} will provide fast implementations of common array and
+linear algebra operations.")
+ (license license:expat)))
+
(define-public julia-uris
(package
(name "julia-uris")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 07/29] gnu: Add julia-unitful.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-7-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-unitful): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 226d4dff6c..5d3db1cd4b 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -625,3 +625,25 @@ linear algebra operations.")
working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
3986.")
(license license:expat)))
+
+(define-public julia-unitful
+ (package
+ (name "julia-unitful")
+ (version "1.6.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/PainterQubits/Unitful.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0g5bhlvay9yk11c5dqwbzmb3q7lzj0cq5zchyk39d59fkvvmxvq3"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-constructionbase" ,julia-constructionbase)))
+ (home-page "https://painterqubits.github.io/Unitful.jl/stable/")
+ (synopsis "Physical units in Julia")
+ (description "This package supports SI units and also many other unit
+system.")
+ (license license:expat)))
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 08/29] gnu: Add julia-abstractffts.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-8-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-abstractffts): 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 5d3db1cd4b..d417a996f8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -24,6 +24,31 @@
#:use-module (guix build-system julia)
#:use-module (gnu packages tls))
+(define-public julia-abstractffts
+ (package
+ (name "julia-abstractffts")
+ (version "1.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/AbstractFFTS.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0083pwdyxjb04i330ir9pc8kmp4bwk59lx1jgc9qi05y8j7xzbp0"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-unitful" ,julia-unitful)))
+ (home-page "https://github.com/JuliaGPU/Adapt.jl")
+ (synopsis "General framework for fast Fourier transforms (FFTs)")
+ (description "This package allows multiple FFT packages to co-exist with
+the same underlying @code{fft(x)} and @code{plan_fft(x)} interface. It is
+mainly not intended to be used directly. Instead, developers of packages that
+implement FFTs (such as @code{FFTW.jl} or @code{FastTransforms.jl}) extend the
+types/functions defined in AbstractFFTs.")
+ (license license:expat)))
+
(define-public julia-adapt
(package
(name "julia-adapt")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:45
[PATCH 09/29] gnu: Add julia-colortypes.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194558.17819-9-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-colortypes): 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 d417a996f8..3213efd715 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,32 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-colortypes
+ (package
+ (name "julia-colortypes")
+ (version "0.10.12")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaGraphics/ColorTypes.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "176hr3qbz7lncmykks2qaj3cqisnzim7wi5jwsca9ld26wwyvyqq"))))
+ (arguments
+ '(#:tests? #f)) ;require Documenter, not packaged yet
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
+ (home-page "https://github.com/JuliaGraphics/ColorTypes.jl")
+ (synopsis "Basic color types and constructor")
+ (description "This minimalistic package serves as the foundation for
+working with colors in Julia. It defines basic color types and their
+constructors, and sets up traits and show methods to make them easier to work
+with.")
+ (license license:expat)))
+
(define-public julia-compat
(package
(name "julia-compat")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 10/29] gnu: Add julia-colors.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-1-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-colors): New variable.
---
gnu/packages/julia-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 3213efd715..84c98b32af 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,46 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-colors
+ (package
+ (name "julia-colors")
+ (version "0.12.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaGraphics/Colors.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "156zsszgwh6bmznsan0zyha6yvcxw3c5mvc5vr2qfsgxbyh36ln6"))))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-test
+ (lambda _
+ (substitute* "test/parse.jl"
+ (("@test_logs \\(:warn, r\"Use \\\\\"SeaGreen\\\\\" or \\\\\"seagreen\\\\\"\"\\)")
+ ""))
+ (substitute* "test/utilities.jl"
+ (("@test_logs \\(:warn, r\"Base\\\\\\.hex\\\\\\(c\\\\\\) has been moved\"\\)")
+ "")
+ (("@test_logs \\(:warn, r\"will soon be changed\"\\)")
+ ""))
+ #t)))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-colortypes" ,julia-colortypes)
+ ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
+ ("julia-reexport" ,julia-reexport)))
+ (home-page "https://github.com/JuliaGraphics/Colors.jl")
+ (synopsis "Tools for dealing with color")
+ (description "This package provides a wide array of functions for dealing
+with color. This includes conversion between colorspaces, measuring distance
+between colors, simulating color blindness, parsing colors, and generating
+color scales for graphics.")
+ (license license:expat)))
+
(define-public julia-colortypes
(package
(name "julia-colortypes")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 11/29] gnu: Add julia-example.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-2-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-example): 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 84c98b32af..09e2c3ae6f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -254,6 +254,26 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
@code{Accumulators}, @code{LinkedLists}, @code{SortedDicts} and many others.")
(license license:expat)))
+(define-public julia-example
+ (let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
+ (package
+ (name "julia-example")
+ (version "0.5.4") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Example.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1v3z0d6gh6wfbypffy9m9rhh36px6fm5wjzq0y6rbmc95r0qpqlx"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Example.jl")
+ (synopsis "Module providing examples")
+ (description "This package provides various examples.")
+ (license license:expat))))
+
(define-public julia-fixedpointnumbers
(package
(name "julia-fixedpointnumbers")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 12/29] gnu: Add julia-requires.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-3-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-requires): 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 09e2c3ae6f..f0df73a23c 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -678,6 +678,32 @@ utilities for Julia.")
(description "This package provides tools to re-export modules and symbols.")
(license license:expat)))
+(define-public julia-requires
+ (package
+ (name "julia-requires")
+ (version "1.1.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/Requires.jl/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03hyfy7c0ma45b0y756j76awi3az2ii4bz4s8cxm3xw9yy1z7b01"))))
+ (build-system julia-build-system)
+ (inputs ;required for test
+ `(("julia-example" ,julia-example)))
+ (propagated-inputs
+ `(("julia-colors" ,julia-colors)))
+ (home-page "https://github.com/JuliaPackaging/Requires.jl/")
+ (synopsis "Faster package loader")
+ (description "This package make loading packages faster, maybe. It
+supports specifying glue code in packages which will load automatically when
+another package is loaded, so that explicit dependencies (and long load times)
+can be avoided.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 13/29] gnu: Add julia-chainrulescore.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-4-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrulescore): 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 f0df73a23c..f3a37839e8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,31 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-chainrulescore
+ (package
+ (name "julia-chainrulescore")
+ (version "0.9.29")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRulesCore.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1k0iayw39n1ikkkhvyi4498vsnzc94skqs41gnd15632gxjfvki4"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-benchmarktools" ,julia-benchmarktools)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (propagated-inputs
+ `(("julia-compat" ,julia-compat)))
+ (home-page "https://github.com/JuliaDiff/ChainRulesCore.jl")
+ (synopsis "Common utilities used by downstream automatic differentiation tools")
+ (description "The package provides a light-weight dependency for defining
+sensitivities for functions without the need to depend on ChainRules itself.")
+ (license license:expat)))
+
(define-public julia-colors
(package
(name "julia-colors")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 14/29] gnu: Add julia-richardson.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-5-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-richardson): New variable.
---
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index f3a37839e8..a4841fb0f7 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -729,6 +729,33 @@ another package is loaded, so that explicit dependencies (and long load times)
can be avoided.")
(license license:expat)))
+(define-public julia-richardson
+ (package
+ (name "julia-richardson")
+ (version "1.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/Richardson.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06v9ii3d7hh41fsrfklaa8ap55z5s017f888mrd1c18y4fx9i4nx"))))
+ (build-system julia-build-system)
+ (home-page "https://juliapackages.com/p/richardson")
+ (synopsis "Extrapolate function using Richardson method")
+ (description "This package provides a function extrapolate that
+extrapolates a given function @code{f(x)} to @code{f(x0)}, evaluating @code{f}
+only at a geometric sequence of points @code{> x0} (or optionally @code{<
+x0}). The key algorithm is Richardson extrapolation using a Neville–Aitken
+tableau, which adaptively increases the degree of an extrapolation polynomial
+until convergence is achieved to a desired tolerance (or convergence stalls
+due to e.g. floating-point errors). This allows one to obtain @code{f(x0)} to
+high-order accuracy, assuming that @code{f(x0+h)} has a Taylor series or some
+other power series in @code{h}.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 15/29] gnu: Add julia-finitedifferences.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-6-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-finitedifferences): 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 a4841fb0f7..5eb9217eae 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -299,6 +299,32 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
(description "This package provides various examples.")
(license license:expat))))
+(define-public julia-finitedifferences
+ (package
+ (name "julia-finitedifferences")
+ (version "0.12.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/FiniteDifferences.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0dcx34026xdpfmbjls3mrknl8ww62kxxfr77kfihbazsfg2gp5b4"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-benchmarktools" ,julia-benchmarktools)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-richardson" ,julia-richardson)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaDiff/FiniteDifferences.jl")
+ (synopsis "Estimates derivatives with finite differences")
+ (description "This package calculates approximate derivatives numerically
+using finite difference.")
+ (license license:expat)))
+
(define-public julia-fixedpointnumbers
(package
(name "julia-fixedpointnumbers")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 16/29] gnu: Add julia-chainrulestestutils.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-7-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrulestestutils): New variable.
---
gnu/packages/julia-xyz.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 5eb9217eae..6ddeee7172 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -146,6 +146,38 @@ reading and writing faster.")
sensitivities for functions without the need to depend on ChainRules itself.")
(license license:expat)))
+(define-public julia-chainrulestestutils
+ (package
+ (name "julia-chainrulestestutils")
+ (version "0.6.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRulesTestUtils.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1pzs947adnb3cx1qd0cxp2fidk9szz0zsqbas90z1lhydykkvkil"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-compat" ,julia-compat)
+ ("julia-finitedifference" ,julia-finitedifferences)))
+ (home-page "https://github.com/JuliaDiff/ChainRulesTestUtils.jl")
+ (synopsis "Common utilities used by downstream automatic differentiation tools")
+ (description "This package is designed to help in testing
+@code{ChainRulesCore.frule} and @code{ChainRulesCore.rrule} methods. The main
+entry points are @code{ChainRulesTestUtils.frule_test},
+@code{ChainRulesTestUtils.rrule_test}, and
+@code{ChainRulesTestUtils.test_scalar}. Currently this is done via testing the
+rules against numerical differentiation (using @code{FiniteDifferences.jl}).
+
+@code{ChainRulesTestUtils.jl} is separated from @code{ChainRulesCore.jl} so that it
+can be a test-only dependency, allowing it to have potentially heavy
+dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible.")
+ (license license:expat)))
+
(define-public julia-colors
(package
(name "julia-colors")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 17/29] gnu: Add julia-fillarrays.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-8-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-fillarrays): 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 6ddeee7172..caae91cece 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -331,6 +331,30 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
(description "This package provides various examples.")
(license license:expat))))
+(define-public julia-fillarrays
+ (package
+ (name "julia-fillarrays")
+ (version "0.11.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaArrays/FillArrays.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1q1qn9pb5dmppddnmf8gggdqyvivqh3ffvbblhn37smcf9r5sy7d"))))
+ (build-system julia-build-system)
+ (inputs ;required by tests
+ `(("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaArrays/FillArrays.jl")
+ (synopsis "Lazy matrix representation")
+ (description "This package allows to lazily represent matrices filled with
+a single entry, as well as identity matrices. This package exports the
+following types: @code{Eye}, @code{Fill}, @code{Ones}, @code{Zeros},
+@code{Trues} and @code{Falses}.")
+ (license license:expat)))
+
(define-public julia-finitedifferences
(package
(name "julia-finitedifferences")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 18/29] gnu: Add julia-commonsubexpressions.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-9-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-commonsubexpressions): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index caae91cece..d14fa66fe5 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -244,6 +244,28 @@ constructors, and sets up traits and show methods to make them easier to work
with.")
(license license:expat)))
+(define-public julia-commonsubexpressions
+ (package
+ (name "julia-commonsubexpressions")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rdeits/CommonSubexpressions.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0mgy90kk8ksv3l720kkk04gnhn4aqhh2dj4sp3x8yy3limngfjay"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/rdeits/CommonSubexpressions.jl")
+ (synopsis "Macro @code{@cse}")
+ (description "This package provides the @code{@cse} macro, which performs
+common subexpression elimination.")
+ (license license:expat)))
+
(define-public julia-compat
(package
(name "julia-compat")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 19/29] gnu: Add julia-calculus.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194641.18110-10-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-calculus): 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 d14fa66fe5..dfab3c20af 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,30 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-calculus
+ (package
+ (name "julia-calculus")
+ (version "0.5.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/Calculus.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0xh0ak2ycsjw2h86ja24ch3kn2d18zx3frrds78aimwdnqb1gdc2"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaMath/Calculus.jl")
+ (synopsis "Common utilities for automatic differentiation")
+ (description "This package provides tools for working with the basic
+calculus operations of differentiation and integration. The @code{Calculus}
+package produces approximate derivatives by several forms of finite
+differencing or produces exact derivative using symbolic differentiation. It
+can also be used to compute definite integrals by different numerical
+methods.")
+ (license license:expat)))
+
(define-public julia-chainrulescore
(package
(name "julia-chainrulescore")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 20/29] gnu: Add julia-diffresults.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-1-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-diffresults): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index dfab3c20af..12798e1d0f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -357,6 +357,28 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
@code{Accumulators}, @code{LinkedLists}, @code{SortedDicts} and many others.")
(license license:expat)))
+(define-public julia-diffresults
+ (package
+ (name "julia-diffresults")
+ (version "1.0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffResults.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1w6p3yxajvclax5b9g7cr2jmbc7lvr5nk4gq0aljxdycdq1d2y3v"))))
+ (propagated-inputs
+ `(("julia-staticarrays" ,julia-staticarrays)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffResults.jl")
+ (synopsis "In-place differentiation methods of primal values at multi-order")
+ (description "This package provides the @code{DiffResult} type, which can
+be passed to in-place differentiation methods instead of an output buffer.")
+ (license license:expat)))
+
(define-public julia-example
(let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
(package
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 21/29] gnu: Add julia-difftests.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-2-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-difftests): 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 12798e1d0f..e22e91bc78 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -379,6 +379,26 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
be passed to in-place differentiation methods instead of an output buffer.")
(license license:expat)))
+(define-public julia-difftests
+ (package
+ (name "julia-difftests")
+ (version "0.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffTests.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rxpnd5zi3pxgdd38l5jm2sxc3q6p7g57fqgll2dsiin07y3my57"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffTests.jl")
+ (synopsis "Common test functions for differentiation tools")
+ (description "This package contains a common suite of test functions for
+stressing the robustness of differentiation tools.")
+ (license license:expat)))
+
(define-public julia-example
(let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
(package
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 22/29] gnu: Add julia-compilersupportlibraries-jll.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-3-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-compilersupportlibraries-jll): New variable.
---
gnu/packages/julia-xyz.scm | 44 ++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (64 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index e22e91bc78..02466fcd04 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -22,6 +22,7 @@
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system julia)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages tls))
(define-public julia-abstractffts
@@ -312,6 +313,49 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+;;; TODO: Remove this autogenerated source package
+;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
+(define-public julia-compilersupportlibraries-jll
+ (package
+ (name "julia-compilersupportlibraries-jll")
+ (version "0.4.0+1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+ (commit (string-append "CompilerSupportLibraries-v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03j6xdvps259mhdzpjqf41l65w2l9sahvxg4wrp34hcf69wkrzpy"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f ; no runtests.jl
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"CompilerSupportLibraries\", \""
+ (assoc-ref inputs "gfortran:lib") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$"))
+ #t)))))
+ (inputs ;required by artifacts
+ `(("gfortran:lib" ,gfortran "lib")))
+ (propagated-inputs
+ `(("julia-jllwrappers" ,julia-jllwrappers)))
+ (home-page "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+ (synopsis "Internal wrappers")
+ (description "This package is an autogenerated source package constructed
+using @code{BinaryBuilder.jl}. The originating @code{build_tarballs.jl} script
+can be found on the community build tree Yggdrasil.")
+ (license license:expat)))
+
(define-public julia-constructionbase
(let ((commit "de77e2865b554f9b078fd8c35b593cce0554ae02"))
(package
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 24/29] gnu: Add julia-specialfunctions.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-5-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-specialfunctions): New variable.
---
gnu/packages/julia-xyz.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index afa8e815f8..452b376371 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1016,6 +1016,34 @@ high-order accuracy, assuming that @code{f(x0+h)} has a Taylor series or some
other power series in @code{h}.")
(license license:expat)))
+(define-public julia-specialfunctions
+ (package
+ (name "julia-specialfunctions")
+ (version "1.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/SpecialFunctions.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rfhrrkzi3ils7fklbn35ki1yp5x88fi71qknfwqyw4pk8cf8p80"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-chainrulestestutils" ,julia-chainrulestestutils)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-openspecfun-jll" ,julia-openspecfun-jll)))
+ (home-page "https://github.com/JuliaMath/SpecialFunctions.jl")
+ (synopsis "Special mathematical functions")
+ (description "This package provides special mathematical functions,
+including Bessel, Hankel, Airy, error, Dawson, exponential (or sine and
+cosine) integrals, eta, zeta, digamma, inverse digamma, trigamma, and
+polygamma functions. Most of these functions were formerly part of Base in
+early versions of Julia.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 25/29] gnu: Add julia-diffrules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-6-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-diffrules): 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 452b376371..49f0d54d17 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -424,6 +424,31 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
be passed to in-place differentiation methods instead of an output buffer.")
(license license:expat)))
+(define-public julia-diffrules
+ (package
+ (name "julia-diffrules")
+ (version "1.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0cwjvj4gma7924fm3yas0nf0jlnwwx4v7fi79ii3s290lkdldzfl"))))
+ (propagated-inputs
+ `(("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffRules.jl")
+ (synopsis "Primitive differentiation rules")
+ (description "This package provides primitive differentiation rules that
+can be composed via various formulations of the chain rule. Using
+@code{DiffRules}, new differentiation rules can defined, query whether or not
+a given rule exists, and symbolically apply rules to simple Julia expressions.")
+ (license license:expat)))
+
(define-public julia-difftests
(package
(name "julia-difftests")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 26/29] gnu: Add julia-chainrules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-7-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrules): New variable.
---
gnu/packages/julia-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 49f0d54d17..563bdc7dc1 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -147,6 +147,37 @@ can also be used to compute definite integrals by different numerical
methods.")
(license license:expat)))
+(define-public julia-chainrules
+ (package
+ (name "julia-chainrules")
+ (version "0.7.54")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1x4w71v8cw0vpba47h8f5xq4gyjfxbcvayzf7m41yg8gf49s9pkf"))))
+ (build-system julia-build-system)
+ (inputs ;required for test
+ `(("julia-chainrulestestutils" ,julia-chainrulestestutils)
+ ("julia-finitedifferences" ,julia-finitedifferences)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-compat" ,julia-compat)
+ ("julia-reexport" ,julia-reexport)
+ ("julia-requires" ,julia-requires)))
+ (home-page "https://github.com/JuliaDiff/ChainRules.jl")
+ (synopsis "Common utilities for automatic differentiation")
+ (description "The is package provides a variety of common utilities that
+can be used by downstream automatic differentiation (AD) tools to define and
+execute forward-, reverse-, and mixed-mode primitives.")
+ (license license:expat)))
+
(define-public julia-chainrulescore
(package
(name "julia-chainrulescore")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 27/29] gnu: Add julia-forwarddiff.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-8-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-forwarddiff): New variable.
---
gnu/packages/julia-xyz.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 563bdc7dc1..38c3f1a131 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -605,6 +605,38 @@ 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-forwarddiff
+ (package
+ (name "julia-forwarddiff")
+ (version "0.10.17")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ForwardDiff.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "17xaz4v0zr46p7w873w1fwf31phdnhr0vbdym9yr4flmpzi528jw"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-calculus" ,julia-calculus)
+ ("julia-difftests" ,julia-difftests)))
+ (propagated-inputs
+ `(("julia-commonsubexpressions" ,julia-commonsubexpressions)
+ ("julia-diffresults" ,julia-diffresults)
+ ("julia-diffrules" ,julia-diffrules)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaDiff/ForwardDiff.jl")
+ (synopsis "Fixed point types for Julia")
+ (description "This package implements methods to take derivatives,
+gradients, Jacobians, Hessians, and higher-order derivatives of native Julia
+functions (or any callable object, really) using forward mode automatic
+differentiation (AD).")
+ (license license:expat)))
+
(define-public julia-http
(package
(name "julia-http")
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 28/29] gnu: Add julia-zygoterules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-9-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-zygoterules): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 38c3f1a131..464a6377f6 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1212,3 +1212,25 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
(description "This package supports SI units and also many other unit
system.")
(license license:expat)))
+
+(define-public julia-zygoterules
+ (package
+ (name "julia-zygoterules")
+ (version "0.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/ZygoteRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "07i2mf6rr5b8i6l82qgwl5arsb5pwyyzyfasgnszhdqllk9501bs"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/FluxML/ZygoteRules.jl")
+ (synopsis "Add minimal custom gradients to Zygote ")
+ (description "Minimal package which enables to add custom gradients to
+Zygote, without depending on Zygote itself.")
+ (license license:expat)))
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 29/29] gnu: Add julia-zygote.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-10-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-zygote): New variable.
---
gnu/packages/julia-xyz.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 464a6377f6..9ee1f9dd4a 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1234,3 +1234,38 @@ system.")
(description "Minimal package which enables to add custom gradients to
Zygote, without depending on Zygote itself.")
(license license:expat)))
+
+(define-public julia-zygote
+ (package
+ (name "julia-zygote")
+ (version "0.6.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/Zygote.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1h2ph0lsisbkh8y4xgwzgw9p5zi243q8zzp5gfh3zw9pzkx6a1rf"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f)) ;require CUDA, not packaged yet
+ (propagated-inputs
+ `(("julia-abstractffs" ,julia-abstractffts)
+ ("julia-chainrules" ,julia-chainrules)
+ ("julia-diffrules" ,julia-diffrules)
+ ("julia-fillarrays" ,julia-fillarrays)
+ ("julia-forwarddiff" ,julia-forwarddiff)
+ ("julia-irtools" ,julia-irtools)
+ ("julia-macrotools" ,julia-macrotools)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-requires" ,julia-requires)
+ ("julia-specialfunctions" ,julia-specialfunctions)
+ ("julia-zygote-rules" ,julia-zygoterules)))
+ (home-page "https://fluxml.ai/Zygote.jl")
+ (synopsis "Automatic differentiation in Julia")
+ (description "Zygote provides source-to-source automatic
+differentiation (AD) in Julia, and is the next-generation AD system for the
+Flux differentiable programming framework.")
+ (license license:expat)))
--
2.28.0
Z
Z
zimoun wrote on 23 Mar 2021 20:46
[PATCH 23/29] gnu: Add julia-openspecfun-jll.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210323194656.18303-4-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-openspecfun-jll): New variable.
---
gnu/packages/julia-xyz.scm | 46 ++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (66 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 02466fcd04..afa8e815f8 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -23,6 +23,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system julia)
#:use-module (gnu packages gcc)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages tls))
(define-public julia-abstractffts
@@ -878,6 +879,51 @@ have arbitrary indices, similar to those found in some other programming
languages like Fortran.")
(license license:expat)))
+;;; TODO: Remove this autogenerated source package
+;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
+(define-public julia-openspecfun-jll
+(let ((commit "6c505cce3bdcd9cd2b15b4f9362ec3a42c4da71c"))
+ (package
+ (name "julia-openspecfun-jll")
+ (version "0.5.3+4") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0bl2gcgndsbiwhwy8fl070cjm1fyf9kxj6gkikgirmzgjl29iakn"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f ; no runtests.jl
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"OpenSpecFun\", \""
+ (assoc-ref inputs "openspecfun") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$"))
+ #t)))))
+ (inputs
+ `(("openspecfun" ,openspecfun)))
+ (propagated-inputs
+ `(("julia-jllwrappers" ,julia-jllwrappers)
+ ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)))
+ (home-page "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+ (synopsis "Internal wrappers")
+ (description "This package is an autogenerated source package constructed
+using @code{BinaryBuilder.jl}. The originating @code{build_tarballs.jl} script
+can be found on the community build tree Yggdrasil.")
+ (license license:expat))))
+
(define-public julia-parsers
(package
(name "julia-parsers")
--
2.28.0
N
N
Nicolò Balzarotti wrote on 23 Mar 2021 23:48
Re: [bug#47350] [PATCH 00/29] Add Zygote (piece for Machine Learning with Julia)
87wntxmqqb.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (1 lines)
> Hi,
Hi!

Toggle quote (3 lines)
>
> This adds all the packages required to build Zygote, the source-to-source
> automatic differentiation in Julia.
Wonderful, nice to see the first contribution to julia packages :)

Toggle quote (4 lines)
>
> Last, well, I feel motivated to implement an (recursive) importer, even
> inaccurate, it will greatly help.
>
I found yesterday julihub, which might help in that regard a lot. I'll
share here my notes (still no implementation), if I'm not missing
something obvious, this importer should be super easy. Let me know what
you think about those:

1. refresh the package list (json)
2. search the required package (.name field)
3. get info on the package (.metadata.docslink) / pkg.json
4. extract:
- version
- homepage
- license
- repository
- description
- direct dependencies (used in propagated-inputs field)
store them into a list
- indirect dependencies
add them to the dependency list
- binary (jll) dependencies
tell the user those must be fixed
- remove duplicates/packages already in guix
- repeat 4 for each dependency


Thanks, Nicolò
Z
Z
zimoun wrote on 24 Mar 2021 00:01
(address . ludo@gnu.org)
86tup1iifm.fsf@gmail.com
Hi,

On Tue, 23 Mar 2021 at 23:48, Nicolò Balzarotti <anothersms@gmail.com> wrote:
Toggle quote (6 lines)
> zimoun <zimon.toutoune@gmail.com> writes:

>> This adds all the packages required to build Zygote, the source-to-source
>> automatic differentiation in Julia.
> Wonderful, nice to see the first contribution to julia packages :)

If you want to review, then it would help. :-) You do not need to be
committer because it is checking and commenting, or by simply saying
LGTM. For example, I am not committer and I reviewed ocaml packages or
camlboot.

It would help to reduce the load on the committer’s shoulders. ;-)

Well, I would like to have these stuffs in the next release 1.2.1.


Toggle quote (6 lines)
>> Last, well, I feel motivated to implement an (recursive) importer, even
>> inaccurate, it will greatly help.
>>
> I found yesterday julihub, which might help in that regard a lot.
> I'll

Cool! I am moving the discussion about that on guix-devel and I will
comment once I have read a bit this juliahub thing. :-)


Thanks,
simon
N
N
Nicolò Balzarotti wrote on 24 Mar 2021 09:15
(address . ludo@gnu.org)
87sg4ldl1z.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (2 lines)
> If you want to review, then it would help. :-)

Here you go:

Patch applies and everything builds fine. I also checked the
licenses and they seems fine. I run some example on the Zygote tutorial
and it worked

Some notes:

julia-macrotools:
Toggle quote (1 lines)
> +that let you do deep transformations of code..")
two dots

julia-colors:
Instead of removing the tests, calling julia with --depwarn=yes
should do the trick.
I changed the (check) function in julia-build-system adding
replacing invoke "julia" with invoke "julia" "--depwarn=yes", removed
your phase from julia-colors and everything went well (built zygote and
HTTP, which should cover all packages we have). Would you mind
fixing the build system directly? As I guess other packages will fail
the same way


julia-compilersupportlibraries-jll:
julia-openspecfun-jll:
I'd change package description, as it's the default and shared between
all jll packages

julia-constructionbase:
typo: lightwight -> lightweight

julia-irtool:
typo: simpe -> simple

julia-macrotools:
typo: Jlia -> Julia

julia-specialfuntions:
Toggle quote (1 lines)
> Most of these functions were formerly part of Base in early versions of Julia.
I'd remove this from the description

julia-forwarddiff:
synopsis seems wrong

julia-zygoterules:
extra space at the end of synopsis

Thanks, Nicolò
Z
Z
zimoun wrote on 24 Mar 2021 10:35
(address . ludo@gnu.org)
86h7l0hp25.fsf@gmail.com
Hi Nicoló,

On Wed, 24 Mar 2021 at 09:15, Nicolò Balzarotti <anothersms@gmail.com> wrote:
Toggle quote (6 lines)
> zimoun <zimon.toutoune@gmail.com> writes:
>
>> If you want to review, then it would help. :-)
>
> Here you go:

Thanks for the prompt review!


Toggle quote (10 lines)
> julia-colors:
> Instead of removing the tests, calling julia with --depwarn=yes
> should do the trick.
> I changed the (check) function in julia-build-system adding
> replacing invoke "julia" with invoke "julia" "--depwarn=yes", removed
> your phase from julia-colors and everything went well (built zygote and
> HTTP, which should cover all packages we have). Would you mind
> fixing the build system directly? As I guess other packages will fail
> the same way

Ok, I will double-check if we change the option of the build system or
simply locally tweak the arguments case per case.


Thanks again!

Cheers,
simon
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 01/30] build: julia-build-system: Turn on depreciation warnings.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-1-zimon.toutoune@gmail.com
* guix/build/julia-build-system.scm (check): Set option '--depwarn=yes'.
---
guix/build/julia-build-system.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (17 lines)
diff --git a/guix/build/julia-build-system.scm b/guix/build/julia-build-system.scm
index 8f57045a8c..d74acf2a05 100644
--- a/guix/build/julia-build-system.scm
+++ b/guix/build/julia-build-system.scm
@@ -101,7 +101,7 @@ Project.toml)."
(or (getenv "JULIA_LOAD_PATH")
"")))
(setenv "HOME" "/tmp")
- (invoke "julia"
+ (invoke "julia" "--depwarn=yes"
(string-append builddir "packages/"
package "/test/runtests.jl"))))
#t)

base-commit: a2f3a456bec357394fe550d927c26bbbdaa7ba6e
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 03/30] gnu: Add julia-macrotools.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-3-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-macrotools): New variable.
---
gnu/packages/julia-xyz.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

Toggle diff (34 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 7fbb18347f..5ba85f8bc0 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -344,6 +344,27 @@ used in autogenerated packages via @code{BinaryBuilder.jl}.")
and printing JSON documents.")
(license license:expat)))
+(define-public julia-macrotools
+ (package
+ (name "julia-macrotools")
+ (version "0.5.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/MacroTools.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0k4z2hyasd9cwxf4l61zk3w4ajs44k69wx6z1ghdn8f5p8xy217f"))))
+ (build-system julia-build-system)
+ (home-page "https://fluxml.ai/MacroTools.jl")
+ (synopsis "Tools for working with Julia code and expressions")
+ (description "This library provides tools for working with Julia code and
+expressions. This includes a template-matching system and code-walking tools
+that let you do deep transformations of code.")
+ (license license:expat)))
+
(define-public julia-mbedtls
(package
(name "julia-mbedtls")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 04/30] gnu: Add julia-nanmath.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-4-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-nanmath): 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 5ba85f8bc0..6508fa52af 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -435,6 +435,26 @@ TLS} and cryptography C libary for Julia.")
wrappers.")
(license license:expat)))
+(define-public julia-nanmath
+ (package
+ (name "julia-nanmath")
+ (version "0.3.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mlubin/NaNMath.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hczhz00qj99w63vp627kwk02l2sr2qmzc2rkwwkdwvzy670p25q"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/mlubin/NaNMath.jl")
+ (synopsis "Implementations of basic math functions")
+ (description "Implementations of basic math functions which return
+@code{NaN} instead of throwing a @code{DomainError}.")
+ (license license:expat)))
+
(define-public julia-orderedcollections
(package
(name "julia-orderedcollections")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 05/30] gnu: Add julia-reexport.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-5-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-reexport): New variable.
---
gnu/packages/julia-xyz.scm | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 6508fa52af..41acd06ee3 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -522,6 +522,25 @@ languages like Fortran.")
utilities for Julia.")
(license license:expat)))
+(define-public julia-reexport
+ (package
+ (name "julia-reexport")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/simonster/Reexport.jl")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1yhhja1zz6dy5f4fd19bdwd6jwgj7q4w3avzgyg1hjhmdl8jrh0s"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/simonster/Reexport.jl")
+ (synopsis "Re-export modules and symbols")
+ (description "This package provides tools to re-export modules and symbols.")
+ (license license:expat)))
+
(define-public julia-uris
(package
(name "julia-uris")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 06/30] gnu: Add julia-irtools.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-6-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-irtools): 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 41acd06ee3..613b3bb9dc 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -276,6 +276,32 @@ implementing both a client and a server.")
allows to interface with @file{.ini} files.")
(license license:expat)))
+(define-public julia-irtools
+ (package
+ (name "julia-irtools")
+ (version "0.4.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/IRTools.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0wwzy77jcdnffnd5fr6xan7162g4wydz67igrq82wflwnrhlcx5y"))))
+ (arguments
+ '(#:tests? #f)) ;require Documenter, not packaged yet
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/FluxML/IRTools.jl")
+ (synopsis "Simple and flexible IR format")
+ (description "This package provides a simple and flexible IR format,
+expressive enough to work with both lowered and typed Julia code, as well as
+external IRs. It can be used with Julia metaprogramming tools such as
+Cassette.")
+ (license license:expat)))
+
(define-public julia-jllwrappers
(package
(name "julia-jllwrappers")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 07/30] gnu: Add julia-staticarrays.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-7-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-staticarrays): 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 613b3bb9dc..45d18d028f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -567,6 +567,31 @@ utilities for Julia.")
(description "This package provides tools to re-export modules and symbols.")
(license license:expat)))
+(define-public julia-staticarrays
+ (package
+ (name "julia-staticarrays")
+ (version "1.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaArrays/StaticArrays.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "01z8bcqwpfkp8p1h1r36pr5cc3798y76zkas7g3206pcsdhvlkz1"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-benchmarktools" ,julia-benchmarktools)))
+ (home-page "https://github.com/JuliaArrays/StaticArrays.jl")
+ (synopsis "Statically sized arrays")
+ (description "This package provides a framework for implementing
+statically sized arrays in Julia, using the abstract type
+@code{StaticArray{Size,T,N} <: AbstractArray{T,N}}. Subtypes of
+@code{StaticArray} will provide fast implementations of common array and
+linear algebra operations.")
+ (license license:expat)))
+
(define-public julia-uris
(package
(name "julia-uris")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 02/30] gnu: Add julia-constructionbase.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-2-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-constructionbase): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (41 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0d35cbde57..7fbb18347f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -117,6 +118,27 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+(define-public julia-constructionbase
+ (let ((commit "de77e2865b554f9b078fd8c35b593cce0554ae02"))
+ (package
+ (name "julia-constructionbase")
+ (version "1.1.0") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaObjects/ConstructionBase.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1y79sfj0rds1skl9j16p9161hwa9khm0xc2m4hgjcbh5zzvyr57v"))))
+ (build-system julia-build-system)
+ (home-page "https://juliaobjects.github.io/ConstructionBase.jl/dev/")
+ (synopsis "Primitive functions for construction of objects")
+ (description "This very lightweight package provides primitive functions
+for construction of objects.")
+ (license license:expat))))
+
(define-public julia-datastructures
(package
(name "julia-datastructures")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 08/30] gnu: Add julia-unitful.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-8-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-unitful): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 45d18d028f..7a3529fe8f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -625,3 +625,25 @@ linear algebra operations.")
working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
3986.")
(license license:expat)))
+
+(define-public julia-unitful
+ (package
+ (name "julia-unitful")
+ (version "1.6.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/PainterQubits/Unitful.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0g5bhlvay9yk11c5dqwbzmb3q7lzj0cq5zchyk39d59fkvvmxvq3"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-constructionbase" ,julia-constructionbase)))
+ (home-page "https://painterqubits.github.io/Unitful.jl/stable/")
+ (synopsis "Physical units in Julia")
+ (description "This package supports SI units and also many other unit
+system.")
+ (license license:expat)))
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 01:58
Re: [bug#47350] [PATCH 00/29] Add Zygote (piece for Machine Learning with Julia)
(address . ludo@gnu.org)
86ft0kjbgp.fsf@gmail.com
Hi Nicoló,

On Wed, 24 Mar 2021 at 10:35, zimoun <zimon.toutoune@gmail.com> wrote:
Toggle quote (12 lines)
> On Wed, 24 Mar 2021 at 09:15, Nicolò Balzarotti <anothersms@gmail.com> wrote:

>> I changed the (check) function in julia-build-system adding
>> replacing invoke "julia" with invoke "julia" "--depwarn=yes", removed
>> your phase from julia-colors and everything went well (built zygote and
>> HTTP, which should cover all packages we have). Would you mind
>> fixing the build system directly? As I guess other packages will fail
>> the same way
>
> Ok, I will double-check if we change the option of the build system or
> simply locally tweak the arguments case per case.

Hum, I get these kind of messages:

Toggle snippet (5 lines)
Internal error: encountered unexpected error in runtime:
ErrorException("type UnionAll has no field size")
jl_errorf at /tmp/guix-build-julia-1.5.3.drv-0/julia-1.5.3/src/rtutils.c:77

for julia-datastructures for instance. Even if the build is fine and
my small experiments seems correct.

Well, I have set this deprecation warning as a first commit in the v2.


Thanks,
simon
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 11/30] gnu: Add julia-colors.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-10-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-colors): 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 8d28aab7f1..ab238161e9 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,32 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-colors
+ (package
+ (name "julia-colors")
+ (version "0.12.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaGraphics/Colors.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "156zsszgwh6bmznsan0zyha6yvcxw3c5mvc5vr2qfsgxbyh36ln6"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-colortypes" ,julia-colortypes)
+ ("julia-fixedpointnumbers" ,julia-fixedpointnumbers)
+ ("julia-reexport" ,julia-reexport)))
+ (home-page "https://github.com/JuliaGraphics/Colors.jl")
+ (synopsis "Tools for dealing with color")
+ (description "This package provides a wide array of functions for dealing
+with color. This includes conversion between colorspaces, measuring distance
+between colors, simulating color blindness, parsing colors, and generating
+color scales for graphics.")
+ (license license:expat)))
+
(define-public julia-colortypes
(package
(name "julia-colortypes")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 12/30] gnu: Add julia-example.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-11-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-example): 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 ab238161e9..f21ea0afb0 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -240,6 +240,26 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
@code{Accumulators}, @code{LinkedLists}, @code{SortedDicts} and many others.")
(license license:expat)))
+(define-public julia-example
+ (let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
+ (package
+ (name "julia-example")
+ (version "0.5.4") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaLang/Example.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1v3z0d6gh6wfbypffy9m9rhh36px6fm5wjzq0y6rbmc95r0qpqlx"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaLang/Example.jl")
+ (synopsis "Module providing examples")
+ (description "This package provides various examples.")
+ (license license:expat))))
+
(define-public julia-fixedpointnumbers
(package
(name "julia-fixedpointnumbers")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:04
[PATCH v2 09/30] gnu: Add julia-abstractffts.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-9-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-abstractffts): 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 7a3529fe8f..4abeaa765f 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -24,6 +24,31 @@
#:use-module (guix build-system julia)
#:use-module (gnu packages tls))
+(define-public julia-abstractffts
+ (package
+ (name "julia-abstractffts")
+ (version "1.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/AbstractFFTS.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0083pwdyxjb04i330ir9pc8kmp4bwk59lx1jgc9qi05y8j7xzbp0"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-unitful" ,julia-unitful)))
+ (home-page "https://github.com/JuliaGPU/Adapt.jl")
+ (synopsis "General framework for fast Fourier transforms (FFTs)")
+ (description "This package allows multiple FFT packages to co-exist with
+the same underlying @code{fft(x)} and @code{plan_fft(x)} interface. It is
+mainly not intended to be used directly. Instead, developers of packages that
+implement FFTs (such as @code{FFTW.jl} or @code{FastTransforms.jl}) extend the
+types/functions defined in AbstractFFTs.")
+ (license license:expat)))
+
(define-public julia-adapt
(package
(name "julia-adapt")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 13/30] gnu: Add julia-requires.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-12-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-requires): 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 f21ea0afb0..8e95c8b7ed 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -664,6 +664,32 @@ utilities for Julia.")
(description "This package provides tools to re-export modules and symbols.")
(license license:expat)))
+(define-public julia-requires
+ (package
+ (name "julia-requires")
+ (version "1.1.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaPackaging/Requires.jl/")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03hyfy7c0ma45b0y756j76awi3az2ii4bz4s8cxm3xw9yy1z7b01"))))
+ (build-system julia-build-system)
+ (inputs ;required for test
+ `(("julia-example" ,julia-example)))
+ (propagated-inputs
+ `(("julia-colors" ,julia-colors)))
+ (home-page "https://github.com/JuliaPackaging/Requires.jl/")
+ (synopsis "Faster package loader")
+ (description "This package make loading packages faster, maybe. It
+supports specifying glue code in packages which will load automatically when
+another package is loaded, so that explicit dependencies (and long load times)
+can be avoided.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 14/30] gnu: Add julia-chainrulescore.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-13-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrulescore): 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 8e95c8b7ed..0da2452b89 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -121,6 +121,31 @@ operations. It can wrap any @code{IO} type automatically making incremental
reading and writing faster.")
(license license:expat)))
+(define-public julia-chainrulescore
+ (package
+ (name "julia-chainrulescore")
+ (version "0.9.29")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRulesCore.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1k0iayw39n1ikkkhvyi4498vsnzc94skqs41gnd15632gxjfvki4"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-benchmarktools" ,julia-benchmarktools)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (propagated-inputs
+ `(("julia-compat" ,julia-compat)))
+ (home-page "https://github.com/JuliaDiff/ChainRulesCore.jl")
+ (synopsis "Common utilities used by downstream automatic differentiation tools")
+ (description "The package provides a light-weight dependency for defining
+sensitivities for functions without the need to depend on ChainRules itself.")
+ (license license:expat)))
+
(define-public julia-colors
(package
(name "julia-colors")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 15/30] gnu: Add julia-richardson.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-14-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-richardson): New variable.
---
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 0da2452b89..b56fa5427e 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -715,6 +715,33 @@ another package is loaded, so that explicit dependencies (and long load times)
can be avoided.")
(license license:expat)))
+(define-public julia-richardson
+ (package
+ (name "julia-richardson")
+ (version "1.4.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/Richardson.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "06v9ii3d7hh41fsrfklaa8ap55z5s017f888mrd1c18y4fx9i4nx"))))
+ (build-system julia-build-system)
+ (home-page "https://juliapackages.com/p/richardson")
+ (synopsis "Extrapolate function using Richardson method")
+ (description "This package provides a function extrapolate that
+extrapolates a given function @code{f(x)} to @code{f(x0)}, evaluating @code{f}
+only at a geometric sequence of points @code{> x0} (or optionally @code{<
+x0}). The key algorithm is Richardson extrapolation using a Neville–Aitken
+tableau, which adaptively increases the degree of an extrapolation polynomial
+until convergence is achieved to a desired tolerance (or convergence stalls
+due to e.g. floating-point errors). This allows one to obtain @code{f(x0)} to
+high-order accuracy, assuming that @code{f(x0+h)} has a Taylor series or some
+other power series in @code{h}.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 16/30] gnu: Add julia-finitedifferences.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-15-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-finitedifferences): 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 b56fa5427e..ed05af6497 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -285,6 +285,32 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
(description "This package provides various examples.")
(license license:expat))))
+(define-public julia-finitedifferences
+ (package
+ (name "julia-finitedifferences")
+ (version "0.12.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/FiniteDifferences.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0dcx34026xdpfmbjls3mrknl8ww62kxxfr77kfihbazsfg2gp5b4"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-benchmarktools" ,julia-benchmarktools)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-richardson" ,julia-richardson)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaDiff/FiniteDifferences.jl")
+ (synopsis "Estimates derivatives with finite differences")
+ (description "This package calculates approximate derivatives numerically
+using finite difference.")
+ (license license:expat)))
+
(define-public julia-fixedpointnumbers
(package
(name "julia-fixedpointnumbers")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 17/30] gnu: Add julia-chainrulestestutils.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-16-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrulestestutils): New variable.
---
gnu/packages/julia-xyz.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index ed05af6497..4e63c04c5e 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -146,6 +146,38 @@ reading and writing faster.")
sensitivities for functions without the need to depend on ChainRules itself.")
(license license:expat)))
+(define-public julia-chainrulestestutils
+ (package
+ (name "julia-chainrulestestutils")
+ (version "0.6.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRulesTestUtils.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1pzs947adnb3cx1qd0cxp2fidk9szz0zsqbas90z1lhydykkvkil"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-compat" ,julia-compat)
+ ("julia-finitedifference" ,julia-finitedifferences)))
+ (home-page "https://github.com/JuliaDiff/ChainRulesTestUtils.jl")
+ (synopsis "Common utilities used by downstream automatic differentiation tools")
+ (description "This package is designed to help in testing
+@code{ChainRulesCore.frule} and @code{ChainRulesCore.rrule} methods. The main
+entry points are @code{ChainRulesTestUtils.frule_test},
+@code{ChainRulesTestUtils.rrule_test}, and
+@code{ChainRulesTestUtils.test_scalar}. Currently this is done via testing the
+rules against numerical differentiation (using @code{FiniteDifferences.jl}).
+
+@code{ChainRulesTestUtils.jl} is separated from @code{ChainRulesCore.jl} so that it
+can be a test-only dependency, allowing it to have potentially heavy
+dependencies, while keeping @code{ChainRulesCore.jl} as light-weight as possible.")
+ (license license:expat)))
+
(define-public julia-colors
(package
(name "julia-colors")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 18/30] gnu: Add julia-fillarrays.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-17-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-fillarrays): 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 4e63c04c5e..e3d2c9ff89 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -317,6 +317,30 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
(description "This package provides various examples.")
(license license:expat))))
+(define-public julia-fillarrays
+ (package
+ (name "julia-fillarrays")
+ (version "0.11.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaArrays/FillArrays.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1q1qn9pb5dmppddnmf8gggdqyvivqh3ffvbblhn37smcf9r5sy7d"))))
+ (build-system julia-build-system)
+ (inputs ;required by tests
+ `(("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaArrays/FillArrays.jl")
+ (synopsis "Lazy matrix representation")
+ (description "This package allows to lazily represent matrices filled with
+a single entry, as well as identity matrices. This package exports the
+following types: @code{Eye}, @code{Fill}, @code{Ones}, @code{Zeros},
+@code{Trues} and @code{Falses}.")
+ (license license:expat)))
+
(define-public julia-finitedifferences
(package
(name "julia-finitedifferences")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 19/30] gnu: Add julia-commonsubexpressions.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-18-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-commonsubexpressions): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index e3d2c9ff89..c5c04d6579 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -230,6 +230,28 @@ constructors, and sets up traits and show methods to make them easier to work
with.")
(license license:expat)))
+(define-public julia-commonsubexpressions
+ (package
+ (name "julia-commonsubexpressions")
+ (version "0.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rdeits/CommonSubexpressions.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0mgy90kk8ksv3l720kkk04gnhn4aqhh2dj4sp3x8yy3limngfjay"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/rdeits/CommonSubexpressions.jl")
+ (synopsis "Macro @code{@cse}")
+ (description "This package provides the @code{@cse} macro, which performs
+common subexpression elimination.")
+ (license license:expat)))
+
(define-public julia-compat
(package
(name "julia-compat")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 21/30] gnu: Add julia-diffresults.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-19-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-diffresults): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 75b46a1c7c..885a851375 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -343,6 +343,28 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
@code{Accumulators}, @code{LinkedLists}, @code{SortedDicts} and many others.")
(license license:expat)))
+(define-public julia-diffresults
+ (package
+ (name "julia-diffresults")
+ (version "1.0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffResults.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1w6p3yxajvclax5b9g7cr2jmbc7lvr5nk4gq0aljxdycdq1d2y3v"))))
+ (propagated-inputs
+ `(("julia-staticarrays" ,julia-staticarrays)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffResults.jl")
+ (synopsis "In-place differentiation methods of primal values at multi-order")
+ (description "This package provides the @code{DiffResult} type, which can
+be passed to in-place differentiation methods instead of an output buffer.")
+ (license license:expat)))
+
(define-public julia-example
(let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
(package
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 22/30] gnu: Add julia-difftests.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-20-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-difftests): 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 885a851375..9b04e1bd67 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -365,6 +365,26 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
be passed to in-place differentiation methods instead of an output buffer.")
(license license:expat)))
+(define-public julia-difftests
+ (package
+ (name "julia-difftests")
+ (version "0.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffTests.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rxpnd5zi3pxgdd38l5jm2sxc3q6p7g57fqgll2dsiin07y3my57"))))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffTests.jl")
+ (synopsis "Common test functions for differentiation tools")
+ (description "This package contains a common suite of test functions for
+stressing the robustness of differentiation tools.")
+ (license license:expat)))
+
(define-public julia-example
(let ((commit "f968c69dea24f851d0c7e686db23fa55826b5388"))
(package
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 23/30] gnu: Add julia-compilersupportlibraries-jll.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-21-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-compilersupportlibraries-jll): New variable.
---
gnu/packages/julia-xyz.scm | 45 ++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

Toggle diff (65 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 9b04e1bd67..bde72e364d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -22,6 +22,7 @@
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix build-system julia)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages tls))
(define-public julia-abstractffts
@@ -298,6 +299,50 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
way.")
(license license:expat)))
+;;; TODO: Remove this autogenerated source package
+;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
+(define-public julia-compilersupportlibraries-jll
+ (package
+ (name "julia-compilersupportlibraries-jll")
+ (version "0.4.0+1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+ (commit (string-append "CompilerSupportLibraries-v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "03j6xdvps259mhdzpjqf41l65w2l9sahvxg4wrp34hcf69wkrzpy"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f ; no runtests.jl
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"CompilerSupportLibraries\", \""
+ (assoc-ref inputs "gfortran:lib") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$"))
+ #t)))))
+ (inputs ;required by artifacts
+ `(("gfortran:lib" ,gfortran "lib")))
+ (propagated-inputs
+ `(("julia-jllwrappers" ,julia-jllwrappers)))
+ (home-page "https://github.com/JuliaBinaryWrappers/CompilerSupportLibraries_jll.jl")
+ (synopsis "Internal wrappers")
+ (description "This package provides compiler support for libraries. It is
+an autogenerated source package constructed using @code{BinaryBuilder.jl}. The
+originating @code{build_tarballs.jl} script can be found on the community
+build tree Yggdrasil.")
+ (license license:expat)))
+
(define-public julia-constructionbase
(let ((commit "de77e2865b554f9b078fd8c35b593cce0554ae02"))
(package
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 24/30] gnu: Add julia-openspecfun-jll.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-22-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-openspecfun-jll): New variable.
---
gnu/packages/julia-xyz.scm | 47 ++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)

Toggle diff (67 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index bde72e364d..d99eadcfd4 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -23,6 +23,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system julia)
#:use-module (gnu packages gcc)
+ #:use-module (gnu packages maths)
#:use-module (gnu packages tls))
(define-public julia-abstractffts
@@ -865,6 +866,52 @@ have arbitrary indices, similar to those found in some other programming
languages like Fortran.")
(license license:expat)))
+;;; TODO: Remove this autogenerated source package
+;;; and build it from realse source using <https://github.com/JuliaPackaging/Yggdrasil/>
+(define-public julia-openspecfun-jll
+(let ((commit "6c505cce3bdcd9cd2b15b4f9362ec3a42c4da71c"))
+ (package
+ (name "julia-openspecfun-jll")
+ (version "0.5.3+4") ;tag not created upstream
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0bl2gcgndsbiwhwy8fl070cjm1fyf9kxj6gkikgirmzgjl29iakn"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f ; no runtests.jl
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'override-binary-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (map
+ (lambda (wrapper)
+ (substitute* wrapper
+ (("generate_wrapper_header.*")
+ (string-append
+ "generate_wrapper_header(\"OpenSpecFun\", \""
+ (assoc-ref inputs "openspecfun") "\")\n"))))
+ ;; There's a Julia file for each platform, override them all
+ (find-files "src/wrappers/" "\\.jl$"))
+ #t)))))
+ (inputs
+ `(("openspecfun" ,openspecfun)))
+ (propagated-inputs
+ `(("julia-jllwrappers" ,julia-jllwrappers)
+ ("julia-compilersupportlibraries-jll" ,julia-compilersupportlibraries-jll)))
+ (home-page "https://github.com/JuliaBinaryWrappers/OpenSpecFun_jll.jl")
+ (synopsis "Internal wrappers")
+ (description "This package provides a wrapper for OpenSpecFun. It is an
+autogenerated source package constructed using @code{BinaryBuilder.jl}. The
+originating @code{build_tarballs.jl} script can be found on the community
+build tree Yggdrasil.")
+ (license license:expat))))
+
(define-public julia-parsers
(package
(name "julia-parsers")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 25/30] gnu: Add julia-specialfunctions.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-23-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-specialfunctions): New variable.
---
gnu/packages/julia-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (40 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index d99eadcfd4..4bd5a1f9a3 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1004,6 +1004,33 @@ high-order accuracy, assuming that @code{f(x0+h)} has a Taylor series or some
other power series in @code{h}.")
(license license:expat)))
+(define-public julia-specialfunctions
+ (package
+ (name "julia-specialfunctions")
+ (version "1.3.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaMath/SpecialFunctions.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rfhrrkzi3ils7fklbn35ki1yp5x88fi71qknfwqyw4pk8cf8p80"))))
+ (build-system julia-build-system)
+ (inputs
+ `(("julia-chainrulestestutils" ,julia-chainrulestestutils)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-openspecfun-jll" ,julia-openspecfun-jll)))
+ (home-page "https://github.com/JuliaMath/SpecialFunctions.jl")
+ (synopsis "Special mathematical functions")
+ (description "This package provides special mathematical functions,
+including Bessel, Hankel, Airy, error, Dawson, exponential (or sine and
+cosine) integrals, eta, zeta, digamma, inverse digamma, trigamma, and
+polygamma functions.")
+ (license license:expat)))
+
(define-public julia-staticarrays
(package
(name "julia-staticarrays")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 26/30] gnu: Add julia-diffrules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-24-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-diffrules): 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 4bd5a1f9a3..fe1ecf0c9d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -411,6 +411,31 @@ including, @code{CircularBuffer}, @code{Queue}, @code{Stack},
be passed to in-place differentiation methods instead of an output buffer.")
(license license:expat)))
+(define-public julia-diffrules
+ (package
+ (name "julia-diffrules")
+ (version "1.0.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/DiffRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0cwjvj4gma7924fm3yas0nf0jlnwwx4v7fi79ii3s290lkdldzfl"))))
+ (propagated-inputs
+ `(("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)))
+ (build-system julia-build-system)
+ (home-page "https://github.com/JuliaDiff/DiffRules.jl")
+ (synopsis "Primitive differentiation rules")
+ (description "This package provides primitive differentiation rules that
+can be composed via various formulations of the chain rule. Using
+@code{DiffRules}, new differentiation rules can defined, query whether or not
+a given rule exists, and symbolically apply rules to simple Julia expressions.")
+ (license license:expat)))
+
(define-public julia-difftests
(package
(name "julia-difftests")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 27/30] gnu: Add julia-chainrules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-25-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-chainrules): New variable.
---
gnu/packages/julia-xyz.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

Toggle diff (44 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index fe1ecf0c9d..b526306984 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -147,6 +147,37 @@ can also be used to compute definite integrals by different numerical
methods.")
(license license:expat)))
+(define-public julia-chainrules
+ (package
+ (name "julia-chainrules")
+ (version "0.7.54")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ChainRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1x4w71v8cw0vpba47h8f5xq4gyjfxbcvayzf7m41yg8gf49s9pkf"))))
+ (build-system julia-build-system)
+ (inputs ;required for test
+ `(("julia-chainrulestestutils" ,julia-chainrulestestutils)
+ ("julia-finitedifferences" ,julia-finitedifferences)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)))
+ (propagated-inputs
+ `(("julia-chainrulescore" ,julia-chainrulescore)
+ ("julia-compat" ,julia-compat)
+ ("julia-reexport" ,julia-reexport)
+ ("julia-requires" ,julia-requires)))
+ (home-page "https://github.com/JuliaDiff/ChainRules.jl")
+ (synopsis "Common utilities for automatic differentiation")
+ (description "The is package provides a variety of common utilities that
+can be used by downstream automatic differentiation (AD) tools to define and
+execute forward-, reverse-, and mixed-mode primitives.")
+ (license license:expat)))
+
(define-public julia-chainrulescore
(package
(name "julia-chainrulescore")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 28/30] gnu: Add julia-forwarddiff.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-26-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-forwarddiff): New variable.
---
gnu/packages/julia-xyz.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index b526306984..9a414fc739 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -592,6 +592,38 @@ 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-forwarddiff
+ (package
+ (name "julia-forwarddiff")
+ (version "0.10.17")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/JuliaDiff/ForwardDiff.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "17xaz4v0zr46p7w873w1fwf31phdnhr0vbdym9yr4flmpzi528jw"))))
+ (build-system julia-build-system)
+ (inputs ;required for tests
+ `(("julia-calculus" ,julia-calculus)
+ ("julia-difftests" ,julia-difftests)))
+ (propagated-inputs
+ `(("julia-commonsubexpressions" ,julia-commonsubexpressions)
+ ("julia-diffresults" ,julia-diffresults)
+ ("julia-diffrules" ,julia-diffrules)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-specialfunctions" ,julia-specialfunctions)
+ ("julia-staticarrays" ,julia-staticarrays)))
+ (home-page "https://github.com/JuliaDiff/ForwardDiff.jl")
+ (synopsis "Methods to take multidimensional derivatives")
+ (description "This package implements methods to take derivatives,
+gradients, Jacobians, Hessians, and higher-order derivatives of native Julia
+functions (or any callable object, really) using forward mode automatic
+differentiation (AD).")
+ (license license:expat)))
+
(define-public julia-http
(package
(name "julia-http")
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 29/30] gnu: Add julia-zygoterules.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-27-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-zygoterules): New variable.
---
gnu/packages/julia-xyz.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

Toggle diff (32 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index 9a414fc739..af8b41e82b 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1199,3 +1199,25 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
(description "This package supports SI units and also many other unit
system.")
(license license:expat)))
+
+(define-public julia-zygoterules
+ (package
+ (name "julia-zygoterules")
+ (version "0.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/ZygoteRules.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "07i2mf6rr5b8i6l82qgwl5arsb5pwyyzyfasgnszhdqllk9501bs"))))
+ (build-system julia-build-system)
+ (propagated-inputs
+ `(("julia-macrotools" ,julia-macrotools)))
+ (home-page "https://github.com/FluxML/ZygoteRules.jl")
+ (synopsis "Add minimal custom gradients to Zygote")
+ (description "Minimal package which enables to add custom gradients to
+Zygote, without depending on Zygote itself.")
+ (license license:expat)))
--
2.28.0
Z
Z
zimoun wrote on 25 Mar 2021 02:05
[PATCH v2 30/30] gnu: Add julia-zygote.
(address . 47350@debbugs.gnu.org)(name . zimoun)(address . zimon.toutoune@gmail.com)
20210325010516.18994-28-zimon.toutoune@gmail.com
* gnu/packages/julia-xyz.scm (julia-zygote): New variable.
---
gnu/packages/julia-xyz.scm | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm
index af8b41e82b..cbff69117d 100644
--- a/gnu/packages/julia-xyz.scm
+++ b/gnu/packages/julia-xyz.scm
@@ -1221,3 +1221,38 @@ system.")
(description "Minimal package which enables to add custom gradients to
Zygote, without depending on Zygote itself.")
(license license:expat)))
+
+(define-public julia-zygote
+ (package
+ (name "julia-zygote")
+ (version "0.6.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/FluxML/Zygote.jl")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1h2ph0lsisbkh8y4xgwzgw9p5zi243q8zzp5gfh3zw9pzkx6a1rf"))))
+ (build-system julia-build-system)
+ (arguments
+ `(#:tests? #f)) ;require CUDA, not packaged yet
+ (propagated-inputs
+ `(("julia-abstractffs" ,julia-abstractffts)
+ ("julia-chainrules" ,julia-chainrules)
+ ("julia-diffrules" ,julia-diffrules)
+ ("julia-fillarrays" ,julia-fillarrays)
+ ("julia-forwarddiff" ,julia-forwarddiff)
+ ("julia-irtools" ,julia-irtools)
+ ("julia-macrotools" ,julia-macrotools)
+ ("julia-nanmath" ,julia-nanmath)
+ ("julia-requires" ,julia-requires)
+ ("julia-specialfunctions" ,julia-specialfunctions)
+ ("julia-zygote-rules" ,julia-zygoterules)))
+ (home-page "https://fluxml.ai/Zygote.jl")
+ (synopsis "Automatic differentiation in Julia")
+ (description "Zygote provides source-to-source automatic
+differentiation (AD) in Julia, and is the next-generation AD system for the
+Flux differentiable programming framework.")
+ (license license:expat)))
--
2.28.0
N
N
Nicolò Balzarotti wrote on 25 Mar 2021 10:47
Re: [bug#47350] [PATCH 00/29] Add Zygote (piece for Machine Learning with Julia)
(address . ludo@gnu.org)
87lfabefae.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (13 lines)
> Hi Nicoló,
> Hum, I get these kind of messages:
>
> --8<---------------cut here---------------start------------->8---
> Internal error: encountered unexpected error in runtime:
> ErrorException("type UnionAll has no field size")
> jl_errorf at /tmp/guix-build-julia-1.5.3.drv-0/julia-1.5.3/src/rtutils.c:77
> --8<---------------cut here---------------end--------------->8---
>
> for julia-datastructures for instance. Even if the build is fine and
> my small experiments seems correct.
>

I'd say it's a julia bug [fn:1].

can be reproduced with:

```julia
primitive type Foo{T} 32 end
foo(T, x) = (Core.bitcast(Foo{T}, x); x)
code_typed(foo, Tuple{Any, Int32})
```

We need to test this with julia 1.5.4 or 1.6.0 (the latter has been
released yesterday :D. I had a build recipe for some version in
between 1.5.3 and 1.6.0, I'll check if it still works). Before the guix
1.2.1 release, we might want to upgrade to 1.5.4 at least.

Toggle quote (2 lines)
> Well, I have set this deprecation warning as a first commit in the v2.

Thanks!

I should have some time to re-check those later today

Nicolò

Z
Z
zimoun wrote on 25 Mar 2021 12:32
(address . ludo@gnu.org)
86czvnjwox.fsf@gmail.com
Hi,

On Thu, 25 Mar 2021 at 10:47, Nicolò Balzarotti <anothersms@gmail.com> wrote:
Toggle quote (4 lines)
> zimoun <zimon.toutoune@gmail.com> writes:

> I'd say it's a julia bug [fn:1].

ok

Toggle quote (5 lines)
> We need to test this with julia 1.5.4 or 1.6.0 (the latter has been
> released yesterday :D. I had a build recipe for some version in
> between 1.5.3 and 1.6.0, I'll check if it still works). Before the guix
> 1.2.1 release, we might want to upgrade to 1.5.4 at least.

Please go ahead. If 1.6.0 is not included for 1.2.1, it will for the
next 1.3. ;-)

IMHO, we should try to address: the reproducibility issue and the
precompiled twice,



Thanks,
simon
N
N
Nicolò Balzarotti wrote on 27 Mar 2021 22:01
(address . ludo@gnu.org)
87y2e8cnvo.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Nicolò Balzarotti <anothersms@gmail.com> writes:

Toggle quote (4 lines)
> zimoun <zimon.toutoune@gmail.com> writes:

> I should have some time to re-check those later today
>
Ok the everything still builds (I had a few problems applying the
patches, but it might depend on my setup).

Lint gives warnings:
julia-zygote@0.6.4: permanent redirect from https://fluxml.ai/Zygote.jlto https://fluxml.ai/Zygote.jl/
julia-zygote@0.6.4: can be upgraded to 0.6.6
julia-chainrules@0.7.54: can be upgraded to 0.7.55
julia-openspecfun-jll@0.5.3+4: sentences in description should be followed by two spaces; possible infraction at 129
julia-compilersupportlibraries-jll@0.4.0+1: sentences in description should be followed by two spaces; possible infraction at 134
julia-compilersupportlibraries-jll@0.4.0+1: line 344 is way too long (91
characters)
julia-chainrulescore@0.9.29: can be upgraded to 0.9.33
julia-macrotools@0.5.6: permanent redirect from https://fluxml.ai/MacroTools.jlto https://fluxml.ai/MacroTools.jl/

Other than that, LGTM
(I opened an issue [fn:1] to constructionbase.jl to have latest version tagged,
if they respond promptly we might use the tagged version)



Thanks, Nicolò
Z
Z
zimoun wrote on 27 Mar 2021 22:24
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
86zgyo70jd.fsf@gmail.com
Hi Nicoló,

On Sat, 27 Mar 2021 at 22:01, Nicolò Balzarotti <anothersms@gmail.com> wrote:
Toggle quote (9 lines)
> Nicolò Balzarotti <anothersms@gmail.com> writes:
>
>> zimoun <zimon.toutoune@gmail.com> writes:
>
>> I should have some time to re-check those later today
>>
> Ok the everything still builds (I had a few problems applying the
> patches, but it might depend on my setup).

Ah.

Toggle quote (6 lines)
> Lint gives warnings:
> julia-zygote@0.6.4: permanent redirect from https://fluxml.ai/Zygote.jl to
> https://fluxml.ai/Zygote.jl/
> julia-macrotools@0.5.6: permanent redirect from
> https://fluxml.ai/MacroTools.jl to https://fluxml.ai/MacroTools.jl/

I find weird to have to have trailing ’/’ for these when all the others
does not have.

Toggle quote (4 lines)
> julia-zygote@0.6.4: can be upgraded to 0.6.6
> julia-chainrules@0.7.54: can be upgraded to 0.7.55
> julia-chainrulescore@0.9.29: can be upgraded to 0.9.33

Well, let apply this series and update them later. :-)

Toggle quote (5 lines)
> julia-openspecfun-jll@0.5.3+4: sentences in description should be followed by
> two spaces; possible infraction at 129
> julia-compilersupportlibraries-jll@0.4.0+1: sentences in description should be
> followed by two spaces; possible infraction at 134

Indeed. Ludo, could you fix it before pushing?

Toggle quote (3 lines)
> julia-compilersupportlibraries-jll@0.4.0+1: line 344 is way too long (91
> characters)

Hum, but life is too short. ;-)


Toggle quote (2 lines)
> Other than that, LGTM

Thanks!

Toggle quote (3 lines)
> (I opened an issue [fn:1] to constructionbase.jl to have latest
> version tagged,

Cool!

Toggle quote (2 lines)
> if they respond promptly we might use the tagged version)

Well, let merge this series. Once in, it becomes much easier to update
them. And less scary for committer. :-) Pushing ~30 new Julia
packages is not the same than tweaking a version+hash or a
description. ;-)

Thanks again!

Cheers,
simon

PS:
Teaser: I have started something about an importer. :-)
I have checked JuliaHub but I am not able to find the dependencies list,
so I am going to use General.
N
N
Nicolò Balzarotti wrote on 27 Mar 2021 22:41
(name . zimoun)(address . zimon.toutoune@gmail.com)
87v99ccm0g.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
zimoun <zimon.toutoune@gmail.com> writes:

Toggle quote (6 lines)
> Well, let apply this series and update them later. :-)
> Well, let merge this series. Once in, it becomes much easier to update
> them. And less scary for committer. :-) Pushing ~30 new Julia
> packages is not the same than tweaking a version+hash or a
> description. ;-)

Ok
Toggle quote (4 lines)
> PS:
> Teaser: I have started something about an importer. :-)
> I have checked JuliaHub but I am not able to find the dependencies list,
> so I am going to use General.
Great! If you can use the general registry directly is fine.
Dependency list is under .deps

Example:

those with direct: false are depdencencies of dependencies
Z
Z
zimoun wrote on 27 Mar 2021 23:08
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
CAJ3okZ1Bt2jA+WHExWtiffTC2bqXszxUd0r=BRoY6fuHpLW7jw@mail.gmail.com
Hi,

On Sat, 27 Mar 2021 at 22:41, Nicolò Balzarotti <anothersms@gmail.com> wrote:

Toggle quote (2 lines)
> Great! If you can use the general registry directly is fine.

The plan is to start with Pkg.TOML has you did. And see after if a
parser could be implemented with PEG or other. I am not enough
comfortable with PEG to go with it (even if I run the tutorial etc.).
For instance, the 'cpan' importer checks if some Perl packages are
there. Well, let start by not reinventing the wheel and see later.

Toggle quote (5 lines)
> Dependency list is under .deps
>
> Example:
> curl 'https://juliahub.com/docs/Flux/QdkVy/0.11.6/pkg.json' | jq .deps

Yeah, but Project.toml distinguishes between "deps" and "extra", which
gives 'inputs' and 'propgated-inputs', roughly.

But, yeah JuliaHub is nicer because it provides partial synopses and
licenses. Maybe I will change my mind. :-)


Cheers,
simon
L
L
Ludovic Courtès wrote on 29 Mar 2021 16:50
Re: bug#47350: [PATCH 00/29] Add Zygote (piece for Machine Learning with Julia)
(name . zimoun)(address . zimon.toutoune@gmail.com)
87zgymnheg.fsf_-_@gnu.org
Hi there!

I’ve pushed v2, comrades! Thanks for the great work!

Simon, I noticed the trap you’d set up: patches 10 and 20 were missing
from v2. :-) I took patches 9 and 19 from v1 instead, and everything
builds fine, but lemme know if anything’s amiss!

Ludo’.
Closed
Z
Z
zimoun wrote on 29 Mar 2021 17:10
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAJ3okZ1a6cCcXHKcphVONGBuCoaQOmUL4sf_28sGQCpfL8-fSg@mail.gmail.com
Hi,

On Mon, 29 Mar 2021 at 16:50, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (2 lines)
> I’ve pushed v2, comrades! Thanks for the great work!

\o/
Thanks Nicoló for the review.

Toggle quote (4 lines)
> Simon, I noticed the trap you’d set up: patches 10 and 20 were missing
> from v2. :-) I took patches 9 and 19 from v1 instead, and everything
> builds fine, but lemme know if anything’s amiss!

Oh, sorry! Indeed, I have missed the shell rule and forgot the '0'.
For the record, these 2 patches are the same for v1 and v2.

Thanks,
simon

Toggle snippet (16 lines)
$ diff v2-0010-gnu-Add-julia-colortypes.patch
0009-gnu-Add-julia-colortypes.patch
1c1
< From 6597c28170e52c435dea0e29f7783260781574b0 Mon Sep 17 00:00:00 2001
---
> From 2ef94ee9e0f516d77449e8f179b66dc3135bff24 Mon Sep 17 00:00:00 2001
4c4
< Subject: [PATCH v2 10/30] gnu: Add julia-colortypes.
---
> Subject: [PATCH 09/29] gnu: Add julia-colortypes.
12c12
< index 4abeaa765f..8d28aab7f1 100644
---
> index d417a996f8..3213efd715 100644

Toggle snippet (14 lines)
$ diff v2-0020-gnu-Add-julia-calculus.patch 0019-gnu-Add-julia-calculus.patch
1c1
< From 3d96c37625d6841a6b378ea0d57b53e479207b78 Mon Sep 17 00:00:00 2001
---
> From 5cf3bb5ab498d53bf419e18d1391afb5473b54e8 Mon Sep 17 00:00:00 2001
4c4
< Subject: [PATCH v2 20/30] gnu: Add julia-calculus.
---
> Subject: [PATCH 19/29] gnu: Add julia-calculus.
12c12
< index c5c04d6579..75b46a1c7c 100644
---
> index d14fa66fe5..dfab3c20af 100644
Closed
?
Your comment

This issue is archived.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 47350
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