[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/05: guix graph: '--path' defaults to "out" in the case of multiple ou
From: |
guix-commits |
Subject: |
02/05: guix graph: '--path' defaults to "out" in the case of multiple outputs. |
Date: |
Sun, 15 Jan 2023 18:09:43 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit 99e255d04ba154cea19ab7b3c8dc3014fd03b007
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Fri Jan 13 23:38:18 2023 +0100
guix graph: '--path' defaults to "out" in the case of multiple outputs.
Previously, "guix graph -t references --graph guix guile" would fail
with:
no path from '/gnu/store/…-guix-1.4.0-1.9fe5b49' to
'/gnu/store/…-guile-3.0.8-debug'
simply because the "debug" happened to be the first one, getting bound
to NODE2. With this change it will instead pick the "out" output of
each.
* guix/scripts/graph.scm (guix-graph)[shorter?, length-sorted]: New
procedures.
In the 'path?' case, use the latter to store node lists.
---
guix/scripts/graph.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm
index b31cc0014d..6847dd1962 100644
--- a/guix/scripts/graph.scm
+++ b/guix/scripts/graph.scm
@@ -569,6 +569,12 @@ Emit a representation of the dependency graph of
PACKAGE...\n"))
(category packaging)
(synopsis "view and query package dependency graphs")
+ (define (shorter? str1 str2)
+ (< (string-length str1) (string-length str2)))
+
+ (define length-sorted
+ (cut sort <> shorter?))
+
(with-error-handling
(define opts
(parse-command-line args %options
@@ -603,8 +609,12 @@ Emit a representation of the dependency graph of
PACKAGE...\n"))
(node-type-convert type)
(reverse items))))
(if (assoc-ref opts 'path?)
+ ;; Sort by string length such that, in case of multiple
+ ;; outputs, the shortest one (which corresponds to "out") is
+ ;; picked (yup, a hack).
(match nodes
- (((node1 _ ...) (node2 _ ...))
+ (((= length-sorted (node1 _ ...))
+ (= length-sorted (node2 _ ...)))
(display-path node1 node2 type))
(_
(leave (G_ "'--path' option requires exactly two \