~ruther/guix-local

febaa885696aefade25a1c615fba8af920565e87 — Ludovic Courtès 13 years ago 10c8771
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.
2 files changed, 17 insertions(+), 4 deletions(-)

M guix/build-system/gnu.scm
M guix/build/gnu-build-system.scm
M guix/build-system/gnu.scm => guix/build-system/gnu.scm +4 -1
@@ 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

M guix/build/gnu-build-system.scm => guix/build/gnu-build-system.scm +13 -3
@@ 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)))