guix still building when substitute is available (or is guix pull not reproducible)

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Pjotr Prins
Owner
unassigned
Submitted by
Pjotr Prins
Severity
normal
P
P
Pjotr Prins wrote on 5 Nov 2018 17:26
(address . bug-guix@gnu.org)
20181105162651.wss2ex6msdbzrwir@thebird.nl
I have a guix-publish server and I am building the packages with the
exact same checkout of 'guix pull'. Even though the client sees the
substitutes with --dry-run it still builds them.

On build host (check version first)

penguin2:~$ ~/.config/guix/current/bin/guix --version
guix (GNU Guix) ff349415b27cc764fd7168ef35ca76c3b8b05889

Copyright (C) 2018 the Guix authors

penguin2:~$ ~/.config/guix/current/bin/guix package -i perl mosh --substitute-urls="https://berlin.guixsd.org" --fallback

building /gnu/store/ih5liw094mkjg1n4qakipfdgmrhvpj68-protobuf-3.5.1.drv...
building /gnu/store/bhrgmk0xax0yl50whb8faankknw4z254-mosh-1.3.2.drv...
The following packages will be installed:
perl 5.26.1 /gnu/store/7ifc22sh86zblnzamqimgmv06idyx69v-perl-5.26.1
mosh 1.3.2 /gnu/store/5qanifm23gqxhg2bh587dzah0mf79fp0-mosh-1.3.2

On client (check version first)

monza:~$ ~/.config/guix/current/bin/guix --version
guix (GNU Guix) ff349415b27cc764fd7168ef35ca76c3b8b05889

Copyright (C) 2018 the Guix authors

monza:~$ ~/.config/guix/current/bin/guix package -i perl mosh --substitute-urls="http://guix.genenetwork.org https://berlin.guixsd.org" --dry-run
The following packages would be installed:
perl 5.26.1 /gnu/store/6zz27h4l21b8f2mifrk9sidvib9cns2i-perl-5.26.1
mosh 1.3.2 /gnu/store/dkpkd7ajh3kvpzfdfacqg50x49i78x5y-mosh-1.3.2

Strangely the hash values differ but it still wants to fetch them. But when I do an actual install it rebuilds:

monza:~$ ~/.config/guix/current/bin/guix package -i perl mosh --substitute-urls="http://guix.genenetwork.org https://berlin.guixsd.org"
building /gnu/store/ih5liw094mkjg1n4qakipfdgmrhvpj68-protobuf-3.5.1.drv...

What is causing the difference? Should the guix pull not be identical
when it is the same checkout? Or am I missing something.

Obviously this does not work for my deployment purposes. Or at least
it is limited in use if I can't use a 'guix publish' server. Showing
the faulty substitutes is also interesting behaviour...
L
L
Ludovic Courtès wrote on 6 Nov 2018 15:21
(name . Pjotr Prins)(address . pjotr.public12@thebird.nl)(address . 33276@debbugs.gnu.org)
877ehq1e3a.fsf@gnu.org
Hello,

Pjotr Prins <pjotr.public12@thebird.nl> skribis:

Toggle quote (33 lines)
> I have a guix-publish server and I am building the packages with the
> exact same checkout of 'guix pull'. Even though the client sees the
> substitutes with --dry-run it still builds them.
>
> On build host (check version first)
>
> penguin2:~$ ~/.config/guix/current/bin/guix --version
> guix (GNU Guix) ff349415b27cc764fd7168ef35ca76c3b8b05889
>
> Copyright (C) 2018 the Guix authors
>
> penguin2:~$ ~/.config/guix/current/bin/guix package -i perl mosh --substitute-urls="https://berlin.guixsd.org" --fallback
>
> building /gnu/store/ih5liw094mkjg1n4qakipfdgmrhvpj68-protobuf-3.5.1.drv...
> building /gnu/store/bhrgmk0xax0yl50whb8faankknw4z254-mosh-1.3.2.drv...
> The following packages will be installed:
> perl 5.26.1 /gnu/store/7ifc22sh86zblnzamqimgmv06idyx69v-perl-5.26.1
> mosh 1.3.2 /gnu/store/5qanifm23gqxhg2bh587dzah0mf79fp0-mosh-1.3.2
>
> On client (check version first)
>
> monza:~$ ~/.config/guix/current/bin/guix --version
> guix (GNU Guix) ff349415b27cc764fd7168ef35ca76c3b8b05889
>
> Copyright (C) 2018 the Guix authors
>
> monza:~$ ~/.config/guix/current/bin/guix package -i perl mosh --substitute-urls="http://guix.genenetwork.org https://berlin.guixsd.org" --dry-run
> The following packages would be installed:
> perl 5.26.1 /gnu/store/6zz27h4l21b8f2mifrk9sidvib9cns2i-perl-5.26.1
> mosh 1.3.2 /gnu/store/dkpkd7ajh3kvpzfdfacqg50x49i78x5y-mosh-1.3.2
>
> Strangely the hash values differ but it still wants to fetch them. But when I do an actual install it rebuilds:

When you’re using --dry-run, what gets displayed is the file names of
the ungrafted packages. That’s why you see different file names in the
first case.

As to why you’re not getting substitutes, it could be missing
authorization, etc. What does ‘guix publish’ display?

Thanks,
Ludo’.
P
P
Pjotr Prins wrote on 8 Nov 2018 19:30
(name . Ludovic Courtès)(address . ludo@gnu.org)
20181108183039.a6drroqcswwd7rl5@thebird.nl
On Tue, Nov 06, 2018 at 03:21:29PM +0100, Ludovic Courtès wrote:
Toggle quote (3 lines)
> As to why you’re not getting substitutes, it could be missing
> authorization, etc. What does ‘guix publish’ display?

Substitutes work fine for normal package install. No problem with the
setup. No, this is specific to guix pull with a commit flag.

Did you try this yourself? It is reproducible as a problem.

Could it theoretically be possible that guix pull with a specific
commit set done at different time points leads to a different build?
I.e., is the underlying build system not a variable (bootstrap and all
that)?

When I have time I'll try that guix pull twice. See what happens.

Pj.
?