From 8274f0d4f5ba8b9b8976dd21057c7d04d09a2e91 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 15 Jun 2023 15:24:12 +0300 Subject: Update pluto service and dependant julia packages --- gn/packages/julia.scm | 676 +++++++++++++++++++++++++++++++++++++++++++++++--- gn/services/pluto.scm | 14 +- 2 files changed, 648 insertions(+), 42 deletions(-) diff --git a/gn/packages/julia.scm b/gn/packages/julia.scm index 36d9e31..31cc29c 100644 --- a/gn/packages/julia.scm +++ b/gn/packages/julia.scm @@ -60,8 +60,7 @@ "setup.py" "runpluto.sh" "notebooks" - "Project.toml" - "Manifest.toml"))))) + "Project.toml"))))) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -70,6 +69,31 @@ `("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 + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (with-output-to-file (string-append out "/runpluto") + (lambda () + (format #t "#!~a --no-auto-compile +!# +(setenv \"JULIA_LOAD_PATH\" \"~a\") +(setenv \"PATH\" \"~a\") +(zero? (system* + \"~a\" + \"--project=/home/jovyan\" + \"--optimize=0\" + \"-e\" \"import Pluto; + Pluto.run( + host=\\\"0.0.0.0\\\", + port=4343, + launch_browser=false, + require_secret_for_open_links=false; + require_secret_for_access=false)\"))\n" + (search-input-file inputs "/bin/guile") + (getenv "JULIA_LOAD_PATH") + (dirname (search-input-file inputs "/bin/yes")) + (search-input-file inputs "/bin/julia")))) + (chmod (string-append out "/runpluto") #o555)))) (replace 'precompile (lambda _ (invoke "julia" "-e" "\"import Pkg; Pkg.instantiate(); Pkg.status(); Pkg.precompile()\"")))))) @@ -80,17 +104,15 @@ ,(@ (gn packages python) python-jupyter-server-proxy-1)))) (inputs - `(;("julia-cairomakie" ,julia-cairomakie) ; ~0.8.13 - ("julia-distributions" ,julia-distributions) ; ~0.25.76 - ("julia-latexstrings" ,julia-latexstrings) ; ~1.3.0 - ("julia-optim" ,julia-optim) ; ~1.7.2 - ("julia-plots" ,julia-plots) ; ~1.35.3 - ("julia-pluto" ,julia-pluto) ; ~0.19.11 - ("julia-plutoui" ,julia-plutoui) ; ~0.7.46 - ("julia-prettytables" ,julia-prettytables) ; ~2.1.0 - ("julia-quadgk" ,julia-quadgk) ; ~2.5.0 - ;("julia-roots" ,julia-roots) ; ~2.0.3 - ("guile" ,(@ (gnu packages guile) guile-3.0)))) ; for wrap-script + (list julia-distributions + ;julia-interactiveutils ; stdlib + julia-latexstrings + ;julia-markdown ; stdlib + julia-optim + julia-plots + julia-pluto + julia-plutoui + (@ (gnu packages guile) guile-3.0))) ; for wrap-script (home-page "https://github.com/sens/visuals") (synopsis "Visualizations using Pluto.jl notebooks") (description "Visualizations using Pluto.jl notebooks.") @@ -404,40 +426,40 @@ densities and objects associated with a density in Julia.") (define-public julia-pluto (package (name "julia-pluto") - (version "0.15.1") + (version "0.19.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/fonsp/Pluto.jl") - (commit (string-append "v" version)))) + (commit (string-append "v" version "-src")))) (file-name (git-file-name name version)) (sha256 - (base32 "1jsvqi33rsj8izm9pb0r4gjzb5xd01dxri8xp95h84kd0rdliirr")))) + (base32 "0h9sz4mpf3a4k0f5fblbb6j07wdhrnarxajrn0wz6zsq6w30x6yj")))) (build-system julia-build-system) (arguments - `(#:tests? #f ; Test suite fails to load HTTP.jl. + `(#:tests? #f ; Test suite tries to download the package registry. #:phases (modify-phases %standard-phases (add-after 'link-depot 'dont-check-for-upgrades (lambda _ - (substitute* "frontend/components/Welcome.js" - (("local_index !== -1") "false")))) - (add-after 'link-depot 'skip-network-tests - (lambda _ - (substitute* "test/runtests.jl" - ;; Attempts to update the package registry. - ((".*Basic.jl.*") ""))))))) + (substitute* "frontend/components/welcome/Welcome.js" + ((".*new_update_message.*") ""))))))) (propagated-inputs - `(("julia-configurations" ,julia-configurations) - ("julia-fuzzycompletions" ,julia-fuzzycompletions) - ("julia-http" ,julia-http) - ("julia-msgpack" ,julia-msgpack) - ("julia-tableiointerface" ,julia-tableiointerface) - ("julia-tables" ,julia-tables))) + (list julia-configurations + julia-fuzzycompletions + julia-http + julia-hypertextliteral + julia-mimes + julia-msgpack + julia-precompilesignatures + julia-relocatablefolders + julia-tables + julia-uris)) (native-inputs - `(("julia-dataframes" ,julia-dataframes) - ("julia-offsetarrays" ,julia-offsetarrays))) + (list julia-dataframes + julia-offsetarrays + julia-timeroutputs)) (home-page "https://github.com/fonsp/Pluto.jl") (synopsis "Simple reactive notebooks for Julia") (description "A Pluto notebook is made up of small blocks of Julia code @@ -447,11 +469,10 @@ placed in arbitrary order - intelligent syntax analysis figures out the dependencies between them and takes care of execution.") (license license:expat))) -;; ready to upstream, wait on Pluto.jl? (define-public julia-plutoui (package (name "julia-plutoui") - (version "0.7.9") + (version "0.7.51") (source (origin (method git-fetch) @@ -460,17 +481,594 @@ dependencies between them and takes care of execution.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "0p159b4m0nxbz36ll5kf082vb806n2f26ma145pbhp749aldzplp")))) + (base32 "0hqaa8wx7mia3krdwhj2yf8aa4a8h4r09j16dxn7nyc0zcz8hgb2")))) (build-system julia-build-system) (propagated-inputs - `(("julia-json" ,julia-json) - ("julia-reexport" ,julia-reexport) - ("julia-suppressor" ,julia-suppressor))) + (list julia-abstractplutodingetjes + julia-colortypes + julia-fixedpointnumbers + julia-hyperscript + julia-hypertextliteral + julia-iocapture + julia-json + julia-mimes + julia-reexport + julia-uris)) (home-page "https://github.com/fonsp/PlutoUI.jl") (synopsis "Helper package for Julia Pluto") (description "This package helps to make @code{html\"\"} a bit more native to Julia. Use it with the @code{@@bind} macro in Pluto.") + (license license:unlicense))) + +(define-public julia-http-1.5 + (package + (inherit julia-http) + (name "julia-http") + (version "1.5.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 "0qcfixsq65g8hdimygam7cd8nvcz6w7nzkkjk98mvf65dcby4593")))) + (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")) + #;(substitute* "test/aws4.jl" + (("@testset.*HTTP.request with AWS authentication.*" all) + (string-append all "return\n"))) + #;(substitute* "test/insert_layers.jl" + (("@testset.*Inserted final layer runs handler.*" all) + (string-append all "return\n"))) + #;(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/websockets.jl" + (("@testset.*External Host.*" 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"))) +#t))))) + (propagated-inputs + (list julia-codeczlib + julia-inifile + julia-loggingextras + julia-mbedtls + julia-openssl + julia-simplebufferstream + julia-uris)) + ;; required for tests + (native-inputs + (list julia-bufferedstreams + julia-json)))) + +(define-public julia-simplebufferstream + (package + (name "julia-simplebufferstream") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPackaging/SimpleBufferStream.jl") + ;; First commit after 1.1.0 with a license + (commit "80c9854d5d9ea921da6f619624989fa30e83b8be"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05c4d73ki4cp38g66ljxwbl2d0dni3w05r8xsd6g1v63x2rqqbgn")))) + (build-system julia-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'link-depot 'adjust-tests + (lambda _ + (substitute* "test/runtests.jl" + ;; Tests fail when build machine is too *fast*. + (("0\\.01") "0.001") + ;; Don't create circular dependencies with http + (("using HTTP.*") "") + (("@testset.*HTTP.jl.*" all) + (string-append all "return\n")))))))) + (home-page "https://github.com/JuliaPackaging/SimpleBufferStream.jl") + (synopsis "What Base.BufferStream should be") + (description "This is what I wish Base.BufferStream was.") + (license license:expat))) + +(define-public julia-openssl + (package + (name "julia-openssl") + (version "1.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/OpenSSL.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1s2h4qh9y3alhkf18p4pjqp77mvsb47qagmk68pq0wsx8r3hzhzx")))) + (build-system julia-build-system) + (arguments + (list + #:phases + #~(modify-phases %standard-phases + (add-before 'install 'disable-network-tests + (lambda _ + (substitute* "test/runtests.jl" + ;; No /etc/ssl/certs/ca-certificates.crt in the build environment. + (("@testset.*(ReadPEMCert|X509Certificate|X509Store).*" all) + (string-append all "return\n")) + ;; No network connection + (("@testset.*(HttpsConnect|ClosedStream|NoCloseStream).*" all) + (string-append all "return\n")) + ;; undefined symbol. + ;; XXX: THIS BREAKS THE PACKAGE! + (("@testset.*ErrorTaskTLS.*" all) + (string-append all "return\n")))))))) + (propagated-inputs + (list julia-bitflags + julia-openssl-jll)) + (home-page "https://github.com/JuliaWeb/OpenSSL.jl") + (synopsis "Openssl Julia bindings") + (description "This package provides Openssl Julia bindings.") + (license license:expat))) + +#;(define-public julia-openssl-jll + (package + (name "julia-openssl-jll") + (version "3.0.8+0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl") + (commit (string-append "OpenSSL-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1d9kcx7a3yv3rgkggq7h436sfjafr66pq8d0lmlcjxdpl46hx3j7")))) + (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 + (("lib64") "lib") + (("generate_wrapper_header.*") + (string-append + "generate_wrapper_header(\"OpenSSL\", \"" + (assoc-ref inputs "openssl") "\")\n")))) + ;; There's a Julia file for each platform, override them all + (find-files "src/wrappers/" "\\.jl$"))))))) + (inputs + (list (@ (gnu packages tls) openssl))) + (propagated-inputs + (list julia-jllwrappers)) + (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl") + (synopsis "Openssl library wrappers") + (description "This package provides a wrapper for openssl.") + (license license:expat))) + +#;(define-public julia-openssl-jll-1.1 + (package + (name "julia-openssl-jll") + (version "1.1.21+0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl") + (commit (string-append "OpenSSL-v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "05wgsvy0iviffkcq4w1dg8gaafyxknnk26c1gpcgma5yhfia8yfs")))) + (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(\"OpenSSL\", \"" + (assoc-ref inputs "openssl") "\")\n")))) + ;; There's a Julia file for each platform, override them all + (find-files "src/wrappers/" "\\.jl$"))))))) + (inputs + (list (@ (gnu packages tls) openssl-1.1))) + (propagated-inputs + (list julia-jllwrappers)) + (home-page "https://github.com/JuliaBinaryWrappers/OpenSSL_jll.jl") + (synopsis "Openssl library wrappers") + (description "This package provides a wrapper for openssl.") + (license license:expat))) + +(define-public julia-bitflags + (package + (name "julia-bitflags") + (version "0.1.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jmert/BitFlags.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1wphfpwqm7bsff68d6h9yhhxrh1lq2shyl0afbzp0h5czf6qi2xr")))) + (build-system julia-build-system) + (home-page "https://github.com/jmert/BitFlags.jl") + (synopsis "Enum-like type for bit flag option values") + (description "@code{BitFlag.jl} provides an @code{Enum}-like type for bit +flag option values.") + (license license:expat))) + +(define-public julia-relocatablefolders + (package + (name "julia-relocatablefolders") + (version "0.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPackaging/RelocatableFolders.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "116f98y2w5cqkv2fvddmv54422cpby6d7q1dndgqh2rdlkpb44iw")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-scratch)) + (home-page "https://github.com/JuliaPackaging/RelocatableFolders.jl") + (synopsis "Reference packages in their project directory") + (description "An alternative to the @code{@@__DIR__} macro. Packages that +wish to reference paths in their project directory run into issues with +relocatability when used in conjunction with @code{PackageCompiler}.") + (license license:expat))) + +(define-public julia-scratch + (package + (name "julia-scratch") + (version "1.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPackaging/Scratch.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0s7dmqsskq5vy7sk6pxng5vrznrn6msg7xf8a9kj3a03b617pgap")))) + (build-system julia-build-system) + (arguments + (list #:tests? #f)) ; Tries to download the Julia registry. + (home-page "https://github.com/JuliaPackaging/Scratch.jl") + (synopsis "Scratch spaces for all your persistent mutable data needs") + (description "This repository implements the scratch spaces API for +package-specific mutable containers of data. These spaces can contain +datasets, text, binaries, or any other kind of data that would be convenient to +store in a location specific to your package. As compared to Artifacts, these +containers of data are mutable. Because the scratch space location on disk is +not very user-friendly, scratch spaces should, in general, not be used for a +storing files that the user must interact with through a file browser. In that +event, packages should simply write out to disk at a location given by the +user. Scratch spaces are designed for data caches that are completely managed +by a package and should be removed when the package itself is uninstalled.") + (license license:expat))) + +(define-public julia-hypertextliteral + (package + (name "julia-hypertextliteral") + (version "0.9.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPluto/HypertextLiteral.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "06nzgxrl1aac9bqb37l2lak2aicp9h7fd1ijcva9pq80z0d74a8a")))) + (build-system julia-build-system) + (arguments (list #:tests? #f)) ; Disable tests until all inputs are pacakged. + (propagated-inputs + (list julia-tricks)) + (native-inputs + (list julia-documenter + ;julia-faker + julia-hyperscript + ;julia-narrativetest + )) + (home-page "https://juliapluto.github.io/HypertextLiteral.jl/stable/") + (synopsis "Julia library for the string interpolation of HTML and SVG") + (description "HypertextLiteral is a Julia package for generating HTML, SVG, +and other SGML tagged content. It works similar to Julia string interpolation, +only that it tracks hypertext escaping needs and provides handy conversions +dependent upon context.") + (license license:expat))) + +;; This can be removed with julia-1.10 +(define-public julia-tricks + (package + (name "julia-tricks") + (version "0.1.7") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oxinabox/Tricks.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0870hiqpl14wpr2v16wl6fw89r469yjrchv6gn4pfw2irw3nkjip")))) + (build-system julia-build-system) + (home-page "https://github.com/oxinabox/Tricks.jl") + (synopsis "Cunning tricks though the julia compiler internals") + (description "Tricks.jl is an particularly cunning package that does tricks +with the Julia edge system.") + (license license:expat))) + +(define-public julia-registryinstances + (package + (name "julia-registryinstances") + (version "0.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/GunnarFarneback/RegistryInstances.jl") + (commit "2796d959014475bc19e2dfa174179cdf02642d28"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09926dy2s4wcml6s2hrbq1j1r1456d61fvk5fma4sbr9qsvpyyd0")))) + (build-system julia-build-system) + (arguments + (list #:tests? #f)) ; TODO: Got exception outside of a @test + (propagated-inputs + (list julia-lazilyinitializedfields)) + (home-page "https://github.com/GunnarFarneback/RegistryInstances.jl") + (synopsis "Access the information in installed Julia registries") + (description "Julia's package manager stores package metadata in registries, +which consist of TOML files in a directory structure.") + (license license:expat))) + +(define-public julia-lazilyinitializedfields + (package + (name "julia-lazilyinitializedfields") + (version "1.2.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KristofferC/LazilyInitializedFields.jl") + (commit "53ed8cbe78b2048105a0e0b355294e7f024e3d14"))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1jwpka27d873cyn0vxrg7h7ns7fmlqlyx5h38cw6zvfbdhkrmi09")))) + (build-system julia-build-system) + (native-inputs + (list julia-documenter)) + (home-page "https://github.com/KristofferC/LazilyInitializedFields.jl") + (synopsis "Handle lazily initialized fields") + (description "A package for handling lazily initialized fields.") + (license license:expat))) + +(define-public julia-mimes + (package + (name "julia-mimes") + (version "0.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/MIMEs.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0vgc2q2mgbrm16px7cbqsrga9l99djlb1ayg5k1djb0mbnprjajk")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaWeb/MIMEs.jl") + (synopsis "MIME information: filetype, encoding, gzip") + (description "A small package to transform between file extensions and MIME +types, with bonus features.") + (license license:expat))) + +(define-public julia-loggingextras + (package + (name "julia-loggingextras") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLogging/LoggingExtras.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mc0bbr2wsa809q74hg4npdw2xcni4xl40zz50i6djwnxq88yl07")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaLogging/LoggingExtras.jl") + (synopsis "Composable Loggers for the Julia Logging StdLib") + (description "LoggingExtras is designs around allowing you to build +arbitrarily complicated systems for \"log plumbing\". That is to say basically +routing logged information to different places. It is built around the idea of +simple parts which are composed together, to allow for powerful and flexible +definition of your logging system.") + (license license:expat))) + +(define-public julia-precompilesignatures + (package + (name "julia-precompilesignatures") + (version "3.0.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rikhuijzer/PrecompileSignatures.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11rjdx8n3q10iis7ryzbvlvgdpi6kd2h53qp7lac02yx6rsgsfx1")))) + (build-system julia-build-system) + (arguments + (list #:tests? #f)) ; cycle with Pluto.jl. + ;(native-inputs + ; (list julia-pluto)) + (home-page "https://github.com/rikhuijzer/PrecompileSignatures.jl") + (synopsis "Generate precompile directives by reading method signatures") + (description "This package reads all method signatures in a package and +generates precompile directives for any concrete signature that it can find.") + (license license:expat))) + +(define-public julia-precompiletools + (package + (name "julia-precompiletools") + (version "1.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLang/PrecompileTools.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "124qzflwnn34d8x8vz3cmj2m4a55mg5qf8i8jdcwyyrnag3si7zr")))) + (build-system julia-build-system) + (arguments + (list #:tests? #f)) ; Tries to download the Julia registry. + (propagated-inputs + (list julia-preferences)) + (home-page "https://github.com/JuliaLang/PrecompileTools.jl") + (synopsis "Reduce time-to-first-execution of Julia code") + (description "PrecompileTools allows you to reduce the latency of the first +execution of Julia code. It is applicable for package developers and for +\"ordinary users\" in their personal workflows.") + (license license:expat))) + +(define-public julia-timeroutputs + (package + (name "julia-timeroutputs") + (version "0.5.23") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/KristofferC/TimerOutputs.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "031m7d837cw4c7iz4arrm1a1ppqihhj5jsldvm7z1bc72jxgfrcv")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-exprtools)) + (home-page "https://github.com/KristofferC/TimerOutputs.jl") + (synopsis "Formatted output of timed sections in Julia") + (description "TimerOutputs is a small Julia package that is used to generate +formatted output from timings made in different sections of a program. It's +main functionality is the @code{@@timeit} macro, similar to the @code{@@time} +macro in Base except one also assigns a label to the code section being timed. +Multiple calls to code sections with the same label (and in the same \"scope\") +will accumulate the data for that label. After the program has executed, it is +possible to print a nicely formatted table presenting how much time, +allocations and number of calls were made in each section. The output can be +customized as to only show the things you are interested in.") + (license license:expat))) + +(define-public julia-memoize + (package + (name "julia-memoize") + (version "0.4.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaCollections/Memoize.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0mfavihgdmh6zzjx5lzbigmgsa50pa9ik9gk2gq9wam26prkmkba")))) + (build-system julia-build-system) + (propagated-inputs + (list julia-macrotools)) + (home-page "https://github.com/JuliaCollections/Memoize.jl") + (synopsis "Memoize macro for Julia") + (description "Easy memoization for Julia.") + (license license:bsd-0))) + +(define-public julia-abstractplutodingetjes + (package + (name "julia-abstractplutodingetjes") + (version "1.1.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaPluto/AbstractPlutoDingetjes.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "03grnv26n3qdadb2awv3d0rs655l5hhmh7h43v949za9aaaz89j3")))) + (build-system julia-build-system) + (arguments + (list #:tests? #f)) ; No tests for this package. + (home-page "https://docs.juliahub.com/AbstractPlutoDingetjes/UHbnu/") + (synopsis "Abstract package for creating widgets in Pluto.jl") + (description "An abstract package to be implemented by packages/people who +create widgets (or other dingetjes) for Pluto.") + (license license:unlicense))) + +(define-public julia-hyperscript + (package + (name "julia-hyperscript") + (version "0.0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaWeb/Hyperscript.jl") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0flap3a9p6fr768kjfk1lkyfgjqcyhzvzl7in7gjszfy04pqj55w")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaWeb/Hyperscript.jl") + (synopsis "Lightweight DOM representation for Julia") + (description "Hyperscript is a package for working with HTML, SVG, and CSS +in Julia. When using this library you automatically get: +@enumerate +@item A concise DSL for writing HTML, SVG, and CSS. +@item Flexible ways to combine DOM pieces together into larger components. +@item Safe and automatic HTML-escaping. +@item Lightweight and optional support for scoped CSS. +@item Lightweight and optional support for CSS unit arithmetic. +@end enumerate") (license license:expat))) ;; ready to upstream diff --git a/gn/services/pluto.scm b/gn/services/pluto.scm index d137314..720b769 100644 --- a/gn/services/pluto.scm +++ b/gn/services/pluto.scm @@ -44,16 +44,20 @@ (modules '((gnu build shepherd) (gnu system file-systems))) (start #~(make-forkexec-constructor/container - (list #$(file-append package "/runpluto.sh") #$port) + ;(list #$(file-append package "/runpluto.sh") #$port) + (list #$(file-append package "/runpluto")) #:log-file "/var/log/pluto.log" #:user "julia" #:group "julia" - ;; This needs to exist. Unclear why. + ;; This prevents the service from using /root as $HOME. #:environment-variables '() #:mappings (list (file-system-mapping (source "/home/jovyan") (target source) - (writable? #t))))) + (writable? #t)) + (file-system-mapping + (source "/etc/ssl") + (target source))))) (stop #~(make-kill-destructor)))))))) (define pluto-service-type @@ -86,6 +90,10 @@ ;; No firmware for VMs. (firmware '()) (packages (list nss-certs)) + ;; For testing + ;(packages (cons* nss-certs %base-packages)) + + (setuid-programs '()) (services (list (service pluto-service-type (pluto-configuration -- cgit v1.2.3