~ruther/guix-local

30d9aa54229b413e52a2ed00032fa5179e4905ec — Ludovic Courtès 10 years ago 16748d8
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.
2 files changed, 35 insertions(+), 0 deletions(-)

M doc/guix.texi
M guix/scripts/gc.scm
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)))