[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
03/03: list-runtime-roots: Canonicalize store items.
From: |
Ludovic Courtès |
Subject: |
03/03: list-runtime-roots: Canonicalize store items. |
Date: |
Sun, 12 Nov 2017 16:42:24 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit fb17a89912c2a3738dae716e30481c11e1c6f0ac
Author: Ludovic Courtès <address@hidden>
Date: Sun Nov 12 22:16:28 2017 +0100
list-runtime-roots: Canonicalize store items.
Looking at 'addAdditionalRoots' in libstore/gc.cc, it looks like it
should always have been this way. In practice it probably doesn't make
much of a difference.
* nix/scripts/list-runtime-roots.in (canonicalize-store-item): New
procedure.
<top level>: Use it.
---
nix/scripts/list-runtime-roots.in | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/nix/scripts/list-runtime-roots.in
b/nix/scripts/list-runtime-roots.in
index 6f0e7f5..001d25c 100644
--- a/nix/scripts/list-runtime-roots.in
+++ b/nix/scripts/list-runtime-roots.in
@@ -26,6 +26,7 @@
(use-modules (ice-9 ftw)
(ice-9 regex)
(ice-9 rdelim)
+ (ice-9 match)
(srfi srfi-1)
(srfi srfi-26)
(rnrs io ports))
@@ -126,5 +127,18 @@ or the empty list."
(lambda (a b)
(< (string->number a) (string->number b))))))
+(define canonicalize-store-item
+ (let ((prefix (+ 1 (string-length %store-directory))))
+ (lambda (file)
+ "Return #f if FILE is not a store item; otherwise, return the store file
+name without any sub-directory components."
+ (and (string-prefix? %store-directory file)
+ (string-append %store-directory "/"
+ (let ((base (string-drop file prefix)))
+ (match (string-index base #\/)
+ (#f base)
+ (slash (string-take base slash)))))))))
+
(for-each (cut simple-format #t "~a~%" <>)
- (delete-duplicates (referenced-files)))
+ (delete-duplicates
+ (filter-map canonicalize-store-item (referenced-files))))