guix gc: Add '--list-failures' and '--clear-failures'.

Suggested by Mark H Weaver <mhw@netris.org>.

* guix/scripts/gc.scm (show-help, %options): Add --list-failures and
  --clear-failures.
  (guix-gc): Honor them.
* doc/guix.texi (Invoking guix gc): Document them.
  (Invoking guix-daemon): Mention them.
This commit is contained in:
Ludovic Courtès 2015-09-28 21:45:46 +02:00
parent 16748d8015
commit 30d9aa5422
2 changed files with 35 additions and 0 deletions

View File

@ -814,6 +814,11 @@ builds to other machines (@pxref{Daemon Offload Setup}).
@item --cache-failures @item --cache-failures
Cache build failures. By default, only successful builds are cached. Cache build failures. By default, only successful builds are cached.
When this option is used, @command{guix gc --list-failures} can be used
to query the set of store items marked as failed; @command{guix gc
--clear-failures} removes store items from the set of cached failures.
@xref{Invoking guix gc}.
@item --cores=@var{n} @item --cores=@var{n}
@itemx -c @var{n} @itemx -c @var{n}
Use @var{n} CPU cores to build each derivation; @code{0} means as many Use @var{n} CPU cores to build each derivation; @code{0} means as many
@ -1674,6 +1679,19 @@ Attempt to delete all the store files and directories specified as
arguments. This fails if some of the files are not in the store, or if arguments. This fails if some of the files are not in the store, or if
they are still live. they are still live.
@item --list-failures
List store items corresponding to cached build failures.
This prints nothing unless the daemon was started with
@option{--cache-failures} (@pxref{Invoking guix-daemon,
@option{--cache-failures}}).
@item --clear-failures
Remove the specified store items from the failed-build cache.
Again, this option only makes sense when the daemon is started with
@option{--cache-failures}. Otherwise, it does nothing.
@item --list-dead @item --list-dead
Show the list of dead files and directories still present in the Show the list of dead files and directories still present in the
store---i.e., files and directories no longer reachable from any root. store---i.e., files and directories no longer reachable from any root.

View File

@ -62,6 +62,10 @@ Invoke the garbage collector.\n"))
--verify[=OPTS] verify the integrity of the store; OPTS is a --verify[=OPTS] verify the integrity of the store; OPTS is a
comma-separated combination of 'repair' and comma-separated combination of 'repair' and
'contents'")) 'contents'"))
(display (_ "
--list-failures list cached build failures"))
(display (_ "
--clear-failures remove PATHS from the set of cached failures"))
(newline) (newline)
(display (_ " (display (_ "
-h, --help display this help and exit")) -h, --help display this help and exit"))
@ -130,6 +134,14 @@ Invoke the garbage collector.\n"))
(option '("referrers") #f #f (option '("referrers") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'action 'list-referrers (alist-cons 'action 'list-referrers
(alist-delete 'action result))))
(option '("list-failures") #f #f
(lambda (opt name arg result)
(alist-cons 'action 'list-failures
(alist-delete 'action result))))
(option '("clear-failures") #f #f
(lambda (opt name arg result)
(alist-cons 'action 'clear-failures
(alist-delete 'action result)))))) (alist-delete 'action result))))))
@ -200,6 +212,11 @@ Invoke the garbage collector.\n"))
(verify-store store (verify-store store
#:check-contents? (memq 'contents options) #:check-contents? (memq 'contents options)
#:repair? (memq 'repair options))))) #:repair? (memq 'repair options)))))
((list-failures)
(for-each (cut simple-format #t "~a~%" <>)
(query-failed-paths store)))
((clear-failures)
(clear-failed-paths store (map direct-store-path paths)))
((list-dead) ((list-dead)
(for-each (cut simple-format #t "~a~%" <>) (for-each (cut simple-format #t "~a~%" <>)
(dead-paths store))) (dead-paths store)))