diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-11-25 22:32:26 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-11-25 22:37:44 +0100 |
commit | f6526eb330c6be9c20cf9486b59d7f9ea84ffda3 (patch) | |
tree | 3427d23e92b0cdb583b82b4f0fde26241b32e1d6 | |
parent | 1b366ee4f6dff35b3bef259f4a64832b580178c9 (diff) | |
download | guix-f6526eb330c6be9c20cf9486b59d7f9ea84ffda3.tar.gz |
guix build: Add '--max-jobs' option.
Suggested by Deck Pickard <deck.r.pickard@gmail.com>. * guix/scripts/build.scm (show-build-options-help): Document --max-jobs. (set-build-options-from-command-line): Pass #:max-build-jobs. (%standard-build-options): Add --max-jobs. * doc/guix.texi (Invoking guix-daemon): Document the meaning of '--max-jobs 0'. (Invoking guix build): Document --max-jobs, with a reference to "Invoking guix-daemon'.
-rw-r--r-- | doc/guix.texi | 10 | ||||
-rw-r--r-- | guix/scripts/build.scm | 15 |
2 files changed, 22 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index a88b7747fc..fe1f8a8b76 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -596,7 +596,9 @@ parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}. @item --max-jobs=@var{n} @itemx -M @var{n} Allow at most @var{n} build jobs in parallel. The default value is -@code{1}. +@code{1}. Setting it to @code{0} means that no builds will be performed +locally; instead, the daemon will offload builds (@pxref{Daemon Offload +Setup}), or simply fail. @item --debug Produce debugging output. @@ -2765,6 +2767,12 @@ may be helpful when debugging setup issues with the build daemon. Allow the use of up to @var{n} CPU cores for the build. The special value @code{0} means to use as many CPU cores as available. +@item --max-jobs=@var{n} +@itemx -M @var{n} +Allow at most @var{n} build jobs in parallel. @xref{Invoking +guix-daemon, @code{--max-jobs}}, for details about this option and the +equivalent @command{guix-daemon} option. + @end table Behind the scenes, @command{guix build} is essentially an interface to diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 7b7f419f3a..b4aa33b3a0 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -119,7 +119,9 @@ options handled by 'set-build-options-from-command-line', and listed in (display (_ " --verbosity=LEVEL use the given verbosity LEVEL")) (display (_ " - -c, --cores=N allow the use of up to N CPU cores for the build"))) + -c, --cores=N allow the use of up to N CPU cores for the build")) + (display (_ " + -M, --max-jobs=N allow at most N build jobs"))) (define (set-build-options-from-command-line store opts) "Given OPTS, an alist as returned by 'args-fold' given @@ -128,6 +130,7 @@ options handled by 'set-build-options-from-command-line', and listed in (set-build-options store #:keep-failed? (assoc-ref opts 'keep-failed?) #:build-cores (or (assoc-ref opts 'cores) 0) + #:max-build-jobs (or (assoc-ref opts 'max-jobs) 1) #:fallback? (assoc-ref opts 'fallback?) #:use-substitutes? (assoc-ref opts 'substitutes?) #:use-build-hook? (assoc-ref opts 'build-hook?) @@ -192,7 +195,15 @@ options handled by 'set-build-options-from-command-line', and listed in (let ((c (false-if-exception (string->number arg)))) (if c (apply values (alist-cons 'cores c result) rest) - (leave (_ "~a: not a number~%") arg))))))) + (leave (_ "not a number: '~a' option argument: ~a~%") + name arg))))) + (option '(#\M "max-jobs") #t #f + (lambda (opt name arg result . rest) + (let ((c (false-if-exception (string->number arg)))) + (if c + (apply values (alist-cons 'max-jobs c result) rest) + (leave (_ "not a number: '~a' option argument: ~a~%") + name arg))))))) ;;; |