diff options
Diffstat (limited to 'gn/packages/julia.scm')
-rw-r--r-- | gn/packages/julia.scm | 1293 |
1 files changed, 1221 insertions, 72 deletions
diff --git a/gn/packages/julia.scm b/gn/packages/julia.scm index 31cc29c..a00244f 100644 --- a/gn/packages/julia.scm +++ b/gn/packages/julia.scm @@ -17,6 +17,7 @@ #:use-module (gnu packages julia-xyz) #:use-module (gnu packages python) #:use-module (gnu packages statistics) + #:use-module (gnu packages version-control) #:use-module (gnu packages video) #:use-module (ice-9 match)) @@ -24,7 +25,7 @@ (define-public julia-visuals (let ((commit "e8e2b601f40a76c8f20f0ddfe80c56257dd9a294") - (revision "2")) + (revision "3")) (package (name "julia-visuals") (version (git-version "0.0.0" revision commit)) @@ -51,6 +52,7 @@ (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin")) ;; Copied from the Dockerfile. (for-each (lambda (file) @@ -59,6 +61,7 @@ "environment.yml" "setup.py" "runpluto.sh" + "runsliderserver.sh" "notebooks" "Project.toml"))))) (add-after 'install 'wrap-program @@ -68,11 +71,15 @@ (wrap-script (string-append out "/runpluto.sh") `("PATH" ":" prefix (,(string-append (assoc-ref inputs "julia") "/bin") ,(string-append (assoc-ref inputs "coreutils") "/bin"))) + `("JULIA_LOAD_PATH" ":" prefix (,(getenv "JULIA_LOAD_PATH")))) + (wrap-script (string-append out "/runsliderserver.sh") + `("PATH" ":" prefix (,(string-append (assoc-ref inputs "julia") "/bin") + ,(string-append (assoc-ref inputs "coreutils") "/bin"))) `("JULIA_LOAD_PATH" ":" prefix (,(getenv "JULIA_LOAD_PATH"))))))) - (add-after 'install 'create-run-program + (add-after 'install 'create-runpluto (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (with-output-to-file (string-append out "/runpluto") + (with-output-to-file (string-append out "/bin/runpluto") (lambda () (format #t "#!~a --no-auto-compile !# @@ -93,25 +100,64 @@ (getenv "JULIA_LOAD_PATH") (dirname (search-input-file inputs "/bin/yes")) (search-input-file inputs "/bin/julia")))) - (chmod (string-append out "/runpluto") #o555)))) + (chmod (string-append out "/bin/runpluto") #o555)))) + (add-after 'install 'create-runsliderserver + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (with-output-to-file (string-append out "/bin/runsliderserver") + (lambda () + (format #t "#!~a --no-auto-compile +!# +(setenv \"JULIA_LOAD_PATH\" \"~a\") +(setenv \"PATH\" \"~a\") +;; First initialise or update the julia registry: +(zero? (system* \"~a\" + \"--optimize=0\" + ;; Used by L1-penalty.jl: + ;; \"-e\" \"import Pkg; Pkg.add(\\\"PlotlyBase\\\")\" + \"-e\" \"import Pkg; Pkg.update()\")) +(zero? (system* \"~a\" + \"--optimize=0\" + \"-e\" \"import PlutoSliderServer; + PlutoSliderServer.run_directory( + \\\"~a/notebooks/\\\", + SliderServer_port=4343, + SliderServer_host=\\\"0.0.0.0\\\")\"))\n" + (search-input-file inputs "/bin/guile") + (getenv "JULIA_LOAD_PATH") + (dirname (search-input-file inputs "/bin/yes")) + (search-input-file inputs "/bin/julia") + (search-input-file inputs "/bin/julia") + out))) + (chmod (string-append out "/bin/runsliderserver") #o555)))) (replace 'precompile (lambda _ (invoke "julia" "-e" "\"import Pkg; Pkg.instantiate(); Pkg.status(); Pkg.precompile()\"")))))) + #; (propagated-inputs + ;; This doesn't seem to actually be used anywhere `(;; from setup.py ("python-jupyter-server-proxy" ,(@ (gn packages python) python-jupyter-server-proxy-1)))) (inputs - (list julia-distributions + ;; Ideally we'd use more of these packages, but we end up downloading + ;; most of them anyway when the service starts, so we've commented them + ;; out for now. + (list ;julia-cairomakie ; 0.8.13 + ;julia-distributions ; 0.25.76 ;julia-interactiveutils ; stdlib - julia-latexstrings + ;julia-latexstrings ; 1.3.0 ;julia-markdown ; stdlib - julia-optim - julia-plots - julia-pluto - julia-plutoui + ;julia-optim ; 1.7.2 + ;julia-plots ; 1.35.3 + ;julia-pluto ; 0.19.11 + julia-plutosliderserver ; * + ;julia-plutoui ; 0.7.46 + ;julia-prettytables ; 2.1.0 + ;julia-quadgk ; 2.5.0 + ;julia-roots ; 2.0.3 (@ (gnu packages guile) guile-3.0))) ; for wrap-script (home-page "https://github.com/sens/visuals") (synopsis "Visualizations using Pluto.jl notebooks") @@ -302,25 +348,35 @@ distributed computing.") (base32 "0nqlnkh8grxfm8d1mivi7dnrvb31bznj9s540a10d2v396ikfggn")))) (build-system julia-build-system) (arguments - `(#:tests? #f)) ; Some failed tests + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-tests + (lambda _ + ;; Something about logpdf fails in both of these test sets. + (substitute* "test/multivariate/dirichlet.jl" + (("\\@testset \"_logpdf\" begin") + "@testset \"_logpdf\" begin return;")) + (substitute* "test/univariate/discrete/negativebinomial.jl" + ;; The negative numbers something something wrong in logpdf. + (("0, 10, 42, -1, -5, -13") "0, 10, 42"))))))) (propagated-inputs - `(("julia-chainrulescore" ,julia-chainrulescore) - ("julia-densityinterface" ,julia-densityinterface) - ("julia-fillarrays" ,julia-fillarrays) - ("julia-pdmats" ,julia-pdmats) - ("julia-quadgk" ,julia-quadgk) - ("julia-specialfunctions" ,julia-specialfunctions) - ("julia-statsbase" ,julia-statsbase) - ("julia-statsfuns" ,julia-statsfuns))) + (list julia-chainrulescore ; 1 + julia-densityinterface ; 0.4 + julia-fillarrays ; 0.9 .. 0.13 + julia-pdmats ; 0.10, 0.11 + julia-quadgk ; 2 + julia-specialfunctions ; 1.2, 2 + julia-statsbase ; 0.32, 0.33 + julia-statsfuns)) ; 0.9.15, 1 (native-inputs - `(("julia-calculus" ,julia-calculus) - ("julia-chainrulestestutils" ,julia-chainrulestestutils) - ("julia-finitedifferences" ,julia-finitedifferences) - ("julia-forwarddiff" ,julia-forwarddiff) - ("julia-json" ,julia-json) - ("julia-offsetarrays" ,julia-offsetarrays) - ("julia-stablerngs" ,julia-stablerngs) - ("julia-staticarrays" ,julia-staticarrays))) + (list julia-calculus + julia-chainrulestestutils + julia-finitedifferences + julia-forwarddiff + julia-json + julia-offsetarrays + julia-stablerngs + julia-staticarrays)) (home-page "https://github.com/JuliaStats/Distributions.jl") (synopsis "Probability distributions and associated functions") (description "Julia package for probability distributions and associated @@ -335,6 +391,302 @@ properties @end enumerate") (license license:expat))) +(define-public julia-fromfile + (package + (name "julia-fromfile") + (version "0.1.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Roger-luo/FromFile.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0jn394294d4s1fqsfiwpiy6dzlca4ciy54l2xviwyzhvixmlfrwn")))) + (build-system julia-build-system) + (arguments + '(#:tests? #f)) ; Tests require network access + (propagated-inputs + (list julia-requires)) + (home-page "https://github.com/Roger-luo/FromFile.jl") + (synopsis "Julia enhancement proposal for implicit per file module in Julia") + (description "This package exports a macro @code{@@from}, which can be used +to import objects from files.") + (license license:expat))) + +(define-public julia-git + (package + (name "julia-git") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaVersionControl/Git.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0bznzg360cbvbzzpsdkin4dm2v980sb5pv58gy1bp3j9j8bj38h6")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-network-tests + (lambda _ + (substitute* "test/runtests.jl" + (("testset.*Git.jl.*" all) + (string-append all " return\n")))))))) + (propagated-inputs + (list julia-git-jll)) + (home-page "https://github.com/JuliaVersionControl/Git.jl") + (synopsis "Use command-line Git in your Julia packages") + (description "Git.jl allows you to use command-line Git in your Julia +packages. You do not need to have Git installed on your computer, and neither +do the users of your packages!") + (license license:expat))) + +(define-public julia-git-jll + (package + (name "julia-git-jll") + (version "2.36.1+2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaBinaryWrappers/Git_jll.jl") + (commit (string-append "Git-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1n8k363q2mw5qfkagbbqpn4djx181qbn05l7brp3spspvf5aslgm")))) + (build-system julia-build-system) + (arguments + '(#:tests? #f ; no runtests + #:phases + (modify-phases %standard-phases + (add-after 'link-depot 'override-binary-path + (lambda* (#:key inputs #:allow-other-keys) + (map + (lambda (wrapper) + (substitute* wrapper + (("generate_wrapper_header.*") + (string-append + "generate_wrapper_header(\"Git\", \"" + (assoc-ref inputs "git-minimal") "\")\n")))) + ;; There's a Julia file for each platform, override them all + (find-files "src/wrappers/" "\\.jl$"))))))) + (inputs + (list git-minimal)) + (propagated-inputs + (list julia-jllwrappers + julia-expat-jll + julia-openssl-jll + ;julia-libcurl-jll + julia-libiconv-jll + ;julia-pcre2-jll + julia-zlib-jll)) + (home-page "https://github.com/JuliaBinaryWrappers/Git_jll.jl") + (synopsis "Git library wrappers") + (description "This package provides a wrapper for the git library.") + (license license:expat))) + +(define-public julia-glob + (package + (name "julia-glob") + (version "1.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vtjnash/Glob.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05yp7ba3y3pfibs0hy2sp61phb5b6x7aacsjc93i3lz6wmlpj0jx")))) + (build-system julia-build-system) + (home-page "https://github.com/vtjnash/Glob.jl") + (synopsis "Posix-compliant file name pattern matching") + (description "This implementation of Glob is based on the IEEE Std 1003.1, +2004 Edition (Open Group Base Specifications Issue 6) for fnmatch and glob.") + (license license:expat))) + +(define-public julia-terminalloggers + (package + (name "julia-terminalloggers") + (version "0.1.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLogging/TerminalLoggers.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01l9qsjljwa9pkpvf1pafmbrncjddwdw3737pf44y9q5hrp4hbr7")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-leftchildrightsiblingtrees + julia-progresslogging)) + (home-page "https://github.com/JuliaLogging/TerminalLoggers.jl") + (synopsis "Logging sinks and utilites for interactive terminals") + (description "TerminalLoggers provides a logger type @code{TerminalLogger} +which can format your log messages in a richer way than the default +@code{ConsoleLogger} which comes with the julia standard @code{Logging} +library.") + (license license:expat))) + +(define-public julia-roots + (package + (name "julia-roots") + (version "2.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaMath/Roots.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17d62r8pib3cp73az00iz8nbnd5j0y3dl1mrmcssnj4ln8043056")))) + (build-system julia-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-expensive-tests + (lambda _ + (substitute* "test/runtests.jl" + ((".*test_composable.*") ""))))))) + (propagated-inputs + (list julia-commonsolve + julia-setfield)) + (native-inputs + (list julia-benchmarktools + julia-forwarddiff + julia-json + julia-specialfunctions)) + (home-page "http://juliamath.github.io/Roots.jl/") + (synopsis "Root finding functions for Julia") + (description "This package contains simple routines for finding roots, or +zeros, of scalar functions of a single real variable using floating-point +math.") + (license license:expat))) + +(define-public julia-commonsolve + (package + (name "julia-commonsolve") + (version "0.2.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SciML/CommonSolve.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1w05fp02g5cmqzqp96hcpriwjpqx61sl481rj92gf4y4xpinmdf5")))) + (build-system julia-build-system) + (home-page "https://docs.sciml.ai/CommonSolve/stable") + (synopsis "Common solve function for scientific machine learning") + (description "This holds the common @code{solve}, @code{init}, +@code{step!}, and @code{solve!} commands. By using the same definition, solver +libraries from other completely different ecosystems can extend the functions +and thus not clash with SciML if both ecosystems export the @code{solve} +command. The rules are that you must dispatch on one of your own types.") + (license license:expat))) + +(define-public julia-setfield + (package + (name "julia-setfield") + (version "1.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jw3126/Setfield.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vdn9s639f120560599m4lhqkk0nsx7qa87fv2mixs1faaihsf6l")))) + (build-system julia-build-system) + (arguments + `(#:tests? #f)) ; Skip tests, not all dependencies packaged. + (propagated-inputs + (list julia-constructionbase + julia-macrotools + julia-staticarrayscore)) + (home-page "https://github.com/jw3126/Setfield.jl") + (synopsis "Update deeply nested immutable structs") + (description "Update deeply nested immutable structs.") + (license license:expat))) + +(define-public julia-staticarrayscore + (package + (name "julia-staticarrayscore") + (version "1.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaArrays/StaticArraysCore.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0m573mxvf0y9h7y8rxrk35haphhqisplx159r77g30qvw7zwpgar")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaArrays/StaticArraysCore.jl") + (synopsis "Interface package for StaticArrays.jl") + (description + "This package provides an interface package for @code{StaticArrays.jl}.") + (license license:expat))) + +(define-public julia-progresslogging + (package + (name "julia-progresslogging") + (version "0.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLogging/ProgressLogging.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ysixnl7wjdykaka892jrhsay2aivpch83h8dnfs43z2xynf9sqn")))) + (build-system julia-build-system) + (native-inputs + (list julia-offsetarrays)) + (home-page "https://github.com/JuliaLogging/ProgressLogging.jl") + (synopsis "Define progress logs") + (description "ProgressLogging.jl is a package for defining progress logs. +It can be used to report progress of a loop/loops with time-consuming body.") + (license license:expat))) + +(define-public julia-leftchildrightsiblingtrees + (package + (name "julia-leftchildrightsiblingtrees") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaCollections/LeftChildRightSiblingTrees.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rijr0yqmbzhlk668v4rqw5xmxxzqvgziasyqrd6z837376mfyy6")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-abstracttrees)) + (home-page "https://github.com/JuliaCollections/LeftChildRightSiblingTrees.jl") + (synopsis "Representation of a tree with arbitrary number of children/node") + (description "A left child, right sibling tree (frequently abbreviated as +\"LCRS\") is a rooted tree data structure that allows a parent node to have +multiple child nodes. Rather than maintain a list of children (which requires +one array per node), instead it is represented as a binary tree, where the +\"left\" branch is the first child, whose \"right\" branch points to its first +sibling.") + (license license:expat))) + ;; ready to upstream (define-public julia-densityinterface (package @@ -363,7 +715,7 @@ densities and objects associated with a density in Julia.") (define-public julia-plots (package (name "julia-plots") - (version "1.16.6") + (version "1.35.6") (source (origin (method git-fetch) @@ -372,57 +724,610 @@ densities and objects associated with a density in Julia.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0ipv9408r4czsx1j01sv2f7ww52b329jc0v79npn4x2mf827nsik")))) + (base32 "005za8a8al822xr0cz4yi1rm23qj1lzy9iw93vvhwq76x3n8bfpy")))) (build-system julia-build-system) (arguments `(#:tests? #f ; for now + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-tests + (lambda _ + ;; Decrease the number of tests we're running. + (substitute* "test/runtests.jl" + ((".*VisualRegressionTests.*") "") + ((".*pgfplotsx.*") "") + ((".*plotlyjs.*") "") + )))) )) (propagated-inputs - `( - ;("julia-contour" ,julia-contour) - ("julia-ffmpeg" ,julia-ffmpeg) - ("julia-fixedpointnumbers" ,julia-fixedpointnumbers) - ("julia-gr" ,julia-gr) - ("julia-geometrybasics" ,julia-geometrybasics) - ("julia-json" ,julia-json) - ;("julia-latexify" ,julia-latexify) - ("julia-measures" ,julia-measures) - ("julia-nanmath" ,julia-nanmath) - ("julia-plotthemes" ,julia-plotthemes) - ("julia-plotutils" ,julia-plotutils) - ("julia-recipesbase" ,julia-recipesbase) - ("julia-recipespipeline" ,julia-recipespipeline) - ("julia-reexport" ,julia-reexport) - ("julia-requires" ,julia-requires) - ("julia-scratch" ,julia-scratch) - ("julia-showoff" ,julia-showoff) - ("julia-statsbase" ,julia-statsbase) - )) + (list julia-contour + julia-ffmpeg + julia-fixedpointnumbers + julia-gr + julia-geometrybasics + julia-jlfzf + julia-json + ;julia-latexify + julia-measures + julia-nanmath + julia-plotthemes + julia-plotutils + julia-recipesbase + julia-recipespipeline + julia-reexport + julia-relocatablefolders + julia-requires + julia-scratch + julia-showoff + julia-snoopprecompile + julia-statsbase + julia-unicodefun + julia-unzip)) (native-inputs - `( - ;("julia-distributions" ,julia-distributions) - ("julia-fileio" ,julia-fileio) - ;("julia-gtk" ,julia-gtk) - ;("julia-hdf5" ,julia-hdf5) - ("julia-imagemagick" ,julia-imagemagick) - ;("julia-images" ,julia-images) - ("julia-offsetarrays" ,julia-offsetarrays) - ;("julia-pgfplotsx" ,julia-pgfplotsx) - ;("julia-plotlyjs" ,julia-plotlyjs) - ;("julia-rdatasets" ,julia-rdatasets) - ("julia-stablerngs" ,julia-stablerngs) - ("julia-staticarrays" ,julia-staticarrays) - ;("julia-statsplots" ,julia-statsplots) - ("julia-testimages" ,julia-testimages) - ;("julia-unicodeplots" ,julia-unicodeplots) - ;("julia-visualregressiontests" ,julia-visualregressiontests) - )) + (list julia-aqua + julia-colors + ;julia-conda + julia-distributions + julia-fileio + julia-filepathsbase + ;julia-gaston + julia-geometrybasics + ;julia-gtk + ;julia-hdf5 + julia-imagemagick + ;julia-images + ;julia-inspectdr + julia-offsetarrays + ;julia-pgfplotsx + ;julia-plotlybase + ;julia-plotlyjs + ;julia-plotlykaleido + julia-pycall + julia-pyplot + ;julia-rdatasets + julia-sentinelarrays + julia-stablerngs + julia-staticarrays + ;julia-statsplots + julia-testimages + julia-unicodeplots + julia-unitful + ;julia-visualregressiontests + )) (home-page "http://docs.juliaplots.org/") (synopsis "Powerful convenience for Julia visualizations and data analysis") (description "Plots is a plotting API and toolset.") (license license:expat))) +(define-public julia-contour + (package + (name "julia-contour") + (version "0.5.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaGeometry/Contour.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ai6lh5ap9qxhqm2k1pnkfbpm4b95d3v7izhyvrr9cxwbxfjv3vn")))) + (build-system julia-build-system) + (arguments `(#:tests? #f)) ;; FIX ME + (propagated-inputs + (list julia-staticarrays)) + (native-inputs + (list julia-offsetarrays + julia-statsbase)) + (home-page "https://github.com/JuliaGeometry/Contour.jl") + (synopsis "Calculating contour curves for 2D scalar fields in Julia") + (description "This package provides a generic implementation of the +@url{https://en.wikipedia.org/wiki/Marching_squares, marching squares} +algorithm for tracing contour curves on a scalar 2D field.") + (license license:expat))) + +(define-public julia-unicodeplots + (package + (name "julia-unicodeplots") + (version "2.12.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPlots/UnicodePlots.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0plkczznx1297m1lviczkm4873yl29anr5csgyhh9vnvyf1606y2")))) + (build-system julia-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'adjust-tests + (lambda _ + ;; It is unclear why these tests fail and why some + ;; have a suprise dependency on AstroIO (from FileIO) + (substitute* "test/runtests.jl" + ((".*tst_world_age.*") "") + ((".*tst_io.*") "") + ((".*tst_densityplot.*") "")) + (substitute* "test/tst_canvas.jl" + ((".*HeatmapCanvas, \"heatmap\".*") "")) + (substitute* "test/tst_histogram.jl" + (("testset.*keyword.*" all) + (string-append all " return;\n")) + (("testset.*vertical\".*" all) + (string-append all " return;\n"))) + (substitute* "test/tst_barplot.jl" + (("testset.*maximum.*" all) + (string-append all " return;\n"))) + (substitute* "test/tst_spy.jl" + (("testset.*parameters.*" all) + (string-append all " return;\n"))) + (substitute* "test/tst_boxplot.jl" + (("testset.*default.*" all) + (string-append all " return;\n")) + (("testset.*scaling.*" all) + (string-append all " return;\n"))) + (substitute* "test/tst_volume.jl" + (("testset.*cube.*" all) + (string-append all " return;\n")))))))) + (propagated-inputs + (list julia-colortypes + julia-contour + julia-crayons + julia-fileio + julia-freetypeabstraction + julia-lazymodules + julia-marchingcubes + julia-nanmath + julia-staticarrays + julia-statsbase + julia-unitful)) + (native-inputs + (list julia-colortypes + julia-imagemagick + julia-referencetests + julia-stablerngs)) + (home-page "https://github.com/JuliaPlots/UnicodePlots.jl") + (synopsis "Unicode-based scientific plotting for working in the terminal") + (description "Advanced Unicode plotting library designed for use in Julia's REPL.") + (license license:expat))) + +(define-public julia-lazymodules + (package + (name "julia-lazymodules") + (version "0.3.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/johnnychen94/LazyModules.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11xz0aw5w338pka9jf3r7mfhgm98fnqzsky5ig9z7b996z0m7lpk")))) + (build-system julia-build-system) + (native-inputs + (list julia-colors + julia-offsetarrays)) + (home-page "https://github.com/johnnychen94/LazyModules.jl") + (synopsis "Lazily load Julia modules") + (description "This package provides package developers an alternative +option to delay package loading until used. If some dependency is not used, +then users don't need to pay for its latency.") + (license license:expat))) + +(define-public julia-marchingcubes + (package + (name "julia-marchingcubes") + (version "0.1.8") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaGeometry/MarchingCubes.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14k47lz33j0fiashykf2a8ayiv482k5jkgw0iircw55mdkdrnxc3")))) + (build-system julia-build-system) + (arguments + `(#:tests? #f)) ; Maybe later + (propagated-inputs + (list julia-precompiletools + julia-staticarrays)) + #; + (native-inputs + (list julia-benchmarktools + julia-geometrybasics + julia-meshes + julia-plyio)) + (home-page "https://github.com/JuliaGeometry/MarchingCubes.jl") + (synopsis "Efficient Implementation of Marching Cubes' Cases with Topological Guarantees") + (description "Julia port of Efficient Implementation of Marching Cubes' Cases with Topological Guarantees.") + (license license:expat))) + +(define-public julia-snoopprecompile + (package + (name "julia-snoopprecompile") + (version "1.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/timholy/SnoopCompile.jl") + (commit "v2.10.0"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14nnqknswjzlk786x4r7xc7898nmfk7ijfchrc09i81qi2d0mmcn")))) + (build-system julia-build-system) + (arguments + (list + #:tests? #f ; Most tests fail in the build environment. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "SnoopPrecompile")))))) + (propagated-inputs + (list julia-preferences)) + (home-page "https://timholy.github.io/SnoopCompile.jl/dev/") + (synopsis "Effectively precompile code needed by your package") + (description "SnoopPrecompile is a small dependency used to effectively +precompile code needed by your package, particularly on Julia 1.8 and higher.") + (license license:expat))) + +(define-public julia-snoopcompile + (package + (name "julia-snoopcompile") + (version "1.7.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/timholy/SnoopCompile.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1xy0y5s7q980fl0kygvjbmn74i3sjpzbizsgvis70gd2fibz80h7")))) + (build-system julia-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'adjust-test-suite + (lambda _ + ;; This module fails to load its dependencies in the 'check phase. + (substitute* "test/runtests.jl" + ((".*snoopi\\.jl.*") "")) + (substitute* "test/snoopi.jl" + (("testset \"snoopi\" begin") + "testset \"snoopi\" begin return"))))))) + (propagated-inputs + (list julia-snoopcompileanalysis + julia-snoopcompilebot + julia-snoopcompilecore)) + (native-inputs + (list + ;julia-jld + ;julia-matlang + )) + (home-page "https://timholy.github.io/SnoopCompile.jl/dev/") + (synopsis "Making packages work faster with more extensive precompilation") + (description "SnoopCompile observes the Julia compiler, causing it to +record the functions and argument types it's compiling. From these lists of +methods, you can generate lists of @code{precompile} directives that may reduce +the latency between loading packages.") + (license license:expat))) + +(define-public julia-snoopcompileanalysis + (package/inherit julia-snoopcompile + (name "julia-snoopcompileanalysis") + (arguments + (list + #:tests? #f ; No test folder + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "SnoopCompileAnalysis")))))) + (propagated-inputs + (list julia-cthulhu + julia-orderedcollections)) + (native-inputs '()) + )) + +(define-public julia-snoopcompilebot + (package/inherit julia-snoopcompile + (name "julia-snoopcompilebot") + (arguments + (list + #:tests? #f ; Tests to be run in SnoopCompile.jl + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "SnoopCompileBot")))))) + (propagated-inputs + (list julia-filepathsbase + julia-snoopcompileanalysis + julia-snoopcompilecore + julia-yaml)) + (native-inputs '()) + )) + +(define-public julia-snoopcompilecore + (package/inherit julia-snoopcompile + (name "julia-snoopcompilecore") + (arguments + (list + #:tests? #f ; No test folder + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "SnoopCompileCore")))))) + (propagated-inputs '()) + (native-inputs '()) + )) + +(define-public julia-cthulhu + (package + (name "julia-cthulhu") + (version "1.6.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaDebug/Cthulhu.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ziax1378kvyzikm4cigg4mq44r085zczqa0mkcbw5g36gcma6qi")))) + (build-system julia-build-system) + (arguments + `(#:tests? #f)) ; Skip for now + (propagated-inputs + (list julia-codetracking + julia-foldingtrees)) + (native-inputs + (list julia-staticarrays)) + (home-page "https://github.com/JuliaDebug/Cthulhu.jl") + (synopsis "Slow descent into madness") + (description "Cthulhu can help you debug type inference issues by +recursively showing the @code{code_typed} output until you find the exact point +where inference gave up, messed up, or did something unexpected. Using the +Cthulhu interface you can debug type inference problems faster.") + (license license:expat))) + +(define-public julia-codetracking + (package + (name "julia-codetracking") + (version "1.3.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/timholy/CodeTracking.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0j6mclc7y1vpib5chj3hkabz9zbmdl76jgcr7314f5kbrdqjybbi")))) + (build-system julia-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'adjust-test-suite + (lambda _ + (substitute* "test/runtests.jl" + (("test pkgfiles\\(\"Color") + "test_skip pkgfiles\(\"Color"))))))) + (home-page "https://github.com/timholy/CodeTracking.jl") + (synopsis "It's editing-time, do you know where your methods are?") + (description "CodeTracking can be thought of as an extension of Julia's +InteractiveUtils library. It provides an interface for obtaining: +@enumerate +@item the strings and expressions of method definitions +@item the method signatures at a specific file & line number +@item location information for \"dynamic\" code that might have moved since it +was first loaded +@item a list of files that comprise a particular package.@end enumerate") + (license license:expat))) + +(define-public julia-foldingtrees + (package + (name "julia-foldingtrees") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaCollections/FoldingTrees.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1q3w44z1h9j22ykdwwgl8qdm9621m0qqwz4wd2rs2aj0921pdmm4")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-abstracttrees)) + (home-page "https://github.com/JuliaCollections/FoldingTrees.jl") + (synopsis "Dynamic tree structure with control over the accessibility of node children") + (description "FoldingTrees implements a dynamic tree structure in which +some nodes may be \"folded,\" i.e., marked to avoid descent among that node's +children. It also supports interactive text menus based on folding trees.") + (license license:expat))) + +(define-public julia-jlfzf + (package + (name "julia-jlfzf") + (version "0.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Moelf/JLFzf.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0fvcx80lzj0xc4imb9h0iybj8s0cazjc1wn9h8xncih9aln25is4")))) + (build-system julia-build-system) + (arguments + '(#:tests? #f)) ; no tests + (propagated-inputs + (list julia-fzf-jll + julia-pipe)) + (home-page "https://github.com/Moelf/JLFzf.jl") + (synopsis "Julia bind to fzf fuzzy finder") + (description "Julia bind to fzf fuzzy finder.") + (license license:expat))) + +(define-public julia-pipe + (package + (name "julia-pipe") + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oxinabox/Pipe.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "01anm76nfmcajcbr2piji0rknisf5wwhimfndwaadkqkcjv7k4xn")))) + (build-system julia-build-system) + (home-page "https://github.com/oxinabox/Pipe.jl") + (synopsis "Enhancement to Julia piping syntax") + (description "This package provides an enhancement to Julia piping syntax.") + (license license:expat))) + +(define-public julia-fzf-jll + (package + (name "julia-fzf-jll") + (version "0.35.1+0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/juliabinarywrappers/fzf_jll.jl") + (commit (string-append "fzf-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0psl1lsvl6sza69g7qh8ha2ir89fibzid4ka3wzmjgh0r4yjfnw0")))) + (build-system julia-build-system) + (arguments + '(#:tests? #f ; no runtests + #:phases + (modify-phases %standard-phases + (add-after 'link-depot 'override-binary-path + (lambda* (#:key inputs #:allow-other-keys) + (map + (lambda (wrapper) + (substitute* wrapper + (("generate_wrapper_header.*") + (string-append + "generate_wrapper_header(\"fzf\", \"" + (assoc-ref inputs "fzf") "\")\n")))) + ;; There's a Julia file for each platform, override them all + (find-files "src/wrappers/" "\\.jl$"))))))) + (inputs + (list (@ (gnu packages terminals) fzf))) + (propagated-inputs + (list julia-jllwrappers)) + (home-page "https://github.com/JuliaBinaryWrappers/fzf_jll.jl") + (synopsis "Fzf library wrappers") + (description "This package provides a wrapper for fzf.") + (license license:expat))) + +(define-public julia-unicodefun + (package + (name "julia-unicodefun") + (version "0.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/SimonDanisch/UnicodeFun.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11hch4zpi8qby8pcqfvxnx88y45lxan4ind9kj2d0pgw614zkpg0")))) + (build-system julia-build-system) + (home-page "https://github.com/SimonDanisch/UnicodeFun.jl") + (synopsis "Transform text into unicode symbols") + (description "This package offers a unicode transformation library.") + (license license:expat))) + +(define-public julia-unzip + (package + (name "julia-unzip") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/bramtayl/Unzip.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0i4rkvyd8br024s0sgs3crpi6za2f51m42whkx0jd22wiwg675vb")))) + (build-system julia-build-system) + (native-inputs + (list julia-documenter)) + (home-page "https://github.com/bramtayl/Unzip.jl") + (synopsis "") + (description "") + (license license:expat))) + +;; Versions after 0.3.11 need a newer version of julia-http +(define-public julia-plutosliderserver + (package + (name "julia-plutosliderserver") + (version "0.3.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPluto/PlutoSliderServer.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1aqc836glwqqs1pd9173sbjwjns3zv197xqdqlkp2xgrkjiw2yzg")))) + (build-system julia-build-system) + (arguments + `(#:tests? #f ; Tests require network access + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-source + (lambda _ + (setenv "GITHUB_ACTIONS" "false") + ;; Rip out betterfilewatching, it depends on a rust package. + (substitute* "src/PlutoSliderServer.jl" + ((".*watch_folder.*") "")) + ;; Remove GitHubActions + (substitute* "src/PlutoSliderServer.jl" + ((".*GitHubActions.*") ""))))))) + (propagated-inputs + (list julia-abstractplutodingetjes + ;julia-betterfilewatching ; should be disabled? + julia-configurations + julia-fromfile + julia-git + ;julia-githubactions ; can be disabled + julia-http + julia-json + julia-pluto + julia-terminalloggers)) + (home-page "https://github.com/JuliaPluto/PlutoSliderServer.jl") + (synopsis "Web server to run parts of a Pluto.jl notebook") + (description "This package provides a web server to run just the +@code{@@bind} parts of a @code{Pluto.jl} notebook.") + (license license:unlicense))) + ;; TODO: unbundle javascript calls to cdn.jsdelivr.net +;; The '-src' commit needs some nodejs packages to build the frontend. (define-public julia-pluto (package (name "julia-pluto") @@ -432,15 +1337,20 @@ densities and objects associated with a density in Julia.") (method git-fetch) (uri (git-reference (url "https://github.com/fonsp/Pluto.jl") - (commit (string-append "v" version "-src")))) + ;(commit (string-append "v" version "-src")))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0h9sz4mpf3a4k0f5fblbb6j07wdhrnarxajrn0wz6zsq6w30x6yj")))) + ;(base32 "0h9sz4mpf3a4k0f5fblbb6j07wdhrnarxajrn0wz6zsq6w30x6yj")))) + (base32 "1qml5id3fi4r6n7hrqvfjwdvp3zp8xfckir3mw7vwswmkc56jzpq")))) (build-system julia-build-system) (arguments `(#:tests? #f ; Test suite tries to download the package registry. - #:phases - (modify-phases %standard-phases + ;#:phases + #;(modify-phases %standard-phases + #;(add-before 'check 'pre-check + (lambda _ + (setenv "PLUTO_TEST_ONLY_COMPILETIMES" "true"))) (add-after 'link-depot 'dont-check-for-upgrades (lambda _ (substitute* "frontend/components/welcome/Welcome.js" @@ -561,6 +1471,245 @@ native to Julia. Use it with the @code{@@bind} macro in Pluto.") (list julia-bufferedstreams julia-json)))) +(define-public julia-http-1.0 + (package + (inherit julia-http) + (name "julia-http") + (version "1.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/HTTP.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "15bqf0gv4qz3990cv1s2nj9mjqaka1pkhzymgwc19wxqvacwvwqr")))) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'install 'disable-network-tests + (lambda _ + (substitute* "test/runtests.jl" + (("\"async.jl") "# \"async.jl") + (("\"client.jl") "# \"client.jl") + (("\"websockets") "# \"websockets") + (("\"server") "# \"server")) + (substitute* "test/multipart.jl" + (("@testset \"Setting of Content-Type.*" all) + (string-append all "return\n")) + (("@testset \"Deprecation of .*" all) + (string-append all "return\n"))) + (substitute* "test/messages.jl" + (("@testset.*Read methods.*" all) + (string-append all "return\n")) + (("@testset.*Body - .*" all) + (string-append all "return\n")) + (("@testset.*Write to file.*" all) + (string-append all "return\n"))) + (substitute* "test/cookies.jl" + (("@testset.*Set-Cookie casing.*" all) + (string-append all "return\n"))) +))))) + (propagated-inputs + (list julia-codeczlib + julia-inifile + julia-loggingextras + julia-mbedtls + julia-simplebufferstream + julia-uris)) + ;; required for tests + (native-inputs + (list julia-bufferedstreams + julia-json)))) + +;; TODO: Unbundle fonts, more? +(define-public julia-makie + (package + (name "julia-makie") + (version "0.17.13") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/MakieOrg/Makie.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0s9rkfmshl3nz82zkgia6fxmfhz4v26ixam6ybqw8swlshdfijrd")))) + (build-system julia-build-system) + (propagated-inputs + (list ;julia-animations + ;julia-colorbrewer + julia-colorschemes + julia-colortypes + julia-colors + julia-contour + julia-distributions + julia-docstringextensions + julia-ffmpeg + julia-fileio + julia-fixedpointnumbers + julia-formatting + julia-freetype + julia-freetypeabstraction + julia-geometrybasics + ;julia-gridlayout + ;julia-imageio + julia-intervalsets + ;julia-isoband + ;julia-kerneldensity + julia-latexstrings + julia-makiecore + ;julia-match + ;julia-mathtexengine + julia-observables + julia-offsetarrays + ;julia-packing + julia-plotutils + ;julia-polygonops + julia-relocatablefolders + julia-showoff + ;julia-signeddistancefields + julia-statsbase + julia-statsfuns + julia-structarrays + julia-unicodefun)) + (home-page "https://docs.makie.org/stable") + (synopsis "Interactive data visualizations and plotting in Julia") + (description "Makie is a data visualization ecosystem for the Julia +programming language.") + (license license:expat))) + +(define-public julia-makiecore + (package/inherit julia-makie + (name "julia-makiecore") + (version "0.4.0") ; Same source, different version + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "MakieCore")))))) + (propagated-inputs + (list julia-observables)) + (synopsis "Backend core for Makie"))) + +(define-public julia-cairomakie + (package/inherit julia-makie + (name "julia-cairomakie") + (version "0.8.13") ; Same source, different version + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "CairoMakie")))))) + (propagated-inputs + (list ;julia-cairo + julia-colors + ;julia-fftw + julia-fileio + julia-freetype + julia-geometrybasics + julia-makie)) + (synopsis "Cairo Backend for Makie"))) + +(define-public julia-freetype + (package + (name "julia-freetype") + (version "4.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaGraphics/FreeType.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08kf1x1c7gvllds1ryv6zwy9ai85p50a509ndlcjrkiw31i612m8")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-cenum + julia-freetype2-jll)) + (home-page "https://github.com/JuliaGraphics/FreeType.jl") + (synopsis "FreeType 2 bindings for Julia") + (description "This package provides FreeType bindings for Julia.") + (license license:zlib))) + +(define-public julia-freetypeabstraction + (package + (name "julia-freetypeabstraction") + (version "0.9.9") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaGraphics/FreeTypeAbstraction.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0zqpwysvxjqh5lmsz7lysgyid7xnis23rr0xzn3fwxlncka7dbyl")) + (snippet + #~(begin + (use-modules (guix build utils)) + ;; Also find fonts in Guix environments. + (substitute* "src/findfonts.jl" + (("\"/usr/share/fonts\"," all) + (string-append all "\n " + "\"/run/current-system/profile/share/fonts\"," + "\n " + "joinpath(get(ENV, \"GUIX_ENVIRONMENT\", homedir())," + "\"share/fonts\")," + "\n " + "joinpath(get(ENV, \"GUIX_PROFILE\", homedir())," + "\"share/fonts\"),") )))))) + (build-system julia-build-system) + (arguments + (list + #:tests? #f ; Can't skip the one test as needed + #:phases + #~(modify-phases %standard-phases + (add-before 'check 'skip-findfont-test + (lambda _ + (substitute* "test/runtests.jl" + ;; Can't make this find font-dejavu + (("@test findfont\\(font") "@test_skip findfont(font"))))))) + (propagated-inputs + (list julia-colorvectorspace + julia-colors + julia-freetype + julia-geometrybasics)) + (home-page "https://github.com/JuliaGraphics/FreeTypeAbstraction.jl") + (synopsis "Julian abstraction layer over FreeType.jl") + (description + "This package provides an abstraction layer over the FreeType Julia module.") + (license license:expat))) + +;; ready to upstream +(define-public julia-observables + (package + (name "julia-observables") + (version "0.5.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaGizmos/Observables.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1l0rk60nrwwgcifqs72x76z9dv1kq6rvcbhy63kp27yqfsx6c20s")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaGizmos/Observables.jl") + (synopsis "Observable ref") + (description "This package provides the @code{Observable}s type in Julia, +which are like @code{Ref}s but you can listen to changes.") + (license license:expat))) + (define-public julia-simplebufferstream (package (name "julia-simplebufferstream") @@ -1494,7 +2643,7 @@ that still support Julia versions older than 1.6.") ("julia-fileio" ,julia-fileio) ;("julia-imagefiltering" ,julia-imagefiltering) ("julia-imagemagick" ,julia-imagemagick) - ;("julia-quartzimageio" ,julia-quartzimageio) + ;("julia-quartzimageio" ,julia-quartzimageio) ; for macOS ("julia-requires" ,julia-requires))) ;(native-inputs ; `(;("julia-gtk" ,julia-gtk) |