build/cargo: Honor #:parallel-build? and #:parallel-tests? arguments.

* guix/build-system/cargo.scm (cargo-build): Add #:parallel-build? and
 #:parallel-tests? arguments.
(cargo-cross-build): Likewise.
* guix/build/cargo-build-system.scm (build): Honor them.
(check): Likewise.

Change-Id: Idbee7aa3a6a7cd0fc222082837390b83cc8e8c07
Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
This commit is contained in:
Maxim Cournoyer 2024-12-11 10:48:50 +09:00 committed by Efraim Flashner
parent e8ef2371e9
commit 9947252442
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
2 changed files with 29 additions and 3 deletions

View file

@ -7,6 +7,7 @@
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -96,6 +97,8 @@ (define* (cargo-build name inputs
(cargo-package-flags ''("--no-metadata" "--no-verify"))
(features ''())
(skip-build? #f)
(parallel-build? #t)
(parallel-tests? #t)
(install-source? #t)
(phases '%standard-phases)
(outputs '("out"))
@ -123,6 +126,8 @@ (define builder
#:cargo-target #$(cargo-triplet system)
#:features #$(sexp->gexp features)
#:skip-build? #$skip-build?
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:install-source? #$install-source?
#:tests? #$(and tests? (not skip-build?))
#:phases #$(if (pair? phases)
@ -153,6 +158,8 @@ (define* (cargo-cross-build name
(cargo-target (cargo-triplet (or target system)))
(features ''())
(skip-build? #f)
(parallel-build? #t)
(parallel-tests? #t)
(install-source? (not (target-mingw? target)))
(phases '%standard-phases)
(outputs '("out"))
@ -182,6 +189,8 @@ (define builder
#:cargo-target #$(cargo-triplet (or target system))
#:features #$(sexp->gexp features)
#:skip-build? #$skip-build?
#:parallel-build? #$parallel-build?
#:parallel-tests? #$parallel-tests?
#:install-source? #$install-source?
#:tests? #$(and tests? (not skip-build?))
#:phases #$(if (pair? phases)

View file

@ -5,6 +5,7 @@
;;; Copyright © 2019-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -239,19 +240,35 @@ (define* (build #:key
(or skip-build?
(apply invoke
`("cargo" "build"
,@(if parallel-build?
(list "-j" (number->string (parallel-job-count)))
(list "-j" "1"))
,@(if (null? features)
'()
`("--features" ,(string-join features)))
,@cargo-build-flags))))
(define* (check #:key
parallel-build?
parallel-tests?
tests?
(cargo-test-flags '("--release"))
#:allow-other-keys)
"Run tests for a given Cargo package."
(if tests?
(apply invoke "cargo" "test" cargo-test-flags)
#t))
(when tests?
(apply invoke
`("cargo" "test"
,@(if parallel-build?
(list "-j" (number->string (parallel-job-count)))
(list "-j" "1"))
,@cargo-test-flags
,@(if (member "--" cargo-test-flags)
'()
'("--"))
,@(if parallel-tests?
(list "--test-threads"
(number->string (parallel-job-count)))
(list "--test-threads" "1"))))))
(define* (package #:key
source