unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* New ‘guix graph’ command
@ 2015-08-26 22:53 Ludovic Courtès
  2015-08-27  9:25 ` Pjotr Prins
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Ludovic Courtès @ 2015-08-26 22:53 UTC (permalink / raw)
  To: Guix-devel

[-- Attachment #1: Type: text/plain, Size: 938 bytes --]

Hi!

Here’s a long overdue ‘guix graph’ command (documentation below.)
Comments welcome!

Ludo’.


5.9 Invoking ‘guix graph’
=========================

Packages and their dependencies form a “graph”, specifically a directed
acyclic graph (DAG). It can quickly become difficult to have a mental
model of the package DAG, so the ‘guix graph’ command is here to provide
a visual representation of the DAG. ‘guix graph’ emits a DAG
representation in the input format of Graphviz
(http://www.graphviz.org/), so its output can be passed directly to
Graphviz’s ‘dot’ command, for instance.  The general syntax is:

     guix graph OPTIONS PACKAGE…

   For example, the following command generates a PDF file representing
the package DAG for the GNU Core Utilities, showing its build-time
dependencies:

     guix graph coreutils | dot -Tpdf > dag.pdf

   The output looks like this:


[-- Attachment #2: DAG --]
[-- Type: image/png, Size: 13378 bytes --]

[-- Attachment #3: Type: text/plain, Size: 828 bytes --]


   Nice little graph, no?

   But there’s more than one graph!  The one above is concise: it’s the
graph of package objects, omitting implicit inputs such as GCC, libc,
grep, etc.  It’s often useful to have such a concise graph, but
sometimes you want to see more details.  ‘guix graph’ supports several
types of graphs, allowing you to choose the level of details:

‘package’
     This is the default type, the one we used above.  It shows the DAG
     of package objects, excluding implicit dependencies.  It is
     concise, but filters out many details.

‘bag-emerged’
     This is the package DAG, _including_ implicit inputs.

     For instance, the following command:

          guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf

     ...  yields this bigger graph:


[-- Attachment #4: big DAG --]
[-- Type: image/png, Size: 621727 bytes --]

[-- Attachment #5: Type: text/plain, Size: 1414 bytes --]


     At the bottom of the graph, we see all the implicit inputs of
     GNU-BUILD-SYSTEM (*note ‘gnu-build-system’: Build Systems.).

     Now, note that the dependencies of those implicit inputs—that is,
     the “bootstrap dependencies” (*note Bootstrapping::)—are not shown
     here, for conciseness.

‘bag’
     Similar to ‘bag-emerged’, but this time including all the bootstrap
     dependencies.

‘derivations’
     This is the most detailed representation: It shows the DAG of
     derivations (*note Derivations::) and plain store items.  Compared
     to the above representation, many additional nodes are visible,
     including builds scripts, patches, Guile modules, etc.

   All the above types correspond to _build-time dependencies_.  The
following graph type represents the _run-time dependencies_:

‘references’
     This is the graph of “references” of a package output, as returned
     by ‘guix gc --references’ (*note Invoking guix gc::).

     If the given package output is not available in the store, ‘guix
     graph’ attempts to obtain dependency information from substitutes.

   The available options are the following:

‘--type=TYPE’
‘-t TYPE’
     Produce a graph output of TYPE, where TYPE must be one of the
     values listed above.

‘--list-types’
     List the supported graph types.


^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2015-09-11 12:26 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-26 22:53 New ‘guix graph’ command Ludovic Courtès
2015-08-27  9:25 ` Pjotr Prins
2015-08-27 10:58 ` Mathieu Lirzin
2015-08-27 11:26   ` Ludovic Courtès
2015-08-27 15:15 ` Alex Kost
2015-08-27 15:20 ` Leo Famulari
2015-08-27 15:34 ` Thompson, David
2015-08-27 20:55   ` Ludovic Courtès
2015-08-27 21:01     ` Thompson, David
2015-09-03 20:32 ` Andreas Enge
2015-09-03 20:46   ` Ludovic Courtès
2015-09-03 20:54     ` Thompson, David
2015-09-03 20:55     ` Cook, Malcolm
2015-09-04  8:13       ` Pjotr Prins
2015-09-04  9:49         ` Andreas Enge
2015-09-11  0:02 ` Cyril Roelandt
2015-09-11  7:19   ` Leo Famulari
2015-09-11 12:26   ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).