gnu: julia-blockarrays: Fix tests on i686-linux.
[jackhill/guix/guix.git] / gnu / packages / julia-xyz.scm
index c4255c7..0ae515c 100644 (file)
 (define-module (gnu packages julia-xyz)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
+  #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (guix build-system julia)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages julia-jll)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages python-xyz))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages version-control))
 
 (define-public julia-abstractffts
   (package
@@ -123,7 +125,7 @@ ANSI escape codes to another format.")
 (define-public julia-aqua
   (package
     (name "julia-aqua")
-    (version "0.5.0")
+    (version "0.5.1")
     (source
       (origin
         (method git-fetch)
@@ -132,8 +134,10 @@ ANSI escape codes to another format.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0zcvrwnyhh2kr4d2xv7ps8dh7byw78dx6yb1m9m4dblgscn5kypb"))))
+         (base32 "1g0kyzcdykgs247j72jpc2qqall696jwgb3hnn4cxmbi8bkf7wpk"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:parallel-tests? #f))
     (home-page "https://github.com/JuliaTesting/Aqua.jl")
     (synopsis "Automated quality assurance for Julia packages")
     (description "@acronym{Aqua.jl, Auto QUality Assurance for Julia packages},
@@ -179,7 +183,7 @@ no issues with the upgrade.")
 (define-public julia-arraylayouts
   (package
     (name "julia-arraylayouts")
-    (version "0.7.3")
+    (version "0.7.6")
     (source
       (origin
         (method git-fetch)
@@ -188,7 +192,7 @@ no issues with the upgrade.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0ri05xhfrj2909c6yy09qm6zi8v8s5fvmbbwbg8qgjq0yxnviw32"))))
+         (base32 "05q62pks8j23pgbrfny072rrwzrz6q19l68srnjxxv39ncmdmrvg"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-fillarrays" ,julia-fillarrays)))
@@ -294,6 +298,25 @@ the entries on the bands.")
        (sha256
         (base32 "1xz3kdrphp4b158pg7dwkiry49phs2fjjpdvk1hjpww5ykxacks8"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       ,@(if (target-x86-32?)
+           '((modify-phases %standard-phases
+               (add-after 'unpack 'remove-failing-tests-i686
+                 (lambda _
+                   (substitute* "test/GroupsTests.jl"
+                     (("@test sprint\\(show, g1\\)")
+                      "@test_broken sprint(show, g1)")
+                     (("@test sprint\\(show, g1; context = :boundto => 1\\)")
+                      "@test_broken sprint(show, g1; context = :boundto => 1)")
+                     (("@test sprint\\(show, g1; context = :limit => false\\)")
+                      "@test_broken sprint(show, g1; context = :limit => false)")
+                     (("@test @test_deprecated") "@test_broken"))
+                   (substitute* "test/ExecutionTests.jl"
+                     ;; Evaluated: 12 == 8
+                     (("@test @ballocated\\(Ref\\(1\\)\\)")
+                      "@test_broken @ballocated(Ref(1))"))))))
+           '(%standard-phases))))
     (propagated-inputs `(("julia-json" ,julia-json)))
     (home-page "https://github.com/JuliaCI/BenchmarkTools.jl")
     (synopsis "Benchmarking framework for the Julia language")
@@ -305,7 +328,7 @@ benchmarks as well as comparing benchmark results.")
 (define-public julia-blockarrays
   (package
     (name "julia-blockarrays")
-    (version "0.16.3")
+    (version "0.16.8")
     (source
       (origin
         (method git-fetch)
@@ -314,8 +337,17 @@ benchmarks as well as comparing benchmark results.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "1f9pnnfv97vww2dxklpx8pa2k85fw2l3pzsj7n28nws1xlwnj96c"))))
+         (base32 "1by26036fk9mawmcgqxpwizgbs398v9p6vrbsgg7h6llqn3q9iw1"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       ,@(if (target-64bit?)
+           '(%standard-phases)
+           '((modify-phases %standard-phases
+               (add-after 'unpack 'fix-tests-int32-i686
+                 (lambda _
+                   (substitute* "test/test_blockarrays.jl"
+                     (("Int64") "Int32")))))))))
     (propagated-inputs
      `(("julia-arraylayouts" ,julia-arraylayouts)
        ("julia-fillarrays" ,julia-fillarrays)))
@@ -366,6 +398,29 @@ A @code{BlockBandedMatrix} is a subtype of @code{BlockMatrix} of
 @code{BlockArrays.jl} whose layout of non-zero blocks is banded.")
     (license license:expat)))
 
+(define-public julia-bson
+  (package
+    (name "julia-bson")
+    (version "0.3.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaIO/BSON.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1l5608ma2ys7v2gpcqbiv9mwfc6yrlqkihrfx1pf7fgv5llhd4fn"))))
+    (build-system julia-build-system)
+    (native-inputs
+     `(("julia-dataframes" ,julia-dataframes)))
+    (home-page "https://github.com/JuliaIO/BSON.jl")
+    (synopsis "Binary JSON serialisation format")
+    (description "@code{BSON.jl} is a Julia package for working with the Binary
+JSON serialisation format.  It can be used as a general store for Julia data
+structures.")
+    (license license:expat)))
+
 (define-public julia-bufferedstreams
   (package
     (name "julia-bufferedstreams")
@@ -385,7 +440,8 @@ A @code{BlockBandedMatrix} is a subtype of @code{BlockMatrix} of
     ;; https://travis-ci.org/BioJulia/BufferedStreams.jl/jobs/491050182
     (arguments
      '(#:tests? #f
-       #:julia-package-name "BufferedStreams"))
+       #:julia-package-name "BufferedStreams"
+       #:julia-package-uuid "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"))
     (propagated-inputs `(("julia-compat" ,julia-compat)))
     (home-page "https://github.com/BioJulia/BufferedStreams.jl")
     (synopsis "Fast composable IO streams")
@@ -507,7 +563,7 @@ sensitivities for functions without the need to depend on ChainRules itself.")
 (define-public julia-chainrulestestutils
   (package
     (name "julia-chainrulestestutils")
-    (version "1.0.0")
+    (version "1.2.3")
     (source
      (origin
        (method git-fetch)
@@ -516,7 +572,7 @@ sensitivities for functions without the need to depend on ChainRules itself.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "07l4sjc7avmmp4v1dsym1jyb46q4jsvv7i0yzszf72gj8d9k6lwa"))))
+        (base32 "1vlkyp72d514gyb4k3yhjl1g7f24ncmz61j56p4sdi9f76rk9fx9"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-chainrulescore" ,julia-chainrulescore)
@@ -536,6 +592,38 @@ 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-codeczlib
+  (package
+    (name "julia-codeczlib")
+    (version "0.7.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/JuliaIO/CodecZlib.jl")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0xm603nylkwk4bzx66zv1g3syzrvn3jh9spdx7kvcvgszzyrrgh4"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'reset-gzip-timestamps 'make-files-writable
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each make-file-writable
+                         (find-files out "\\.gz$"))
+               #t))))))
+    (propagated-inputs
+     `(("julia-zlib-jll" ,julia-zlib-jll)
+       ("julia-transcodingstreams" ,julia-transcodingstreams)))
+    (home-page "https://github.com/JuliaIO/CodecZlib.jl")
+    (synopsis "Zlib codecs for @code{TranscodingStreams.jl}")
+    (description "This package provides zlib codecs for
+@code{TranscodingStreams.jl}.")
+    (license license:expat)))
+
 (define-public julia-colors
   (package
     (name "julia-colors")
@@ -565,7 +653,7 @@ color scales for graphics.")
 (define-public julia-colorschemes
   (package
     (name "julia-colorschemes")
-    (version "3.13.0")
+    (version "3.15.0")
     (source
       (origin
         (method git-fetch)
@@ -574,7 +662,7 @@ color scales for graphics.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "13gy1njxlkfnxmpj2z6aj1bzbzn7jipaxr9fgkv41yiy0xjhqiyh"))))
+         (base32 "0kpjhmqd5cj8dh8bmh9b5g6bscyp7h23hzpr2s93pnrp57q1wvhq"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-colors" ,julia-colors)
@@ -599,11 +687,11 @@ color scales for graphics.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "0n7h70caqv7yd0khjhn90iax62r73mcif8qzkwj5b4q46li1r8ih"))))
-    (arguments
-     '(#:tests? #f))                    ;require Documenter, not packaged yet
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-fixedpointnumbers" ,julia-fixedpointnumbers)))
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)))
     (home-page "https://github.com/JuliaGraphics/ColorTypes.jl")
     (synopsis "Basic color types and constructor")
     (description "This minimalistic package serves as the foundation for
@@ -615,7 +703,7 @@ with.")
 (define-public julia-colorvectorspace
   (package
     (name "julia-colorvectorspace")
-    (version "0.9.5")
+    (version "0.9.7")
     (source
       (origin
         (method git-fetch)
@@ -624,7 +712,7 @@ with.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "1gx4k1bvf6lkzxphnvpkw857ihrkifhb68yvsj889k9pf1vda3fq"))))
+         (base32 "02gk7f5g5wjxdasbjf8bvv1m7clksh7mw1xmygjdirjz1q0d6dwi"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-colortypes" ,julia-colortypes)
@@ -685,7 +773,7 @@ common subexpression elimination.")
 (define-public julia-compat
   (package
     (name "julia-compat")
-    (version "3.32.0")
+    (version "3.39.0")
     (source
      (origin
        (method git-fetch)
@@ -694,7 +782,7 @@ common subexpression elimination.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1zif3dj0a85w7xqbg0chrdhw8dk410zxcqbnkf764xmylwbps498"))))
+        (base32 "0qzvaqi5gqgc747fnajbvvf5vqbh6cwykwky00c7glvmvdsgk3z0"))))
     (build-system julia-build-system)
     (home-page "https://github.com/JuliaLang/Compat.jl")
     (synopsis "Compatibility across Julia versions")
@@ -704,6 +792,53 @@ provides a macro that lets you use the latest syntax in a backwards-compatible
 way.")
     (license license:expat)))
 
+(define-public julia-configurations
+  (package
+    (name "julia-configurations")
+    (version "0.16.4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/Roger-luo/Configurations.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1b23p0zk8dx2sf01cnw177mqci7qd81b9s32ixz9clsh0r0icl1b"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'fix-tests
+           (lambda _
+             (substitute* "test/runtests.jl"
+               (("option.toml") "test/option.toml"))))
+         (add-after 'link-depot 'dont-use-exproniconlite
+           (lambda _
+             (substitute* '("Project.toml"
+                            "src/Configurations.jl"
+                            "test/runtests.jl")
+               (("ExproniconLite") "Expronicon"))
+             (substitute* "Project.toml"
+               (("55351af7-c7e9-48d6-89ff-24e801d99491")
+                "6b7a57c9-7cc1-4fdf-b7f5-e857abae3636"))))
+         ,@(if (target-64bit?)
+             '()
+             '((add-after 'unpack 'fix-tests-int32-i686
+                 (lambda _
+                   (substitute* "test/runtests.jl"
+                     (("Int64") "Int32")))))))))
+    (propagated-inputs
+     `(("julia-crayons" ,julia-crayons)
+       ("julia-expronicon" ,julia-expronicon)
+       ("julia-orderedcollections" ,julia-orderedcollections)))
+    (home-page "https://configurations.rogerluo.dev/stable/")
+    (synopsis "Tools for options and configurations in Julia")
+    (description "@code{Configurations.jl} provides a macro @code{@@option} to
+let you define @code{structs} to represent options/configurations, and serialize
+between different option/configuration file formats such as @code{TOML}.")
+    (license license:expat)))
+
 (define-public julia-constructionbase
   (package
     (name "julia-constructionbase")
@@ -738,14 +873,12 @@ for construction of objects.")
         (sha256
          (base32 "15zbkn32v7xlz7559s0r5a0vkwmjwsswxaqpzijly4lky4jnp33d"))))
     (build-system julia-build-system)
-    (arguments
-     `(#:tests? #f))    ; Documenter.jl not packaged yet.
     (propagated-inputs
      `(("julia-staticarrays" ,julia-staticarrays)))
-    ;(native-inputs
-    `(("julia-documenter" ,julia-documenter)
-      ("julia-forwarddiff" ,julia-forwarddiff)
-      ("julia-unitful" ,julia-unitful)))
+    (native-inputs
+    `(("julia-documenter" ,julia-documenter)
+      ("julia-forwarddiff" ,julia-forwarddiff)
+      ("julia-unitful" ,julia-unitful)))
     (home-page "https://github.com/JuliaGeometry/CoordinateTransformations.jl")
     (synopsis "Coordinate transformations in Julia")
     (description "@code{CoordinateTransformations} is a Julia package to manage
@@ -804,6 +937,63 @@ moving the function definition to DataAPI.jl and each package taking a
 dependency on it.")
     (license license:expat)))
 
+(define-public julia-dataframes
+  (package
+    (name "julia-dataframes")
+    (version "1.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaData/DataFrames.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1bk0amrghgjrkyn1mm4ac23swwbgszl1d0qyl9137qj5zvv9dasp"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'skip-failing-test
+           (lambda _
+             ;; Tests with non-standard colors.
+             (substitute* "test/show.jl"
+               (("test (sprint\\(show, df, context=:color=>true)" _ test)
+                (string-append "test_nowarn " test)))
+             (substitute* "test/io.jl"
+               (("testset \\\"improved.*" all)
+                (string-append all "return\n")))
+             (substitute* "test/join.jl"
+               (("test (levels\\(outerjoin\\(B)" _ test)
+                (string-append "test_nowarn " test)))
+             #t)))))
+    (propagated-inputs
+     `(("julia-dataapi" ,julia-dataapi)
+       ("julia-invertedindices" ,julia-invertedindices)
+       ("julia-iteratorinterfaceextensions" ,julia-iteratorinterfaceextensions)
+       ("julia-missings" ,julia-missings)
+       ("julia-pooledarrays" ,julia-pooledarrays)
+       ("julia-prettytables" ,julia-prettytables)
+       ("julia-reexport" ,julia-reexport)
+       ("julia-sortingalgorithms" ,julia-sortingalgorithms)
+       ("julia-tables" ,julia-tables)
+       ("julia-tabletraits" ,julia-tabletraits)))
+    (native-inputs
+     `(("julia-categoricalarrays" ,julia-categoricalarrays)
+       ("julia-combinatorics" ,julia-combinatorics)
+       ("julia-datastructures" ,julia-datastructures)
+       ("julia-datavalues" ,julia-datavalues)
+       ("julia-offsetarrays" ,julia-offsetarrays)
+       ("julia-unitful" ,julia-unitful)))
+    (home-page "https://dataframes.juliadata.org/stable/")
+    (synopsis "In-memory tabular data")
+    (description "This package provides a set of tools for working with tabular
+data in Julia.  Its design and functionality are similar to those of Pandas from
+Python or @code{data.frame}, @code{data.table} and @code{dplyr} from R, making
+it a great general purpose data science tool, especially for those coming to
+Julia from R or Python.")
+    (license license:expat)))
+
 (define-public julia-datastructures
   (package
     (name "julia-datastructures")
@@ -821,6 +1011,19 @@ dependency on it.")
      `(("julia-compat" ,julia-compat)
        ("julia-orderedcollections" ,julia-orderedcollections)))
     (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       ,@(if (target-x86-32?)
+           '((modify-phases %standard-phases
+               (add-after 'unpack 'remove-failing-test-i686
+                 (lambda _
+                   ;; The evaluation returns the correct value,
+                   ;; Evaluated: "Accumulator(1 => 3, 3 => 4)"
+                   ;; but, for some reasons, is considered as failed.
+                   (substitute* "test/test_accumulator.jl"
+                     (("@test sprint\\(show,Accumulator\\(1 => 3, 3 => 4\\)\\)")
+                      "@test_broken sprint(show, Accumulator(1 => 3, 3 => 4))"))))))
+           '(%standard-phases))))
     (home-page "https://github.com/JuliaCollections/DataStructures.jl")
     (synopsis "Julia module providing different data structures")
     (description "This package implements a variety of data structures,
@@ -867,7 +1070,7 @@ without having to take direct dependencies.")
      `(#:tests? #f      ; Tests need upgrading with newer Julia version.
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-known-failing-tests
+         (add-after 'link-depot 'skip-known-failing-tests
            (lambda _
              ;; See upstream report:
              ;; https://github.com/queryverse/DataValues.jl/issues/83
@@ -945,7 +1148,7 @@ dictionaries in Julia, for improved productivity and performance.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-flakey-tests
+         (add-after 'link-depot 'skip-flakey-tests
            (lambda _
              ;; Some combination of these tests fail nondeterministically
              ;; each of the times this package is built.
@@ -992,6 +1195,127 @@ cases that including them with the default Julia installation is not seen as
 valuable enough at this time.")
     (license license:expat)))
 
+;; By removing all the javascript and css downloads any HTML documentation
+;; produced by this package will not be very useful.
+(define-public julia-documenter
+  (package
+    (name "julia-documenter")
+    (version "0.27.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaDocs/Documenter.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "00ai3c24i3fkn5plmavampcxm0ijhwk0v5cn9xwm7rvbjnnvaaam"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'patch-source
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/Deps.jl"
+               (("pip install")
+                (string-append (assoc-ref inputs "python")
+                               "/bin/pip install")))
+             #t))
+         (add-after 'link-depot 'remove-javascript-downloads
+           (lambda _
+             (substitute* "src/Writers/HTMLWriter.jl"
+               (("cdnjs.cloudflare.com") "example.com"))
+             ;; Removing the javascript downloads causes these tests fail.
+             (substitute* "test/examples/tests.jl"
+               ((".*Main\\.examples_html_doc.*") "")
+               ((".*Main\\.examples_html_mathjax3_doc.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("julia-ansicoloredprinters" ,julia-ansicoloredprinters)
+       ("julia-docstringextensions" ,julia-docstringextensions)
+       ("julia-iocapture" ,julia-iocapture)
+       ("julia-json" ,julia-json)))
+    (inputs
+     `(("python" ,python-wrapper)))
+    (native-inputs
+     `(("git" ,git-minimal)
+       ("julia-documentermarkdown" ,julia-documentermarkdown)
+       ("julia-documentertools" ,julia-documentertools)))
+    (home-page "https://juliadocs.github.io/Documenter.jl")
+    (synopsis "Documentation generator for Julia")
+    (description "This package provides a documentation generator for Julia.")
+    (license license:expat)))
+
+(define julia-documenter-bootstrap
+  (package
+    (inherit julia-documenter)
+    (name "julia-documenter-bootstrap")
+    (arguments
+     (substitute-keyword-arguments (package-arguments julia-documenter)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (delete 'patch-source)))
+       ;; Not all dependencies available in bootstrap version.
+       ((#:tests? _ #f) #f)))
+    (inputs `())
+    (native-inputs `())))
+
+(define-public julia-documentermarkdown
+  (package
+    (name "julia-documentermarkdown")
+    (version "0.2.2")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaDocs/DocumenterMarkdown.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0sx89hi5p2f8zi2rp5qrv06m270d90pxj5d2y5cxls1spax7wqx8"))))
+    (build-system julia-build-system)
+    (inputs
+     ;; We don't want to propagate the bootstrap version.
+     ;; Cycle with Documenter.jl in later versions.
+     `(("julia-documenter" ,julia-documenter-bootstrap)))
+    (home-page "https://github.com/JuliaDocs/DocumenterMarkdown.jl")
+    (synopsis "Documenter's Markdown")
+    (description "This package enables the Markdown / MkDocs backend of
+@code{Documenter.jl}.")
+    (license license:expat)))
+
+(define-public julia-documentertools
+  (package
+    (name "julia-documentertools")
+    (version "0.1.13")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaDocs/DocumenterTools.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "05p57p8xlkn42m1lv9gq4hl96vp7hpj19d51p828ai1rbpcpi3a6"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:tests? #f))    ; Tests require network.
+    (inputs
+     ;; We don't want to propagate the bootstrap version.
+     ;; Cycle with Documenter.jl in later versions.
+     `(("julia-documenter" ,julia-documenter-bootstrap)))
+    (propagated-inputs
+     `(("julia-docstringextensions" ,julia-docstringextensions)
+       ("julia-gumbo" ,julia-gumbo)
+       ("julia-sass" ,julia-sass)))
+    (native-inputs
+     `(("julia-example" ,julia-example)))
+    (home-page "https://github.com/JuliaDocs/DocumenterTools.jl")
+    (synopsis "Extra tools for setting up Documenter.jl")
+    (description "This package contains utilities for setting up documentation
+generation with @code{Documenter.jl}.")
+    (license license:expat)))
+
 (define-public julia-diffresults
   (package
     (name "julia-diffresults")
@@ -1076,7 +1400,7 @@ stressing the robustness of differentiation tools.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-test-suite
+         (add-after 'link-depot 'adjust-test-suite
            (lambda _
              (substitute* "test/runtests.jl"
                ;; Seems to not play nicely with SpecialFunctions
@@ -1110,7 +1434,7 @@ combinations of dual numbers with predefined Julia numeric types.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-test-suite
+         (add-after 'link-depot 'adjust-test-suite
            (lambda _
              (substitute* "test/runtests.jl"
                ;; Seems to not play nicely with Julia-1.6.
@@ -1144,6 +1468,40 @@ before (or after)\".")
       (description "This package provides various examples.")
       (license license:expat))))
 
+;; ExproniconLite.jl is autogenerated from this package.
+(define-public julia-expronicon
+  (package
+    (name "julia-expronicon")
+    (version "0.6.10")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/Roger-luo/Expronicon.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0h8aaynqlxrkn8575k5vqmhzil4vvxchhf0bcxa6zwawp558gj2y"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'skip-network-tests
+           (lambda _
+             (substitute* "test/runtests.jl"
+               ;; This test tries to access the Julia package registry.
+               ((".*expand\\.jl.*") "")))))))
+    (propagated-inputs
+     `(("julia-mlstyle" ,julia-mlstyle)))
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)))
+    (home-page "https://expronicon.rogerluo.dev/dev/")
+    (synopsis "Collective tools for metaprogramming on Julia Expr")
+    (description "This package provides a collection of tools for
+metaprogramming on Julia Expr, the meta programming standard library for
+@code{MLStyle}.")
+    (license license:expat)))
+
 (define-public julia-exprtools
   (package
     (name "julia-exprtools")
@@ -1207,7 +1565,7 @@ need the ffmpeg binaries + executables, and don't want the overhead of
      `(#:phases
        (modify-phases %standard-phases
          (delete 'reset-gzip-timestamps)
-         (add-after 'unpack 'skip-network-tests
+         (add-after 'link-depot 'skip-network-tests
            (lambda _
              ;; These tests try to download audio/video files.
              (substitute* "test/query.jl"
@@ -1264,7 +1622,7 @@ working with filesystem paths in Julia.")
 (define-public julia-fillarrays
   (package
     (name "julia-fillarrays")
-    (version "0.12.1")
+    (version "0.12.6")
     (source
      (origin
        (method git-fetch)
@@ -1273,7 +1631,7 @@ working with filesystem paths in Julia.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1va8vvcxbxcy5xp487hdqfp0ps3m8q0819xrxygsf5135azp3qrh"))))
+        (base32 "1sx96pzrgyh8k7x2w8vmyi6cazlmp7rg1n7wbl47qfzqjggka6kz"))))
     (build-system julia-build-system)
     (inputs                             ;required by tests
      `(("julia-staticarrays" ,julia-staticarrays)))
@@ -1338,6 +1696,17 @@ types and sparsity.")
        (sha256
         (base32 "09nsf9cgk49yrvprflnhd9h5rrgs280rgj8sad3csghxdx6jqk5c"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       ,@(if (target-x86-32?)
+           '((modify-phases %standard-phases
+               (add-after 'unpack 'remove-failing-test-i686
+                 (lambda _
+                   ;; Machine Precision incorrectly handled
+                   (substitute* "test/methods.jl"
+                     (("@test central_fdm\\(15, 5, adapt=2\\)\\(exp, 1.0\\)")
+                      "@test_broken central_fdm(15, 5, adapt=2)(exp, 1.0)"))))))
+           '(%standard-phases))))
     (inputs
      `(("julia-benchmarktools" ,julia-benchmarktools)))
     (propagated-inputs
@@ -1367,7 +1736,7 @@ using finite difference.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'disable-failing-test
+         (add-after 'link-depot 'disable-failing-test
            (lambda* (#:key outputs #:allow-other-keys)
              (substitute* "test/fixed.jl"
                ;; A deprecation warning is not thrown
@@ -1454,7 +1823,7 @@ differentiation (AD).")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-tests
+         (add-after 'link-depot 'adjust-tests
            (lambda _
              (substitute* "test/runtests.jl"
                (("testset \\\"Abstract.*" all)
@@ -1465,6 +1834,31 @@ differentiation (AD).")
 arbitrary functions.")
     (license license:expat)))
 
+(define-public julia-functors
+  (package
+    (name "julia-functors")
+    (version "0.2.7")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/FluxML/Functors.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "03ry1wn1y2jssq65l29bi6q4ki041aa6gl1nd2w6cgl00k2mrxf3"))))
+    (build-system julia-build-system)
+    (home-page "https://fluxml.ai/Functors.jl/stable/")
+    (synopsis "Design pattern for structures as in machine learning")
+    (description "This package provides tools to express a design pattern for
+dealing with large/ nested structures, as in machine learning and
+optimisation.  For large machine learning models it can be cumbersome or
+inefficient to work with parameters as one big, flat vector, and structs help
+in managing complexity; but it is also desirable to easily operate over all
+parameters at once, e.g. for changing precision or applying an optimiser
+update step.")
+    (license license:expat)))
+
 (define-public julia-fuzzycompletions
   (package
     (name "julia-fuzzycompletions")
@@ -1482,7 +1876,7 @@ arbitrary functions.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-failing-test
+         (add-after 'link-depot 'skip-failing-test
            (lambda _
              (substitute* "test/runtests.jl"
                ((".*RPLE.*") "")))))))
@@ -1509,7 +1903,7 @@ arbitrary functions.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-test-suite
+         (add-after 'link-depot 'adjust-test-suite
            (lambda _
              (substitute* "test/runtests.jl"
                ((".*lapack.*") "")))))))
@@ -1540,7 +1934,7 @@ algebra routines written in Julia (except for optimized BLAS).")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'adjust-test-suite
+         (add-after 'link-depot 'adjust-test-suite
            (lambda _
              (substitute* "test/complex.jl"
                ;; expected Array{Int32,1}, got a value of type Array{Int64,1}
@@ -1560,6 +1954,73 @@ analysis of dense matrices.  The diagonal eigen-decomposition of normal
 matrices the Schur form is often more useful.")
     (license license:expat)))
 
+(define-public julia-geometrybasics
+  (package
+    (name "julia-geometrybasics")
+    (version "0.4.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaGeometry/GeometryBasics.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "057j3hjpli3q5b98cqkpi4p10x2k9pyksrz62hjmv1kb5qzdvhsj"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'remove-earcut
+           (lambda _
+             (substitute* '("Project.toml"
+                            "src/GeometryBasics.jl")
+               ((".*EarCut.*") ""))
+             #t))
+         (add-after 'link-depot 'skip-incompatible-test
+           (lambda _
+             (substitute* "test/runtests.jl"
+               (("@testset.*MetaT and heterogeneous data.*" all)
+                (string-append all "return\n")))
+             #t)))))
+    (propagated-inputs
+     `(("julia-itertools" ,julia-itertools)
+       ("julia-staticarrays" ,julia-staticarrays)
+       ("julia-structarrays" ,julia-structarrays)
+       ("julia-tables" ,julia-tables)))
+    (native-inputs
+     `(("julia-offsetarrays" ,julia-offsetarrays)))
+    (home-page "https://github.com/JuliaGeometry/GeometryBasics.jl")
+    (synopsis "Basic Geometry Types")
+    (description "This package aims to offer a standard set of Geometry types,
+which easily work with metadata, query frameworks on geometries and different
+memory layouts.  The aim is to create a solid basis for Graphics/Plotting,
+finite elements analysis, Geo applications, and general geometry manipulations
+- while offering a Julian API, that still allows performant C-interop.")
+    (license license:expat)))
+
+(define-public julia-gr
+  (package
+    (name "julia-gr")
+    (version "0.58.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/jheinen/GR.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "18zxa1w2wmrf44c5l10qbh99zjdp7h94gxlymh47cf5kj5fc4xmx"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-gr-jll" ,julia-gr-jll)))
+    (home-page "https://github.com/jheinen/GR.jl")
+    (synopsis "Plotting for Julia based on GR")
+    (description "This module provides a Julia interface to GR, a framework for
+visualisation applications.")
+    (license license:expat)))
+
 (define-public julia-graphics
   (package
     (name "julia-graphics")
@@ -1866,7 +2327,7 @@ be downscaled to fit into the size of your active terminal session.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-failing-test
+         (add-after 'link-depot 'skip-failing-test
            (lambda _
              ;; These tests try to download from the imagemagick.org
              (substitute* "test/runtests.jl"
@@ -2046,6 +2507,39 @@ assigned its own index, which is used to retrieve the value from the
 indexed images, sometimes called \"colormap images\" or \"paletted images.\"")
     (license license:expat)))
 
+(define-public julia-infinity
+  (package
+    (name "julia-infinity")
+    (version "0.2.4")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/cjdoris/Infinity.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1941lwvrdjnrynigzixxin3chpg1ba6xplvcwc89x0f6z658hwmm"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'link-depot 'remove-timezones.jl
+           (lambda _
+             (substitute* "test/runtests.jl"
+               (("using TimeZones.*") "")
+               ((".*infextendedtime.*") ""))
+             #t)))))
+    (propagated-inputs
+     `(("julia-requires" ,julia-requires)))
+    (native-inputs
+     `(("julia-compat" ,julia-compat)))
+    (home-page "https://docs.juliahub.com/Infinity/")
+    (synopsis "Representation of infinity in Julia")
+    (description "This package provides representations for infinity and
+negative infinity in Julia.")
+    (license license:expat)))
+
 (define-public julia-inifile
   (package
     (name "julia-inifile")
@@ -2080,6 +2574,8 @@ interfaces with @file{.ini} files.")
         (sha256
          (base32 "1236c20k388qlh7k74mhf7hkbn0vf7ss8b1rgh1a6aj0234ayfnc"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:parallel-tests? #f))
     (propagated-inputs
      `(("julia-axisalgorithms" ,julia-axisalgorithms)
        ("julia-offsetarrays" ,julia-offsetarrays)
@@ -2183,11 +2679,11 @@ as a string together with the return value.")
        (file-name (git-file-name name version))
        (sha256
         (base32 "11334fcg2slpwcj0raxf457brhf7pxglgxc6cy8q58ggrpxqfqql"))))
-    (arguments
-     '(#:tests? #f))                    ;require Documenter, not packaged yet
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-macrotools" ,julia-macrotools)))
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)))
     (home-page "https://github.com/FluxML/IRTools.jl")
     (synopsis "Simple and flexible IR format")
     (description "This package provides a simple and flexible IR format,
@@ -2284,10 +2780,32 @@ and printing JSON documents.")
 focus on speed and slick struct mapping.")
     (license license:expat)))
 
+(define-public julia-latexstrings
+  (package
+    (name "julia-latexstrings")
+    (version "1.2.1")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/stevengj/LaTeXStrings.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "117z27krcf8fydgp6mb0pgn75r4gng9qs7v90qb4bqzsry3faadp"))))
+    (build-system julia-build-system)
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)))
+    (home-page "https://github.com/stevengj/LaTeXStrings.jl")
+    (synopsis "Input and display of LaTeX equation strings")
+    (description "This is a small package to make it easier to type LaTeX
+equations in string literals in the Julia language.")
+    (license license:expat)))
+
 (define-public julia-lazyarrays
   (package
     (name "julia-lazyarrays")
-    (version "0.21.14")
+    (version "0.22.2")
     (source
       (origin
         (method git-fetch)
@@ -2296,8 +2814,17 @@ focus on speed and slick struct mapping.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "130kqyfk0h17s9dr9r1p9n1dgvzzlb1jwn6pj14lwr83s36glpv1"))))
+         (base32 "17rhlrmgfvdw8w62pg32ikr9j4xy2ylr7mx7ar0hnpzryv929rp5"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:phases
+       ,@(if (target-64bit?)
+           '(%standard-phases)
+           '((modify-phases %standard-phases
+               (add-after 'unpack 'fix-tests-int32-i686
+                 (lambda _
+                   (substitute* "test/multests.jl"
+                     (("Int64") "Int32")))))))))
     (propagated-inputs
      `(("julia-arraylayouts" ,julia-arraylayouts)
        ("julia-fillarrays" ,julia-fillarrays)
@@ -2407,7 +2934,7 @@ comes from the fact that @code{M == map(f, A)}.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-failing-test
+         (add-after 'link-depot 'skip-failing-test
            (lambda _
              ;; Tests with math functions are hard.
              (substitute* "test/test_ul.jl"
@@ -2508,10 +3035,37 @@ expressions involving differing types of units that are then evaluated,
 resolving them into absolute units.")
     (license license:expat)))
 
+(define-public julia-media
+  (package
+    (name "julia-media")
+    (version "0.5.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JunoLab/Media.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "05jq9j3vs8yfj2lwz3sh1vk5rha06xdcikp9s2q3dn316vryy6di"))))
+    (build-system julia-build-system)
+    ;; Package without Project.toml
+    (arguments
+     '(#:julia-package-name "Media"
+       #:julia-package-uuid "e89f7d12-3494-54d1-8411-f7d8b9ae1f27"))
+    (propagated-inputs
+     `(("julia-macrotools" ,julia-macrotools)))
+    (home-page "https://github.com/JunoLab/Media.jl")
+    (synopsis "Unified measure and coordinates types")
+    (description "This package provides a display system which enables the
+user handle multiple input/output devices and decide what media types get
+displayed where.")
+    (license license:expat)))
+
 (define-public julia-missings
   (package
     (name "julia-missings")
-    (version "1.0.0")
+    (version "1.0.2")
     (source
       (origin
         (method git-fetch)
@@ -2520,7 +3074,7 @@ resolving them into absolute units.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "131ma44yvswvj85jdjhm37frzfz46cc60lwj65a9jcmgc77dshsm"))))
+         (base32 "1k481rm5lahmjyh34j177d4n10svgr0wm7ps5m3ar3xx6nr26ad5"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-dataapi" ,julia-dataapi)))
@@ -2555,7 +3109,7 @@ programming infrastructures, and metaprogramming facilities.")
 (define-public julia-mocking
   (package
     (name "julia-mocking")
-    (version "0.7.1")
+    (version "0.7.3")
     (source
       (origin
         (method git-fetch)
@@ -2564,10 +3118,11 @@ programming infrastructures, and metaprogramming facilities.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "10jz716v6i3gpd403rmcrip6cncjl9lqr12cdl321x1994a5g8ck"))))
+         (base32 "1cg2is83bjmrchmmxcgx57k8c9b9vlamrw38v4fdhbb6d4six5cg"))))
     (build-system julia-build-system)
     (propagated-inputs
-     `(("julia-exprtools" ,julia-exprtools)))
+     `(("julia-compat" ,julia-compat)
+       ("julia-exprtools" ,julia-exprtools)))
     (home-page "https://github.com/invenia/Mocking.jl")
     (synopsis "Overload Julia function calls")
     (description "The purpose of this package is to allow Julia function calls
@@ -2704,7 +3259,7 @@ interface to interact with these types.")
 (define-public julia-nnlib
   (package
     (name "julia-nnlib")
-    (version "0.7.25")
+    (version "0.7.29")
     (source
       (origin
         (method git-fetch)
@@ -2713,16 +3268,16 @@ interface to interact with these types.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0vp4kcn9ivkhmqgkyvnabcdqi6pv7ghbmjc1llkwv1kzhylyf86p"))))
+         (base32 "16vn5w5274kcywh1xp0zqjk5q10xrk125aznz5av6wifwrvghk8s"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f      ; Test suite not updated for ChainRulesTestUtils-1.0.
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'drop-cuda-support
+         (add-after 'link-depot 'skip-cuda-tests
            (lambda _
              (substitute* "test/runtests.jl"
-               (("using CUDA") ""))
+               (("using CUDA") "")
+               (("&& CUDA\\.functional\\(\\)") ""))
              (setenv "NNLIB_TEST_CUDA" "false"))))))
     (propagated-inputs
      `(("julia-adapt" ,julia-adapt)
@@ -2754,7 +3309,8 @@ doesn't provide any other \"high-level\" functionality like layers or AD.")
          (base32 "10h47x5ws42pkqjccimaz0yxfvz41w0yazq6inamfk4lg5g2g3d9"))))
     (build-system julia-build-system)
     (arguments
-     `(#:julia-package-name "OptimTestProblems"))
+     `(#:julia-package-name "OptimTestProblems"
+       #:julia-package-uuid "cec144fc-5a64-5bc6-99fb-dde8f63e154c"))
     (home-page "https://github.com/JuliaNLSolvers/OptimTestProblems.jl")
     (synopsis "Collection of optimization test problems")
     (description "The purpose of this package is to provide test problems for
@@ -2822,10 +3378,10 @@ languages like Fortran.")
         (sha256
          (base32 "0ran2vj6ahlzib0g77y7g0jhavy3k9s2mqq23ybpgp9z677wf26h"))))
     (build-system julia-build-system)
-    (arguments
-     '(#:tests? #f))                    ;require Documenter, not packaged yet
     (propagated-inputs
      `(("julia-offsetarrays" ,julia-offsetarrays)))
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)))
     (home-page "https://github.com/JuliaArrays/PaddedViews.jl")
     (synopsis "Add virtual padding to the edges of an array")
     (description "@code{PaddedViews} provides a simple wrapper type,
@@ -2930,7 +3486,7 @@ actual computation.")
 (define-public julia-plotutils
   (package
     (name "julia-plotutils")
-    (version "1.0.11")
+    (version "1.0.15")
     (source
       (origin
         (method git-fetch)
@@ -2939,7 +3495,7 @@ actual computation.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0pqd3yvs3w48sr50c8rcqk5pzvpdy9nf4kimcvyz9dvwc3jgh6rd"))))
+         (base32 "12aw5gkkcfhpczv2w510k65w1j0hjnh825ihimi223v8plsi5105"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-colors" ,julia-colors)
@@ -2956,7 +3512,7 @@ plotting components.")
 (define-public julia-pooledarrays
   (package
     (name "julia-pooledarrays")
-    (version "1.2.1")
+    (version "1.3.0")
     (source
       (origin
         (method git-fetch)
@@ -2965,7 +3521,7 @@ plotting components.")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
-         (base32 "0ihvhzkxdw4qf0i6sbrickhdcwkmlin9zyixxn9xvgzm8nc0iwqy"))))
+         (base32 "0qdwvf1p5z6z0q4s4hn85ysd8wq47zy6hlzddc5ijvhk86ccqlrr"))))
     (build-system julia-build-system)
     (propagated-inputs
      `(("julia-dataapi" ,julia-dataapi)))
@@ -3044,7 +3600,7 @@ everything from run time algorithm choice to code generation at compile time.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-color-tests
+         (add-after 'link-depot 'skip-color-tests
            (lambda _
              (substitute* "test/text_backend.jl"
                ((".*colors\\.jl.*") ""))
@@ -3063,7 +3619,7 @@ human-readable format.")
 (define-public julia-pycall
   (package
     (name "julia-pycall")
-    (version "1.92.3")
+    (version "1.92.5")
     (source
       (origin
         (method git-fetch)
@@ -3073,7 +3629,7 @@ human-readable format.")
         (file-name (git-file-name name version))
         (sha256
          (base32
-          "07r99ni6nkxpyrp3wsb5qg4jxz7i2r08dyqbiffy2zm3g0bn88jq"))))
+          "1fj5d1ihnhnm0pl4hbx6hcd2bpdyhm8jiaqah2axsbd069j70saf"))))
     (build-system julia-build-system)
     (arguments
      `(#:imported-modules ((guix build python-build-system)
@@ -3083,7 +3639,7 @@ human-readable format.")
                   ((guix build python-build-system) #:prefix python:))
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'remove-conda
+         (add-after 'link-depot 'remove-conda
            (lambda _
              (substitute* "Project.toml"
                ((".*Conda.*") ""))
@@ -3093,7 +3649,7 @@ human-readable format.")
              (substitute* "deps/depsutils.jl"
                (("Conda.PYTHONDIR") "\"/\""))
              #t))
-         (add-after 'unpack 'set-python
+         (add-after 'link-depot 'set-python
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((python (assoc-ref inputs "python")))
                (setenv "PYCALL_JL_RUNTIME_PYTHON"
@@ -3135,6 +3691,35 @@ types between Julia and Python), define Python classes from Julia methods, and
 share large data structures between Julia and Python without copying them.")
     (license license:expat)))
 
+(define-public julia-pyplot
+  (package
+    (name "julia-pyplot")
+    (version "2.10.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaPy/PyPlot.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "007zs0imfgs69f30pp2a3rc93kl0qiq7qjx6ig35z4wzkmps4skd"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-colors" ,julia-colors)
+       ("julia-latexstrings" ,julia-latexstrings)
+       ("julia-pycall" ,julia-pycall)
+       ("julia-versionparsing" ,julia-versionparsing)
+       ;; python-matplotlib is expected to be available at runtime.
+       ("python-matplotlib" ,python-matplotlib)))
+    (home-page "https://github.com/JuliaPy/PyPlot.jl")
+    (synopsis "Plotting for Julia based on matplotlib.pyplot")
+    (description "This package provides a Julia interface to the Matplotlib
+plotting library from Python, and specifically to the @code{matplotlib.pyplot}
+module.  PyPlot uses the Julia PyCall package to call Matplotlib directly from
+Julia with little or no overhead (arrays are passed without making a copy).")
+    (license license:expat)))
+
 (define-public julia-quadgk
   (package
     (name "julia-quadgk")
@@ -3177,7 +3762,7 @@ arbitrary normed vector spaces (e.g. matrix-valued integrands).")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'hardcode-libmath-location
+         (add-after 'link-depot 'hardcode-libmath-location
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((gcclib (assoc-ref inputs "gcc:lib")))
                (substitute* "src/Quadmath.jl"
@@ -3378,7 +3963,7 @@ recursive arrays like arrays of arrays.")
 (define-public julia-reexport
   (package
     (name "julia-reexport")
-    (version "1.1.0")
+    (version "1.2.2")
     (source
      (origin
        (method git-fetch)
@@ -3387,7 +3972,7 @@ recursive arrays like arrays of arrays.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1wj4vnxxmnblm6ajkkdvwb7v4835qrrc406q5is74qv1n68xql7l"))))
+        (base32 "0inf5q6f01ncd5c5wm8mwzv2hs627ng6xlh8dhrlflp321hbamwf"))))
     (build-system julia-build-system)
     (home-page "https://github.com/simonster/Reexport.jl")
     (synopsis "Re-export modules and symbols")
@@ -3446,6 +4031,8 @@ package can help create and update if need be.")
        (sha256
         (base32 "03hyfy7c0ma45b0y756j76awi3az2ii4bz4s8cxm3xw9yy1z7b01"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:parallel-tests? #f))
     (inputs                             ;required for test
      `(("julia-example" ,julia-example)))
     (propagated-inputs
@@ -3569,7 +4156,8 @@ through matrix-vector multiplication.")
            (base32 "1fb1dfdmiw2ggx60hf70954xlps0r48fcb3k3dvxynlz7ylphp96"))))
       (build-system julia-build-system)
       (arguments
-       `(#:julia-package-name "SafeTestsets"))
+       `(#:julia-package-name "SafeTestsets"
+         #:julia-package-uuid "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"))
       (native-inputs
        `(("julia-staticarrays" ,julia-staticarrays)))
       (home-page "https://github.com/YingboMa/SafeTestsets.jl")
@@ -3578,6 +4166,28 @@ through matrix-vector multiplication.")
 a loadable module.")
       (license license:expat))))
 
+(define-public julia-sass
+  (package
+    (name "julia-sass")
+    (version "0.2.0")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/piever/Sass.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0y7kkkj717h5cj659ssry89i5r64symr6pvhr6vv4qmaxrnjxj92"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-libsass-jll" ,julia-libsass-jll)))
+    (home-page "https://github.com/piever/Sass.jl")
+    (synopsis "Compile scss and sass file to css")
+    (description "This package provides a simple Julian API to use the
+@code{libsass} library to compile scss and sass files to css.")
+    (license license:expat)))
+
 (define-public julia-scratch
   (package
     (name "julia-scratch")
@@ -3771,19 +4381,18 @@ some performance improvements).")
          (base32 "1fwiaxdpx1z9dli3jr8kyraych0jbdiny3qklynf0r13px25r6i7"))))
     (build-system julia-build-system)
     (arguments
-     `(#:tests? #f  ; Documenter.jl not packaged yet
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'skip-doctest
+         (add-after 'link-depot 'skip-doctest
            (lambda _
              (substitute* "test/runtests.jl"
                ((".*doctest.*") ""))
              #t)))))
     (propagated-inputs
      `(("julia-offsetarrays" ,julia-offsetarrays)))
-    ;(native-inputs
-    `(("julia-aqua" ,julia-aqua)
-      ("julia-documenter" ,julia-documenter)))
+    (native-inputs
+    `(("julia-aqua" ,julia-aqua)
+      ("julia-documenter" ,julia-documenter)))
     (home-page "https://github.com/JuliaArrays/StackViews.jl")
     (synopsis "No more catcat")
     (description "StackViews provides only one array type: @code{StackView}.
@@ -3823,7 +4432,7 @@ types and a common interface that is shared between them.")
 (define-public julia-staticarrays
   (package
     (name "julia-staticarrays")
-    (version "1.2.9")
+    (version "1.2.13")
     (source
      (origin
        (method git-fetch)
@@ -3832,7 +4441,7 @@ types and a common interface that is shared between them.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1902bl9p96mfq7d1rbilwp98wz2g82ml9svcgx7sczglyjbs4nsk"))))
+        (base32 "041mijzgzm8r61a3gwspr2wcxjikqksvj2rbnl4gmcy41alqmx79"))))
     (build-system julia-build-system)
     (inputs
      `(("julia-benchmarktools" ,julia-benchmarktools)))
@@ -3922,6 +4531,40 @@ are defined for @code{AbstractStrings}, and any iterator that define
 applied to any distance.")
     (license license:expat)))
 
+(define-public julia-structarrays
+  (package
+    (name "julia-structarrays")
+    (version "0.6.3")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaArrays/StructArrays.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "0rjcpyjwzg70n87q5r9c5i1qzigavncslxssm3rk5a3y549py56v"))))
+    (build-system julia-build-system)
+    (propagated-inputs
+     `(("julia-dataapi" ,julia-dataapi)
+       ("julia-staticarrays" ,julia-staticarrays)
+       ("julia-tables" ,julia-tables)))
+    (native-inputs
+     `(("julia-documenter" ,julia-documenter)
+       ("julia-offsetarrays" ,julia-offsetarrays)
+       ("julia-pooledarrays" ,julia-pooledarrays)
+       ("julia-typedtables" ,julia-typedtables)
+       ("julia-weakrefstrings" ,julia-weakrefstrings)))
+    (home-page "https://github.com/JuliaArrays/StructArrays.jl")
+    (synopsis "Efficient implementation of struct arrays in Julia")
+    (description "This package introduces the type @code{StructArray} which is
+an @code{AbstractArray} whose elements are @code{struct} (for example
+@code{NamedTuples}, or @code{ComplexF64}, or a custom user defined
+@code{struct}).  While a @code{StructArray} iterates @code{structs}, the layout
+is column based (meaning each field of the @code{struct} is stored in a separate
+@code{Array}).")
+    (license license:expat)))
+
 (define-public julia-structtypes
   (package
     (name "julia-structtypes")
@@ -4153,6 +4796,34 @@ package.")
 automatic differentiation for its machine learning platform.")
     (license license:expat)))
 
+(define-public julia-transcodingstreams
+  (package
+    (name "julia-transcodingstreams")
+    (version "0.9.6")
+    (source
+      (origin
+        (method git-fetch)
+        (uri (git-reference
+               (url "https://github.com/JuliaIO/TranscodingStreams.jl")
+               (commit (string-append "v" version))))
+        (file-name (git-file-name name version))
+        (sha256
+         (base32 "1w3klii293caqiclfh28jggv7f53xclm9fr6xmw38brwrn1hjb48"))))
+    (build-system julia-build-system)
+    (arguments
+     `(#:tests? #f))                ; Circular dependency with various codecs.
+    (home-page "https://github.com/JuliaIO/TranscodingStreams.jl")
+    (synopsis "Fast I/O transcoding data streams")
+    (description "This package provides tools for transcoding data streams
+which are:
+@itemize
+@item fast: small overhead and specialized methods
+@item consistent: basic I/O operations work as expected
+@item generic: support any I/O objects like files, buffers, pipes, etc.
+@item extensible: easy definition for new codec to transcode data
+@end itemize")
+    (license license:expat)))
+
 (define-public julia-typedtables
   (package
     (name "julia-typedtables")
@@ -4215,6 +4886,7 @@ types, modules, and dictionaries.")
     (build-system julia-build-system)
     (arguments
      '(#:julia-package-name "URIs"      ;required to run tests
+       #:julia-package-uuid "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"
        #:phases
        (modify-phases %standard-phases
          (add-before 'check 'change-dir
@@ -4222,7 +4894,7 @@ types, modules, and dictionaries.")
            (lambda* (#:key source outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (chdir
-                (string-append out "/share/julia/packages/URIs/test")))
+                (string-append out "/share/julia/loadpath/URIs/test")))
              #t)))))
     ;; required for tests
     (inputs `(("julia-json" ,julia-json)))
@@ -4247,6 +4919,8 @@ working with @acronym{URIs,Uniform Resource Identifiers}, as defined in RFC
        (sha256
         (base32 "10qwscd15dnmvx116dwvg99m7kmwgmj5ahdkq7psiq48lcc554gq"))))
     (build-system julia-build-system)
+    (arguments
+     `(#:parallel-tests? #f))
     (propagated-inputs
      `(("julia-constructionbase" ,julia-constructionbase)))
     (home-page "https://painterqubits.github.io/Unitful.jl/stable/")