(address . bug-guix@gnu.org)
On a Guix System installation, "guix graph -t referrers" is not
helpful when the package you're investigating is brought in directly
by the operating-system declaration. Here are two examples.
1) Packages that have been added to the 'packages' property of the
operating-system declaration, but have no connection to any other
package, are described as unconnected.
(operating-system
(packages (cons* (specification->package "lsof") %base-packages))
;; etc
)
# guix graph -t referrers lsof
digraph "Guix referrers" {
"/gnu/store/7fkgda85xj4dr2d0r8lafyvnx5b9xwzp-lsof-4.94.0"
[label = "lsof-4.94.0", shape = box, fontname = sans];
}
2) If you've excluded a %base-packages package that ships setuid
binaries (e.g. "sudo", but forgotten to exclude the actual setuid
binaries as well, the package will still be included in the
operating-system derivation, and guix graph won't tell you why:
(operating-system
(packages
(filter
(lambda (pkg) (not (string= (package-name pkg) "sudo")))
%base-packages))
;; etc
)
# guix graph -t referrers sudo
digraph "Guix referrers" {
"/gnu/store/gnybfg31is632dyaivd907f2h0wff80d-sudo-1.9.14p3"
[label = "sudo-1.9.14p3", shape = box, fontname = sans];
"/gnu/store/gnybfg31is632dyaivd907f2h0wff80d-sudo-1.9.14p3" ->
"/gnu/store/gnybfg31is632dyaivd907f2h0wff80d-sudo-1.9.14p3"
[color = darkviolet];
}
This is saying that sudo refers to _itself_ and nothing else does,
which doesn't make any sense.
In both cases I would have expected "guix graph -t referrers"
to report that the package was a direct dependency of the
operating-system derivation itself; in the latter case I would
have liked it if there was some indication that the dependency
was because of 'setuid-binaries'.
zw