summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-01-15 22:28:24 +0100
committerLudovic Courtès <ludo@gnu.org>2017-01-15 22:47:25 +0100
commit6da5bb7b1b7ddf4aa5a5efcb83250506bcd67036 (patch)
treef7d481199bf0c72442ae0f65edafed8c85f46b67
parentabdc5f345caf97b7c9dd3e266e27f0cc0133dc6b (diff)
downloadpatches-6da5bb7b1b7ddf4aa5a5efcb83250506bcd67036.tar
patches-6da5bb7b1b7ddf4aa5a5efcb83250506bcd67036.tar.gz
guix build: Add '--repair'.
* guix/scripts/build.scm (show-help, %options): Add '--repair'. * doc/guix.texi (Invoking guix gc): Mention 'guix build --repair'. (Additional Build Options): Document it.
-rw-r--r--doc/guix.texi13
-rw-r--r--guix/scripts/build.scm8
2 files changed, 20 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 55657ec81c..bf9dbaa726 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -2274,11 +2274,14 @@ traverses @emph{all the files in the store}, this command can take a
long time, especially on systems with a slow disk drive.
@cindex repairing the store
+@cindex corruption, recovering from
Using @option{--verify=repair} or @option{--verify=contents,repair}
causes the daemon to try to repair corrupt store items by fetching
substitutes for them (@pxref{Substitutes}). Because repairing is not
atomic, and thus potentially dangerous, it is available only to the
-system administrator.
+system administrator. A lightweight alternative, when you know exactly
+which items in the store are corrupt, is @command{guix build --repair}
+(@pxref{Invoking guix build}).
@item --optimize
@cindex deduplication
@@ -4859,6 +4862,14 @@ When used in conjunction with @option{--keep-failed}, the differing
output is kept in the store, under @file{/gnu/store/@dots{}-check}.
This makes it easy to look for differences between the two results.
+@item --repair
+@cindex repairing store items
+@cindex corruption, recovering from
+Attempt to repair the specified store items, if they are corrupt, by
+re-downloading or rebuilding them.
+
+This operation is not atomic and thus restricted to @code{root}.
+
@item --derivations
@itemx -d
Return the derivation paths, not the output paths, of the given
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 551275e89f..8326d64f48 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -486,6 +486,8 @@ Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"))
(display (_ "
--check rebuild items to check for non-determinism issues"))
(display (_ "
+ --repair repair the specified items"))
+ (display (_ "
-r, --root=FILE make FILE a symlink to the result, and register it
as a garbage collector root"))
(display (_ "
@@ -535,6 +537,12 @@ must be one of 'package', 'all', or 'transitive'~%")
(alist-cons 'build-mode (build-mode check)
result)
rest)))
+ (option '("repair") #f #f
+ (lambda (opt name arg result . rest)
+ (apply values
+ (alist-cons 'build-mode (build-mode repair)
+ result)
+ rest)))
(option '(#\s "system") #t #f
(lambda (opt name arg result)
(alist-cons 'system arg