From: Roel Janssen <roel@gnu.org>
To: 27907@debbugs.gnu.org
Subject: [bug#27907] [PATCH] graph: Provide access to the package record in the emit
Date: Tue, 01 Aug 2017 16:40:05 +0200 [thread overview]
Message-ID: <rbumv7j4aii.fsf@gnu.org> (raw)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0001-graph-Provide-access-to-the-package-record-in-the-em.patch --]
[-- Type: text/x-diff, Size: 2856 bytes --]
From 0243051f4a650f729e20645606d45d7138f2aa8c Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 1 Aug 2017 16:30:02 +0200
Subject: [PATCH] graph: Provide access to the package record in the emit
functions.
* guix/graph.scm (export-graph): Pass the node to the emit functions, instead
of the node's label.
---
guix/graph.scm | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/guix/graph.scm b/guix/graph.scm
index d7fd5f3..0219787 100644
--- a/guix/graph.scm
+++ b/guix/graph.scm
@@ -22,6 +22,7 @@
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix sets)
+ #:use-module (guix packages)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
@@ -170,9 +171,9 @@ typically returned by 'node-edges' or 'node-back-edges'."
name))
(define (emit-epilogue port)
(display "\n}\n" port))
-(define (emit-node id label port)
+(define (emit-node id node port)
(format port " \"~a\" [label = \"~a\", shape = box, fontname = Helvetica];~%"
- id label))
+ id (package-full-name node)))
(define (emit-edge id1 id2 port)
(format port " \"~a\" -> \"~a\" [color = ~a];~%"
id1 id2 (pop-color id1)))
@@ -213,11 +214,11 @@ var nodes = {},
(format port "</script><script type=\"text/javascript\" src=\"~a\"></script></body></html>"
(search-path %load-path "graph.js")))
-(define (emit-d3js-node id label port)
+(define (emit-d3js-node id node port)
(format port "\
nodes[\"~a\"] = {\"id\": \"~a\", \"label\": \"~a\", \"index\": nodeArray.length};
nodeArray.push(nodes[\"~a\"]);~%"
- id id label id))
+ id id (package-full-name node) id))
(define (emit-d3js-edge id1 id2 port)
(format port "links.push({\"source\": \"~a\", \"target\": \"~a\"});~%"
@@ -241,9 +242,9 @@ nodeArray.push(nodes[\"~a\"]);~%"
(define (emit-cypher-epilogue port)
(format port ""))
-(define (emit-cypher-node id label port)
+(define (emit-cypher-node id node port)
(format port "MERGE (p:Package { id: ~s }) SET p.name = ~s;~%"
- id label ))
+ id (package-name node)))
(define (emit-cypher-edge id1 id2 port)
(format port "MERGE (a:Package { id: ~s });~%" id1)
@@ -296,7 +297,7 @@ true, draw reverse arrows."
(ids (mapm %store-monad
node-identifier
dependencies)))
- (emit-node id (node-label head) port)
+ (emit-node id head port)
(for-each (lambda (dependency dependency-id)
(if reverse-edges?
(emit-edge dependency-id id port)
--
2.7.4
[-- Attachment #2: Type: text/plain, Size: 599 bytes --]
Dear Guix,
I would like to expand the Cypher back-end and in the long run add a
SPARQL graph back-end to GNU Guix. For this, I will need to have access
to the package records inside the emit-* functions.
This patch makes this change by essentially changing the "label"
parameter of the emit-* functions passed as "(node-label head)" into a
"node" parameter, passed as "head".
The rest of the patch adapts the current emit-* functions to this
change.
I tested the Graphviz, D3js, and Cypher back-ends, and all seem to work
as before.
Is it OK to apply this change?
Kind regards,
Roel Janssen
next reply other threads:[~2017-08-01 14:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-01 14:40 Roel Janssen [this message]
2017-08-01 19:25 ` [bug#27907] [PATCH] graph: Provide access to the package record in the emit Ludovic Courtès
2017-08-01 22:47 ` bug#27907: " Roel Janssen
2017-08-24 22:26 ` [bug#27907] " Ludovic Courtès
2017-08-25 9:00 ` Roel Janssen
2017-08-25 14:50 ` Ludovic Courtès
2017-08-25 16:19 ` Roel Janssen
2017-08-26 8:02 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=rbumv7j4aii.fsf@gnu.org \
--to=roel@gnu.org \
--cc=27907@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.