diff --git a/doc/guix.texi b/doc/guix.texi index 4206076a9b..68d45d2a5f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -595,6 +595,10 @@ Use @var{profile} instead of the user's default profile. @itemx -n Show what would be done without actually doing it. +@item --fallback +When substituting a pre-built binary fails, fall back to building +packages locally. + @item --no-substitutes @itemx --max-silent-time=@var{seconds} Same as for @command{guix build} (@pxref{Invoking guix build}). @@ -1219,6 +1223,10 @@ the end of the build log. This is useful when debugging build issues. @itemx -n Do not build the derivations. +@item --fallback +When substituting a pre-built binary fails, fall back to building +packages locally. + @item --no-substitutes Build instead of resorting to pre-built substitutes. diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm index 995d96362b..26cd28215e 100644 --- a/guix/scripts/build.scm +++ b/guix/scripts/build.scm @@ -81,6 +81,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) -K, --keep-failed keep build tree of failed builds")) (display (_ " -n, --dry-run do not build the derivations")) + (display (_ " + --fallback fall back to building when the substituter fails")) (display (_ " --no-substitutes build instead of resorting to pre-built substitutes")) (display (_ " @@ -140,6 +142,10 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (option '(#\n "dry-run") #f #f (lambda (opt name arg result) (alist-cons 'dry-run? #t result))) + (option '("fallback") #f #f + (lambda (opt name arg result) + (alist-cons 'fallback? #t + (alist-delete 'fallback? result)))) (option '("no-substitutes") #f #f (lambda (opt name arg result) (alist-cons 'substitutes? #f @@ -267,6 +273,7 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n")) (set-build-options (%store) #:keep-failed? (assoc-ref opts 'keep-failed?) #:build-cores (or (assoc-ref opts 'cores) 0) + #:fallback? (assoc-ref opts 'fallback?) #:use-substitutes? (assoc-ref opts 'substitutes?) #:max-silent-time (assoc-ref opts 'max-silent-time) #:verbosity (assoc-ref opts 'verbosity)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index cd93cc3758..69b7efd154 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -437,6 +437,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) -p, --profile=PROFILE use PROFILE instead of the user's default profile")) (display (_ " -n, --dry-run show what would be done without actually doing it")) + (display (_ " + --fallback fall back to building when the substituter fails")) (display (_ " --no-substitutes build instead of resorting to pre-built substitutes")) (display (_ " @@ -499,6 +501,10 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n")) (option '(#\n "dry-run") #f #f (lambda (opt name arg result) (alist-cons 'dry-run? #t result))) + (option '("fallback") #f #f + (lambda (opt name arg result) + (alist-cons 'fallback? #t + (alist-delete 'fallback? result)))) (option '("no-substitutes") #f #f (lambda (opt name arg result) (alist-cons 'substitutes? #f @@ -909,6 +915,7 @@ more information.~%")) (with-error-handling (parameterize ((%store (open-connection))) (set-build-options (%store) + #:fallback? (assoc-ref opts 'fallback?) #:use-substitutes? (assoc-ref opts 'substitutes?) #:max-silent-time