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'.
This commit is contained in:
		
							parent
							
								
									1b366ee4f6
								
							
						
					
					
						commit
						f6526eb330
					
				
					 2 changed files with 22 additions and 3 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -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))))))) | ||||
| 
 | ||||
|  | ||||
| ;;; | ||||
|  |  | |||
		Reference in a new issue