build-system/julia: Enable tests.

* guix/build-system/julia.scm (julia-build): Set tests? default to #t.
* guix/build/julia-build-system.scm (check): Respect tests? and fix julia
  invocation.
  (%standard-phases): Add check phase after install.
* doc/guix.texi (julia-build-system): Update accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
nixo 2021-01-18 23:56:54 +01:00 committed by Ludovic Courtès
parent 0f27a97c69
commit a23b384f3f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
3 changed files with 19 additions and 12 deletions

View file

@ -7616,7 +7616,7 @@ implements the build procedure used by @uref{https://julialang.org/,
julia} packages, which essentially is similar to running @samp{julia -e
'using Pkg; Pkg.add(package)'} in an environment where
@env{JULIA_LOAD_PATH} contains the paths to all Julia package inputs.
Tests are run with @code{Pkg.test}.
Tests are run by calling @code{/test/runtests.jl}.
Julia packages require the source @code{file-name} to be the real name of the
package, correctly capitalized.

View file

@ -75,7 +75,7 @@ (define private-keywords
(define* (julia-build store name inputs
#:key source
(tests? #f)
(tests? #t)
(phases '(@ (guix build julia-build-system)
%standard-phases))
(outputs '("out"))

View file

@ -69,15 +69,22 @@ (define* (precompile #:key source inputs outputs #:allow-other-keys)
(string-append "pushfirst!(DEPOT_PATH, pop!(DEPOT_PATH)); using " package)))
#t)
(define* (check #:key source inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(package (strip-store-file-name source))
(builddir (string-append out "/share/julia/")))
;; With a patch, SOURCE_DATE_EPOCH is honored
(setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
(setenv "JULIA_LOAD_PATH" (string-append builddir "packages/"))
(invoke-julia (string-append "using Pkg;Pkg.test(\"" package "\")")))
(define* (check #:key tests? source inputs outputs #:allow-other-keys)
(when tests?
(let* ((out (assoc-ref outputs "out"))
(package (strip-store-file-name source))
(builddir (string-append out "/share/julia/")))
;; With a patch, SOURCE_DATE_EPOCH is honored
(setenv "SOURCE_DATE_EPOCH" "1")
(setenv "JULIA_DEPOT_PATH" builddir)
(setenv "JULIA_LOAD_PATH"
(string-append builddir "packages/" ":"
(or (getenv "JULIA_LOAD_PATH")
"")))
(setenv "HOME" "/tmp")
(invoke "julia"
(string-append builddir "packages/"
package "/test/runtests.jl"))))
#t)
(define (julia-create-package-toml outputs source
@ -112,7 +119,7 @@ (define %standard-phases
(delete 'check) ; tests must be run after installation
(replace 'install install)
(add-after 'install 'precompile precompile)
;; (add-after 'install 'check check)
(add-after 'install 'check check)
;; TODO: In the future we could add a "system-image-generation" phase
;; where we use PackageCompiler.jl to speed up package loading times
(delete 'configure)