help-guix
[Top][All Lists]
Advanced

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

Re: Reverse dependencies


From: Chris Marusich
Subject: Re: Reverse dependencies
Date: Fri, 12 Aug 2016 09:24:11 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Bavier <address@hidden> writes:

> On 2016-08-11 09:43, Vincent Legoll wrote:
>> Hello,
>>
>>>> I'm trying to understand which package(s) depends on some other
>>>> package,
>>>> kind of the reverse of what guix graph does (I think).
>>>
>>> I think that `guix refresh --list-dependent foo` is what you are
>>> asking
>>> for, or at least it's close. We use it to learn what will need to be
>>> rebuilt when upgrading foo.
>>
>> Not really what I want to know:
>>
>> # guix refresh --list-dependent inkscape
>> Building the following 5 packages would ensure 10 dependent packages
>> are rebuilt: frescobaldi-2.19.0 solfege-3.22.2 simple-scan-3.19.91
>> termite-11 hydra-20150407.4c0e3e4
>>
>> None of those are installed, but inkscape is pulled in by something
>> which I want to know
>>
>> Is there no other way to get that information ?
>
> Something like (mildly tested):
>
> (use-modules (guix packages)
>              (gnu packages)
>              (gnu packages inkscape)
>              (srfi srfi-1)
>              (srfi srfi-26))
>
> (fold-packages
>   (lambda (package _)
>     (when (any (cut eq? <> inkscape)
>                (map second (package-direct-inputs package)))
>       (format #t "~a depends on inkscape~%"
>               (package-full-name package))))
>   #t)
>
> which, when run, results in:
> "dblatex-0.3.5 depends on inkscape"

The 'guix graph' command has the ability to print out references, but my
understanding is that because these are the references which result from
Nix's scan of the output store path, these references will only be
runtime dependencies (see '(guix) Invoking guix graph' in the manual).

The 'guix gc' command has the ability to print out 'referrers', which
might also be useful.  See '(guix) Invoking guix gc' for details.  This
will show you components that refer to the specified store path.

I also hear that the Nix daemon can be configured to maintain a database
of derivers, which would let you find out which derivation generated a
given store path.  I don't know if Guix enables this by default.  If
it's enabled, then you could potentially investigate the derivation
which generated a store path (e.g., to see if the derivation references
inkscape), but I don't know of any automated tools for investigating
that stuff today.

-- 
Chris

Attachment: signature.asc
Description: PGP signature


reply via email to

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