diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-09-28 21:45:46 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-09-28 22:54:04 +0200 |
commit | 30d9aa54229b413e52a2ed00032fa5179e4905ec (patch) | |
tree | 6500ff2e778f18e96a39c570a8a859e93f859d5d | |
parent | 16748d80158875ae4cd54270be683fcf9c5d5169 (diff) | |
download | patches-30d9aa54229b413e52a2ed00032fa5179e4905ec.tar patches-30d9aa54229b413e52a2ed00032fa5179e4905ec.tar.gz |
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.
-rw-r--r-- | doc/guix.texi | 18 | ||||
-rw-r--r-- | guix/scripts/gc.scm | 17 |
2 files changed, 35 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index afb4108800..6a3765f56a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -814,6 +814,11 @@ builds to other machines (@pxref{Daemon Offload Setup}). @item --cache-failures 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} @itemx -c @var{n} 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 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 Show the list of dead files and directories still present in the store---i.e., files and directories no longer reachable from any root. diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 7e06c72ccb..89a68d51d0 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm @@ -62,6 +62,10 @@ Invoke the garbage collector.\n")) --verify[=OPTS] verify the integrity of the store; OPTS is a comma-separated combination of 'repair' and 'contents'")) + (display (_ " + --list-failures list cached build failures")) + (display (_ " + --clear-failures remove PATHS from the set of cached failures")) (newline) (display (_ " -h, --help display this help and exit")) @@ -130,6 +134,14 @@ Invoke the garbage collector.\n")) (option '("referrers") #f #f (lambda (opt name arg result) (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)))))) @@ -200,6 +212,11 @@ Invoke the garbage collector.\n")) (verify-store store #:check-contents? (memq 'contents 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) (for-each (cut simple-format #t "~a~%" <>) (dead-paths store))) |