GNU bug report logs - #24886
Grafting triggers a download of all the outputs of each derivation

Previous Next

Package: guix;

Reported by: ludo <at> gnu.org (Ludovic Courtès)

Date: Sat, 5 Nov 2016 21:55:01 UTC

Severity: important

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: ludo <at> gnu.org (Ludovic Courtès)
Subject: bug#24886: closed (Re: bug#24886: Why is die "doc" output
 downloaded when building this package?)
Date: Wed, 25 Jan 2017 10:13:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#24886: Grafting triggers a download of all the outputs of each derivation

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 24886 <at> debbugs.gnu.org.

-- 
24886: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=24886
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès)
To: Hartmut Goebel <h.goebel <at> crazy-compilers.com>
Cc: 24886-done <at> debbugs.gnu.org
Subject: Re: bug#24886: Why is die "doc" output downloaded when building this
 package?
Date: Wed, 25 Jan 2017 11:12:09 +0100
ludo <at> gnu.org (Ludovic Courtès) skribis:

> Hartmut Goebel <h.goebel <at> crazy-compilers.com> skribis:
>
>> when building this package, qt-4.8.7-doc (the doc-output of qt-4.7.8)
>> will be downloaded. I do not understand why.
>
> Most likely this is due to a limitation of the current implementation of
> grafts: all the outputs of packages on a “grafting path” need to be
> downloaded, even if some of these outputs are unused.
>
> This is because ‘graft-derivation’ takes a derivation, such as Qt’s, and
> returns a derivation with as many outputs, but marked as
> non-substitutable (locally built).  Because it’s locally built, all the
> outputs of the original derivation must be fetched just to be able to
> build the grafted derivation, even if only one of those outputs is
> needed.
>
> I think we could fix that by creating one graft derivation for each
> output of the original derivation.

Done in 482fda2729c3e76999892cb8f9a0391a7bd37119.

To take a concrete example, “guix build brdf-explorer” would previously
trigger a download of qt:doc, even though only qt:out is used.  This is
no longer the case.

This commit does not fix situations like:

  guix package -i qt

In this case, qt:doc still gets downloaded for nothing.  This is because
the underlying

  (package-derivation store qt #:graft? #t)

call does not know that only “out” is needed.  This can be addressed
with “lazy grafting” as discussed in <https://bugs.gnu.org/22990>, where
we’d delay grafting until the profile is built instead of grafting each
individual package eagerly.

Ludo’.

[Message part 3 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès)
To: Hartmut Goebel <h.goebel <at> crazy-compilers.com>
Cc: bug-guix <at> gnu.org, help-guix <at> gnu.org
Subject: Re: Why is die "doc" output downloaded when building this package?
Date: Sat, 05 Nov 2016 22:53:57 +0100
Hi,

(Adding a bug at bug-guix <at> gnu.org.)

Hartmut Goebel <h.goebel <at> crazy-compilers.com> skribis:

> when building this package, qt-4.8.7-doc (the doc-output of qt-4.7.8)
> will be downloaded. I do not understand why.

Most likely this is due to a limitation of the current implementation of
grafts: all the outputs of packages on a “grafting path” need to be
downloaded, even if some of these outputs are unused.

This is because ‘graft-derivation’ takes a derivation, such as Qt’s, and
returns a derivation with as many outputs, but marked as
non-substitutable (locally built).  Because it’s locally built, all the
outputs of the original derivation must be fetched just to be able to
build the grafted derivation, even if only one of those outputs is
needed.

I think we could fix that by creating one graft derivation for each
output of the original derivation.

Thanks,
Ludo’.



This bug report was last modified 8 years and 177 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.