From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thompson, David" Subject: Re: Reverse dependencies Date: Fri, 12 Aug 2016 11:55:26 -0400 Message-ID: References: <20160716161333.GA29212@jasmine> <87d1legy06.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54997) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYEnz-0004jj-D8 for help-guix@gnu.org; Fri, 12 Aug 2016 11:55:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bYEnw-0005QI-9N for help-guix@gnu.org; Fri, 12 Aug 2016 11:55:30 -0400 Received: from mail-ua0-x232.google.com ([2607:f8b0:400c:c08::232]:36616) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYEnw-0005QC-3y for help-guix@gnu.org; Fri, 12 Aug 2016 11:55:28 -0400 Received: by mail-ua0-x232.google.com with SMTP id 97so48202676uav.3 for ; Fri, 12 Aug 2016 08:55:27 -0700 (PDT) In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Vincent Legoll Cc: Alex Kost , help-guix On Fri, Aug 12, 2016 at 5:27 AM, Vincent Legoll wrote: > Hello, > >> I think you mean inkscape is pulled when you build the system. Then you >> will not find it like this. It is needed to build the fancy grub image, >> and it is "pulled" by the system building code (specifically by >> 'svg->png' procedure in (gnu system grub) module). If you want to avoid >> it, you can specify an "empty" theme for example: >> >> (bootloader (grub-configuration (device "/dev/sda") >> (theme (grub-theme)))) > > Thanks for that information, that was what I wanted to know (both the where > does it come from, and the how to avoid it being pulled in) > > I think a "guix revdep $PKG" should be a valuable tool While we can certainly make learning about this stuff easier, but making a new subcommand with a cryptic name just for this purpose wouldn't be a very good UI. > it should work: > 1 - globally in the list of defined packages > 2 - locally in the list of packages from the current user's profile > 3 - systemly, from the list of installed packages in the system profile What do you define "dependencies" to be? Using your situation as an example, inkscape is *not* a dependency of the built system, but it is a dependency of the *derivation* that builds the system. Using profiles wouldn't work because profiles may contain references to store items that the current Guix has no knowledge of. package expression -> built package is a one way transformation. What you can do, however, is use 'guix gc --referrers' to get a list of store items that refer to the store item passed in. This still doesn't help you in the inkscape case because the built system has no reference to inkscape, it was just used in the build script. I think the "right thing" here is to add features to 'guix graph' so that it can make a referrer graph using the Scheme package graph. 'guix system' has graph subcommands already, so we could add one that produces a full package dependency graph which would show you who depends on inkscape. Any volunteers? :) I'd also like to point out that you can already use 'guix gc --referrers /gnu/store/....-foo-1.0' to find out which store items depend on the one passed in. - Dave