Subject: Re: bug#25414: [email-masked] does not build deterministically

From: [email-masked] (Ludovic Courtès)
Date: Thu, 12 Jan 2017 14:14:59 +0100

Hi Danny,

Danny Milosavljevic <[email-masked]> skribis:

>> Sounds like the right approach, would you like to test it?  :-)
>
> In principle yes,

I mean, can you apply the patch and build it with:

  guix build gdk-pixbuf --rounds=2 -K

?

> but even without the patch I get (using current master):
>
> $ ./pre-inst-env  guix challenge gdk-pixbuf --substitute-urls="https://mirror.hydra.gnu.org https://bayfront.guixsd.org"

[...]

>  575: 2 [map #<procedure 74335a0 at guix/scripts/challenge.scm:125:46 (t-1367901)> ...]
> In guix/scripts/substitute.scm:
>  687: 1 [lookup-narinfos "\"https://mirror.hydra.gnu.org" #]
>  659: 0 [fetch-narinfos "\"https://mirror.hydra.gnu.org" #]
>
> guix/scripts/substitute.scm:659:16: In procedure fetch-narinfos:
> guix/scripts/substitute.scm:659:16: In procedure struct_vtable: Wrong type argument in position 1 (expecting struct): #f

Hmm hmm!  Is it reproducible (it works for me)?  If so, could you try to
see where the problem comes from by adding ‘pk’ calls like this:

--8<---------------cut here---------------start------------->8---
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 524b019a3..26ed81318 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -657,10 +657,10 @@ if file doesn't exist, and the narinfo otherwise."
 
   (let-values (((cache-info port)
                 (download-cache-info url)))
-    (and cache-info
+    (and (pk 'cache-info cache-info)
          (if (string=? (cache-info-store-directory cache-info)
                        (%store-prefix))
-             (do-fetch (string->uri url) port)    ;reuse PORT
+             (do-fetch (pk 'uri (string->uri url)) port)  ;reuse PORT
              (begin
                (warning (_ "'~a' uses different store '~a'; ignoring it~%")
                         url (cache-info-store-directory cache-info))
--8<---------------cut here---------------end--------------->8---

Thanks,
Ludo’.