Subject: bug#25137: closed (Re: bug#22990: Grafts leads to inefficient substitute info retrieval)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 30 Mar 2020 02:36:51 +0000

Your bug report

#22990: repeated updating list of substitutes during install

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 [email-masked].

-- 
22990: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=22990
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#22990: Grafts leads to inefficient substitute info retrieval
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Sun, 29 Mar 2020 15:41:24 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi younger self!

[email-masked] (Ludovic Courtès) skribis:

> As of right now (v0.9.0-2007-g66a30a3), ‘graft-derivation’ works either by:
>
>   1. Fetching substitute info about the things being built so that it
>      can determine its references, which in turns allows it to determine
>      whether they need to be grafted.
>
>   2. Building stuff, as a last resort, so that it can determine its
>      references.
>
> Case #1 is hopefully going to be the most common.
>
> The problem with #1 is that when building a profile, we do one
> ‘package-derivation’ call for each package in the profile, which
> translates in one ‘graft-derivation’ call for each relevant package¹,
> which translates into one ‘references/substitutes’ call for each.
>
> Concretely, what this means is this:
>
>   $ guix package -u
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   substitute: updating list of substitutes from 'http://mirror.guixsd.org'... 100.0%
>   […]
>   The following files would be downloaded:
>
> Each of the initial “updating list” message corresponds to an HTTP
> request for a single narinfo file, which can take around 1 second.

This is finally fixed with commit
710854304b1ab29332edcb76f3de532e0724c197, as discussed earlier this
week¹.  \o/

The solution is simpler and more orthogonal than what was envisioned
earlier in this thread, which is nice.

I also potentially addresses other uses of “dynamic dependencies”
elsewhere in the code base, such as ‘remote-eval’ calls in ‘guix
deploy’.

Feedback welcome!

Ludo’.

¹ https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00337.html

Subject: repeated updating list of substitutes during install
From: Dave Love <[email-masked]>
To: [email-masked]
Date: Thu, 08 Dec 2016 13:50:07 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

During a package install (of guix itself) I see "updating list of
substitutes" messages repeated through the install, not just at the
start.  Is that as it should be?  I expected guix to use a recent cached
version.