~ruther/guix-local

905b090582e5c03ef4fb183fda0a1ababf5cb284 — zimoun 4 years ago 6312c68
build: julia-build-system: Add support for parallel tests.

The tests are defined by the script 'test/runtests.jl' from packages and the
parallelism depends on the implementation of this script.  Therefore, 'julia'
is launched using local worker processes accordingly with 'parallel?'.

* guix/build/julia-build-system.scm (check): Set the JULIA_CPU_THREADS
environment variable and invoke julia with the '--procs' option.
* guix/build-system/julia.scm (julia-build)[parallel-tests?]: New argument.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2 files changed, 11 insertions(+), 1 deletions(-)

M guix/build-system/julia.scm
M guix/build/julia-build-system.scm
M guix/build-system/julia.scm => guix/build-system/julia.scm +3 -0
@@ 2,6 2,7 @@
;;; Copyright © 2019 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 79,6 80,7 @@
(define* (julia-build name inputs
                      #:key source
                      (tests? #t)
                      (parallel-tests? #t)
                      (phases '%standard-phases)
                      (outputs '("out"))
                      (search-paths '())


@@ 98,6 100,7 @@
                       #:source #+source
                       #:system #$system
                       #:tests? #$tests?
                       #:parallel-tests? #$parallel-tests?
                       #:phases #$phases
                       #:outputs #$(outputs->gexp outputs)
                       #:search-paths '#$(sexp->gexp

M guix/build/julia-build-system.scm => guix/build/julia-build-system.scm +8 -1
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2021 Jean-Baptiste Volatier <jbv@pm.me>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 103,11 104,15 @@ Project.toml)."
  #t)

(define* (check #:key tests? source inputs outputs julia-package-name
                parallel-tests?
                #:allow-other-keys)
  (when tests?
    (let* ((out (assoc-ref outputs "out"))
           (package (or julia-package-name (project.toml->name "Project.toml")))
           (builddir (string-append out "/share/julia/")))
           (builddir (string-append out "/share/julia/"))
           (jobs (if parallel-tests?
                     (number->string (parallel-job-count))
                     "1")))
      ;; With a patch, SOURCE_DATE_EPOCH is honored
      (setenv "SOURCE_DATE_EPOCH" "1")
      (setenv "JULIA_DEPOT_PATH" builddir)


@@ 115,8 120,10 @@ Project.toml)."
              (string-append builddir "loadpath/" ":"
                             (or (getenv "JULIA_LOAD_PATH")
                                 "")))
      (setenv "JULIA_CPU_THREADS" jobs)
      (setenv "HOME" "/tmp")
      (invoke "julia" "--depwarn=yes"
              (string-append "--procs=" jobs)
              (string-append builddir "loadpath/"
                             package "/test/runtests.jl"))))
  #t)