guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: New ‘guix graph’ command


From: Leo Famulari
Subject: Re: New ‘guix graph’ command
Date: Thu, 27 Aug 2015 11:20:58 -0400

Very nice! This will be much easier than my ersatz solution of making filesystem trees by hand and then running `tree` on them.
 
Another tool for the visual thinkers...
 
 
On Wed, Aug 26, 2015, at 18:53, Ludovic Courtès wrote:
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:
 

 
  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:
 

 
    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.
 

Email had 2 attachments:

 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]