From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Thompson Subject: Re: guix environment Date: Tue, 03 Feb 2015 16:15:21 -0500 Message-ID: <87lhkeitna.fsf@fsf.org> References: <87egqpyvov.fsf@gnu.org> <87lhkldwfs.fsf@izanagi.i-did-not-set--mail-host-address--so-tickle-me> <87k2zypwmb.fsf@inria.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39010) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIkok-0002KB-AX for guix-devel@gnu.org; Tue, 03 Feb 2015 16:15:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YIkoj-00005A-26 for guix-devel@gnu.org; Tue, 03 Feb 2015 16:15:30 -0500 In-Reply-To: <87k2zypwmb.fsf@inria.fr> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: Guix-devel , bug-guix@gnu.org, Federico Beffa Ludovic Court=C3=A8s writes: > LGTM, please push! Pushed. > There=E2=80=99s another problem, though. When a dependency is a multiple= -output > package, all its outputs are added to the environment, because > =E2=80=98package->transitive-inputs=E2=80=99 discards the information of = which output is > needed. Yes, I had thought about this, but couldn't think of a way to preserve that information throughout the program. > So for instance, both the =E2=80=98out=E2=80=99 and the =E2=80=98debug=E2= =80=99 output of Coreutils end > up being downloaded and added to the environment, even though only =E2=80= =98out=E2=80=99 > is an input. > > Now, the problem is that =E2=80=98build-derivations=E2=80=99 can only bui= ld *all* the > outputs of the given derivation. This could be worked around either: > > 1. by creating a =E2=80=9Csink=E2=80=9D derivation, for instance with > =E2=80=98profile-derivation=E2=80=99, that could refer precisely to = the output(s) > needed; not ideal. > > 2. by using (build-things (list "/the/output/path")) and resorting to > =E2=80=98build-derivations=E2=80=99 only if the =E2=80=98build-thing= s=E2=80=99 call did nothing > (when passed a non-.drv store item, =E2=80=98build-things=E2=80=99 t= ries to > substitute and does nothing if that fails.) > > Thoughts? I don't like option #1. I haven't fully grokked option #2, but I guess that will be the next thing to try. Thanks for the nudge in the right direction. --=20 David Thompson Web Developer - Free Software Foundation - http://fsf.org GPG Key: 0FF1D807 Support the FSF: https://fsf.org/donate