summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--NEWS4
-rw-r--r--doc/guix.texi7
-rw-r--r--guix/scripts/gc.scm8
3 files changed, 19 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 3a946ec59d..6c33b9ab58 100644
--- a/NEWS
+++ b/NEWS
@@ -32,6 +32,10 @@ See the manual for details.
 This option instructs to fall back to local builds when the substituter fails
 to download a substitute.
 
+*** New ‘--requisites’ option for “guix gc”
+
+See the manual for details.
+
 ** Bugs fixed
 *** “guix --help” now works when using Guile 2.0.5
 *** Binary substituter multi-threading and pipe issues fixed
diff --git a/doc/guix.texi b/doc/guix.texi
index 02fb9982c1..23e8351c02 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -722,6 +722,13 @@ In addition, the references among existing store files can be queried:
 List the references (respectively, the referrers) of store files given
 as arguments.
 
+@item --requisites
+@itemx -R
+List the requisites of the store files passed as arguments.  Requisites
+include the store files themselves, their references, and the references
+of these, recursively.  In other words, the returned list is the
+@dfn{transitive closure} of the store files.
+
 @end table
 
 
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index cecb68ec36..77ec7635de 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -51,6 +51,8 @@ Invoke the garbage collector.\n"))
   (display (_ "
       --references       list the references of PATHS"))
   (display (_ "
+  -R, --requisites       list the requisites of PATHS"))
+  (display (_ "
       --referrers        list the referrers of PATHS"))
   (newline)
   (display (_ "
@@ -128,6 +130,10 @@ interpreted."
                 (lambda (opt name arg result)
                   (alist-cons 'action 'list-references
                               (alist-delete 'action result))))
+        (option '(#\R "requisites") #f #f
+                (lambda (opt name arg result)
+                  (alist-cons 'action 'list-requisites
+                              (alist-delete 'action result))))
         (option '("referrers") #f #f
                 (lambda (opt name arg result)
                   (alist-cons 'action 'list-referrers
@@ -189,6 +195,8 @@ interpreted."
          (delete-paths store paths))
         ((list-references)
          (list-relatives references))
+        ((list-requisites)
+         (list-relatives requisites))
         ((list-referrers)
          (list-relatives referrers))
         ((list-dead)