diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-07-07 16:49:23 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-07-07 16:49:23 +0200 |
commit | febaa885696aefade25a1c615fba8af920565e87 (patch) | |
tree | c660d4192de0499f055145e24e01df93e2072544 | |
parent | 10c87717bd70c9d7e47a13753dc2756a97f00e35 (diff) | |
download | guix-febaa885696aefade25a1c615fba8af920565e87.tar.gz guix-febaa885696aefade25a1c615fba8af920565e87.zip |
build-system/gnu: Support parallel builds and tests.
* guix/build/gnu-build-system.scm (build): Add `parallel-build?'
parameter; honor it and $NIX_BUILD_CORES.
(check): Add `parallel-tests?' parameter; likewise.
* guix/build-system/gnu.scm (gnu-build): Add `parallel-build?' and
`parallel-tests?' parameters.
[builder]: Inherit them.
-rw-r--r-- | guix/build-system/gnu.scm | 5 | ||||
-rw-r--r-- | guix/build/gnu-build-system.scm | 16 |
2 files changed, 17 insertions, 4 deletions
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index 6876342b45..20b7fbe897 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -45,6 +45,7 @@ #:key (outputs '("out")) (configure-flags ''()) (make-flags ''()) (patches ''()) (patch-flags ''("--batch" "-p1")) + (parallel-build? #t) (parallel-tests? #t) (phases '%standard-phases) (system (%current-system)) (modules '((guix build gnu-build-system) @@ -63,7 +64,9 @@ input derivation INPUTS, using the usual procedure of the GNU Build System." #:patch-flags ,patch-flags #:phases ,phases #:configure-flags ,configure-flags - #:make-flags ,make-flags))) + #:make-flags ,make-flags + #:parallel-build? ,parallel-build? + #:parallel-tests? ,parallel-tests?))) (build-expression->derivation store name system builder diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 9035280577..d59b9408a8 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -87,13 +87,23 @@ (format #t "configure flags: ~s~%" flags) (zero? (apply system* "./configure" flags)))) -(define* (build #:key (make-flags '()) #:allow-other-keys) - (zero? (apply system* "make" make-flags))) +(define* (build #:key (make-flags '()) (parallel-build? #t) + #:allow-other-keys) + (zero? (apply system* "make" + `(,@(if parallel-build? + `("-j" ,(getenv "NIX_BUILD_CORES")) + '()) + ,@make-flags)))) (define* (check #:key (make-flags '()) (tests? #t) (test-target "check") + (parallel-tests? #t) #:allow-other-keys) (if tests? - (zero? (apply system* "make" test-target make-flags)) + (zero? (apply system* "make" test-target + `(,@(if parallel-tests? + `("-j" ,(getenv "NIX_BUILD_CORES")) + '()) + ,@make-flags))) (begin (format #t "test suite not run~%") #t))) |