Guix shouldn't request substitutes for profile derivations

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • pkill9
Owner
unassigned
Submitted by
pkill9
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 an email to 40381@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 40381
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch