Guix shouldn't request substitutes for profile derivations

DoneSubmitted by pkill9.
Details
2 participants
  • Ludovic Courtès
  • pkill9
Owner
unassigned
Severity
normal
P
P
pkill9 wrote on 1 Apr 2020 22:18
(address . bug-guix@gnu.org)
20200401211846.77cafa00@runbox.com
I see that Guix is requesting substitutes from the build servers before
it builds a profile derivation.
L
L
Ludovic Courtès wrote on 2 Apr 2020 12:44
(name . pkill9)(address . pkill9@runbox.com)(address . 40381@debbugs.gnu.org)
87imiip3ol.fsf@gnu.org
Hi,

pkill9 <pkill9@runbox.com> skribis:

Toggle quote (3 lines)
> I see that Guix is requesting substitutes from the build servers before
> it builds a profile derivation.

Can you show more precisely what you mean by pasting a command and its
output?

With the recent changes in the implementation of grafts, what happens is
usually this:

$ guix build foo
updating the list of substitutes…
The following things will be built/downloaded:

updating the list of substitutes…
The following things will be built/downloaded:

The second stage here typically includes profile.drv as well as grafts.
All this is expected behavior.

Detailed behavior depends on what’s in /gnu/store, the freshness of
substitute info in /var/guix/substitute/cache, and applicable grafts for
the package(s) at hand.

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 14 Apr 2020 17:41
control message for bug #40381
(address . control@debbugs.gnu.org)
87blnuvzw3.fsf@gnu.org
tags 40381 + moreinfo
quit
P
P
pkill9 wrote on 26 Apr 2020 17:58
Re: bug#40381: Guix shouldn't request substitutes for profile derivations
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 40381@debbugs.gnu.org)
20200426165834.44b07258@runbox.com
Hi Ludovic

Toggle quote (18 lines)
> Can you show more precisely what you mean by pasting a command and its
> output?
>
> With the recent changes in the implementation of grafts, what happens
> is usually this:
>
> $ guix build foo
> updating the list of substitutes…
> The following things will be built/downloaded:
> …
>
> updating the list of substitutes…
> The following things will be built/downloaded:
> …
>
> The second stage here typically includes profile.drv as well as
> grafts. All this is expected behavior.

I think that since profile.drv is always produced locally on the
machine, then it's unnecessary to update the list of substitutes
when it's on that second stage.
L
L
Ludovic Courtès wrote on 26 Apr 2020 22:20
(name . pkill9)(address . pkill9@runbox.com)(address . 40381@debbugs.gnu.org)
87v9lmyp61.fsf@gnu.org
Hi,

pkill9 <pkill9@runbox.com> skribis:

Toggle quote (22 lines)
>> Can you show more precisely what you mean by pasting a command and its
>> output?
>>
>> With the recent changes in the implementation of grafts, what happens
>> is usually this:
>>
>> $ guix build foo
>> updating the list of substitutes…
>> The following things will be built/downloaded:
>> …
>>
>> updating the list of substitutes…
>> The following things will be built/downloaded:
>> …
>>
>> The second stage here typically includes profile.drv as well as
>> grafts. All this is expected behavior.
>
> I think that since profile.drv is always produced locally on the
> machine, then it's unnecessary to update the list of substitutes
> when it's on that second stage.

I don’t observe this, or rather I cannot blame profile.drv for this.

Can you show more precisely what you mean by pasting a command and its
output?

Thanks,
Ludo’.
P
P
pkill9 wrote on 27 Apr 2020 05:35
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 40381@debbugs.gnu.org)
20200427043512.4c400946@runbox.com
Hi,

Toggle quote (3 lines)
> Can you show more precisely what you mean by pasting a command and its
> output?

So it seems it tries to look for substitutes when the profile hooks are built,
not when profile.drv is built.

Here is the output without build hooks:
```
itsme@antelope ~> guix environment --ad-hoc hello
The following derivation will be built:
/gnu/store/gkz9hzjpc9pj1np7vi5pwb4xhmssk55d-profile.drv
building profile with 1 package...
Welcome to fish, the friendly interactive shell
itsme@antelope ~ [Guix env: /gnu/store/nsi48y..]>
```

And here is output with build hooks:
```
itsme@antelope ~> guix environment --ad-hoc man-db hello
substitute: updating substitutes from 'https://berlin.guixsd.org'... 100.0%
substitute: updating substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivation will be built:
/gnu/store/w623j5spid7kyxjdp6xbgxs2r5scpjkn-profile.drv
The following profile hooks will be built:
/gnu/store/14d1mgn1mwz66mj28rwjmnkddskf4zm0-info-dir.drv
/gnu/store/7rrkqrdpxahk8g0927d56lpgz3n1kl6z-manual-database.drv
/gnu/store/8h76m85hiyilv0mj053i9n7k2nxb0wf1-ca-certificate-bundle.drv
/gnu/store/ia5d18hpmza375dizljqi2x12zlirwqi-fonts-dir.drv
building CA certificate bundle...
building fonts directory...
building directory of Info manuals...
building database for manual pages...
building profile with 2 packages...
Welcome to fish, the friendly interactive shell
itsme@antelope ~ [Guix env: /gnu/store/9qv380..]>
```
L
L
Ludovic Courtès wrote on 1 May 2020 01:22
(name . pkill9)(address . pkill9@runbox.com)(address . 40381-done@debbugs.gnu.org)
877dxwimno.fsf@gnu.org
Hi,

pkill9 <pkill9@runbox.com> skribis:

Toggle quote (27 lines)
> So it seems it tries to look for substitutes when the profile hooks are built,
> not when profile.drv is built.
>
> Here is the output without build hooks:
> ```
> itsme@antelope ~> guix environment --ad-hoc hello
> The following derivation will be built:
> /gnu/store/gkz9hzjpc9pj1np7vi5pwb4xhmssk55d-profile.drv
> building profile with 1 package...
> Welcome to fish, the friendly interactive shell
> itsme@antelope ~ [Guix env: /gnu/store/nsi48y..]>
> ```
>
> And here is output with build hooks:
> ```
> itsme@antelope ~> guix environment --ad-hoc man-db hello
> substitute: updating substitutes from 'https://berlin.guixsd.org'... 100.0%
> substitute: updating substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> The following derivation will be built:
> /gnu/store/w623j5spid7kyxjdp6xbgxs2r5scpjkn-profile.drv
> The following profile hooks will be built:
> /gnu/store/14d1mgn1mwz66mj28rwjmnkddskf4zm0-info-dir.drv
> /gnu/store/7rrkqrdpxahk8g0927d56lpgz3n1kl6z-manual-database.drv
> /gnu/store/8h76m85hiyilv0mj053i9n7k2nxb0wf1-ca-certificate-bundle.drv
> /gnu/store/ia5d18hpmza375dizljqi2x12zlirwqi-fonts-dir.drv

Looks like manual-database.drv was the only hook not mark as
non-substitutable.

Fixed in 69de98391d720b92206d5e45072ecd3944d95774.

Thanks,
Ludo’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 40381@debbugs.gnu.org