M doc/guix.texi => doc/guix.texi +18 -0
@@ 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.
M guix/scripts/gc.scm => guix/scripts/gc.scm +17 -0
@@ 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)))