summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi8
-rw-r--r--guix/scripts/build.scm7
-rw-r--r--guix/scripts/package.scm7
3 files changed, 22 insertions, 0 deletions
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
@@ -82,6 +82,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
   (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 (_ "
       --max-silent-time=SECONDS
@@ -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
@@ -438,6 +438,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
   (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 (_ "
       --max-silent-time=SECONDS
@@ -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