diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-05-10 00:53:29 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-05-11 23:30:55 +0200 |
commit | 88a96c568c47c97d05d883ada5afbc4e1200b10f (patch) | |
tree | 77b36cc42aba2ce6ab9d556f8620f6a9ad7e6388 /doc | |
parent | 36c2192414dfcc43db767106cede2cc1d0e6e556 (diff) | |
download | guix-88a96c568c47c97d05d883ada5afbc4e1200b10f.tar guix-88a96c568c47c97d05d883ada5afbc4e1200b10f.tar.gz |
guix graph: Add '--path'.
* guix/scripts/graph.scm (display-path): New procedure.
(%options, show-help): Add '--path'.
(guix-graph): Handle it.
* tests/guix-graph.sh: Add tests.
* doc/guix.texi (Invoking guix graph): Document it.
(Invoking guix size): Mention it.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/guix.texi | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 8d38601201..996d045aa3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -10021,6 +10021,12 @@ In this example we see that the combination of the four packages takes 102.3@tie{}MiB in total, which is much less than the sum of each closure since they have a lot of dependencies in common. +When looking at the profile returned by @command{guix size}, you may +find yourself wondering why a given package shows up in the profile at +all. To understand it, you can use @command{guix graph --path -t +references} to display the shortest path between the two packages +(@pxref{Invoking guix graph}). + The available options are: @table @option @@ -10081,8 +10087,9 @@ directly to the @command{dot} command of Graphviz. It can also emit an HTML page with embedded JavaScript code to display a ``chord diagram'' in a Web browser, using the @uref{https://d3js.org/, d3.js} library, or emit Cypher queries to construct a graph in a graph database supporting -the @uref{https://www.opencypher.org/, openCypher} query language. -The general syntax is: +the @uref{https://www.opencypher.org/, openCypher} query language. With +@option{--path}, it simply displays the shortest path between two +packages. The general syntax is: @example guix graph @var{options} @var{package}@dots{} @@ -10235,6 +10242,29 @@ collected. @end table +@cindex shortest path, between packages +Often, the graph of the package you are interested in does not fit on +your screen, and anyway all you want to know is @emph{why} that package +actually depends on some seemingly unrelated package. The +@option{--path} option instructs @command{guix graph} to display the +shortest path between two packages (or derivations, or store items, +etc.): + +@example +$ guix graph --path emacs libunistring +emacs@@26.3 +mailutils@@3.9 +libunistring@@0.9.10 +$ guix graph --path -t derivation emacs libunistring +/gnu/store/@dots{}-emacs-26.3.drv +/gnu/store/@dots{}-mailutils-3.9.drv +/gnu/store/@dots{}-libunistring-0.9.10.drv +$ guix graph --path -t references emacs libunistring +/gnu/store/@dots{}-emacs-26.3 +/gnu/store/@dots{}-libidn2-2.2.0 +/gnu/store/@dots{}-libunistring-0.9.10 +@end example + The available options are the following: @table @option @@ -10255,6 +10285,20 @@ List the supported graph backends. Currently, the available backends are Graphviz and d3.js. +@item --path +Display the shortest path between two nodes of the type specified by +@option{--type}. The example below shows the shortest path between +@code{libreoffice} and @code{llvm} according to the references of +@code{libreoffice}: + +@example +$ guix graph --path -t references libreoffice llvm +/gnu/store/@dots{}-libreoffice-6.4.2.2 +/gnu/store/@dots{}-libepoxy-1.5.4 +/gnu/store/@dots{}-mesa-19.3.4 +/gnu/store/@dots{}-llvm-9.0.1 +@end example + @item --expression=@var{expr} @itemx -e @var{expr} Consider the package @var{expr} evaluates to. |