guix build: Add '--substitute-urls' client option.

* guix/scripts/build.scm (%standard-build-options,
  show-build-options-help): Add --substitute-urls=URLS.
  (set-build-options-from-command-line): Honor it.
* guix/store.scm (%default-substitute-urls): Make public.
* doc/guix.texi (Substitutes): Add xref to the client --substitute-urls
  option.
  (Invoking guix build): Document it.
  (Invoking guix-daemon): Add 'daemon-substitute-urls' anchor.
This commit is contained in:
Ludovic Courtès 2015-07-13 16:07:59 +02:00
parent 24f5aaaf24
commit f8a8e0fe16
3 changed files with 30 additions and 3 deletions

View File

@ -760,6 +760,7 @@ explicitly enable substitution @i{via} the @code{set-build-options}
remote procedure call (@pxref{The Store}). remote procedure call (@pxref{The Store}).
@item --substitute-urls=@var{urls} @item --substitute-urls=@var{urls}
@anchor{daemon-substitute-urls}
Consider @var{urls} the default whitespace-separated list of substitute Consider @var{urls} the default whitespace-separated list of substitute
source URLs. When this option is omitted, @indicateurl{http://hydra.gnu.org} source URLs. When this option is omitted, @indicateurl{http://hydra.gnu.org}
is used. is used.
@ -1434,9 +1435,12 @@ also result from derivation builds, can be available as substitutes.
The @code{hydra.gnu.org} server is a front-end to a build farm that The @code{hydra.gnu.org} server is a front-end to a build farm that
builds packages from the GNU distribution continuously for some builds packages from the GNU distribution continuously for some
architectures, and makes them available as substitutes. This is the architectures, and makes them available as substitutes. This is the
default source of substitutes; it can be overridden by passing default source of substitutes; it can be overridden by passing the
@command{guix-daemon} the @code{--substitute-urls} option @option{--substitute-urls} option either to @command{guix-daemon}
(@pxref{Invoking guix-daemon}). (@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}})
or to client tools such as @command{guix package}
(@pxref{client-substitute-urls,, client @option{--substitute-urls}
option}).
@cindex security @cindex security
@cindex digital signatures @cindex digital signatures
@ -3584,6 +3588,16 @@ Do not build the derivations.
When substituting a pre-built binary fails, fall back to building When substituting a pre-built binary fails, fall back to building
packages locally. packages locally.
@item --substitute-urls=@var{urls}
@anchor{client-substitute-urls}
Consider @var{urls} the whitespace-separated list of substitute source
URLs, overriding the default list of URLs of @command{guix-daemon}
(@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs}).
This means that substitutes may be downloaded from @var{urls}, provided
they are signed by a key authorized by the system administrator
(@pxref{Substitutes}).
@item --no-substitutes @item --no-substitutes
Do not use substitutes for build products. That is, always build things Do not use substitutes for build products. That is, always build things
locally instead of allowing downloads of pre-built binaries locally instead of allowing downloads of pre-built binaries

View File

@ -117,6 +117,9 @@ options handled by 'set-build-options-from-command-line', and listed in
--fallback fall back to building when the substituter fails")) --fallback fall back to building when the substituter fails"))
(display (_ " (display (_ "
--no-substitutes build instead of resorting to pre-built substitutes")) --no-substitutes build instead of resorting to pre-built substitutes"))
(display (_ "
--substitute-urls=URLS
fetch substitute from URLS if they are authorized"))
(display (_ " (display (_ "
--no-build-hook do not attempt to offload builds via the build hook")) --no-build-hook do not attempt to offload builds via the build hook"))
(display (_ " (display (_ "
@ -141,6 +144,8 @@ options handled by 'set-build-options-from-command-line', and listed in
#:max-build-jobs (or (assoc-ref opts 'max-jobs) 1) #:max-build-jobs (or (assoc-ref opts 'max-jobs) 1)
#:fallback? (assoc-ref opts 'fallback?) #:fallback? (assoc-ref opts 'fallback?)
#:use-substitutes? (assoc-ref opts 'substitutes?) #:use-substitutes? (assoc-ref opts 'substitutes?)
#:substitute-urls (or (assoc-ref opts 'substitute-urls)
%default-substitute-urls)
#:use-build-hook? (assoc-ref opts 'build-hook?) #:use-build-hook? (assoc-ref opts 'build-hook?)
#:max-silent-time (assoc-ref opts 'max-silent-time) #:max-silent-time (assoc-ref opts 'max-silent-time)
#:timeout (assoc-ref opts 'timeout) #:timeout (assoc-ref opts 'timeout)
@ -177,6 +182,13 @@ options handled by 'set-build-options-from-command-line', and listed in
(alist-cons 'substitutes? #f (alist-cons 'substitutes? #f
(alist-delete 'substitutes? result)) (alist-delete 'substitutes? result))
rest))) rest)))
(option '("substitute-urls") #t #f
(lambda (opt name arg result . rest)
(apply values
(alist-cons 'substitute-urls
(string-tokenize arg)
(alist-delete 'substitute-urls result))
rest)))
(option '("no-build-hook") #f #f (option '("no-build-hook") #f #f
(lambda (opt name arg result . rest) (lambda (opt name arg result . rest)
(apply values (apply values

View File

@ -37,6 +37,7 @@
#:use-module (ice-9 popen) #:use-module (ice-9 popen)
#:export (%daemon-socket-file #:export (%daemon-socket-file
%gc-roots-directory %gc-roots-directory
%default-substitute-urls
nix-server? nix-server?
nix-server-major-version nix-server-major-version