Subject: bug#50696: [core-updates-frozen] Wrong output hashes computed since cb06f7c61e4b839

From: Marius Bakke <[email-masked]>
Date: Mon, 20 Sep 2021 11:37:48 +0200

Hello,

On the 'core-updates-frozen' branch, attempting to pull 'master' gives a
backtrace along the lines of ...

Computing Guix derivation for 'x86_64-linux'... |Backtrace:
In ice-9/boot-9.scm:
    152:2 19 (with-fluid* _ _ _)
    152:2 18 (with-fluid* _ _ _)
In ./guix/store.scm:
  2108:24 17 (run-with-store #<store-connection 256.99 7fbe31aac140> #<procedure 7fbe291da870 at ./guix/self.scm:13?> ?)
In ./guix/self.scm:
   1313:2 16 (_ #<store-connection 256.99 7fbe31aac140>)
In ./guix/packages.scm:
  1548:17 15 (_ #<store-connection 256.99 7fbe31aac140>)
  1177:16 14 (cache! #<weak-table 0/113> #<package [email-masked] 7fbe22baf8c0> ("x86_64-linux" . #t) #<procedure thunk?>)
  1495:22 13 (thunk)
  1428:25 12 (bag->derivation #<store-connection 256.99 7fbe31aac140> #<<bag> name: "guile-3.0.7" system: "x86_64-l?> ?)
In srfi/srfi-1.scm:
   586:17 11 (map1 (("source" #<origin "mirror://gnu/guile/guile-3.0.7.tar.xz" #<content-hash sha256:0h0i0040l0?>) ?))
In ./guix/packages.scm:
   1239:5 10 (failure)
In ice-9/boot-9.scm:
  1752:10  9 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In ./guix/packages.scm:
  1244:18  8 (_)
In ./guix/store.scm:
  2108:24  7 (run-with-store #<store-connection 256.99 7fbe31aac140> #<procedure 7fbe222a72d0 at ./guix/gexp.scm:26?> ?)
   1945:8  6 (_ #<store-connection 256.99 7fbe31aac140>)
/In ./guix/gexp.scm:
   275:18  5 (_ #<store-connection 256.99 7fbe31aac140>)
In ./guix/packages.scm:
   1603:5  4 (_ #<store-connection 256.99 7fbe31aac140>)
In ./guix/store.scm:
  1980:38  3 (_ #<store-connection 256.99 7fbe221cf690>)
In ./guix/derivations.scm:
   955:17  2 (derivation #<store-connection 256.99 7fbe221cf690> "guile-3.0.7.tar.xz" "builtin:download" () #:system ?)
In ./guix/store.scm:
   1058:9  1 (_ #<store-connection 256.99 7fbe221cf690> "guile-3.0.7.tar.xz.drv" #vu8(68 101 114 105 118 101 40 91 ?) ?)
In ice-9/boot-9.scm:
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
ERROR:
  1. &store-protocol-error:
      message: "derivation `/gnu/store/szv5fh043rrqq01xpycp7xci4y7myqfk-guile-3.0.7.tar.xz.drv' has incorrect output `/gnu/store/qwjhql8lqw40fqhaqw40jwqs0hc0248w-guile-3.0.7.tar.xz', should be `/gnu/store/0zliqv8lcw13f9iasy14kmwsqj3d309w-guile-3.0.7.tar.xz'"
      status: 1

I bisected it down to cb06f7c61e4b:

commit cb06f7c61e4b8393abf38f1f5891e03c33d53b9b
Author: Ludovic Courtès <[email-masked]>
Date:   Thu Sep 9 23:22:10 2021 +0200

    base32: Provide an open-coded 'bit-field'.

    This improves the throughput of 'bytevector->base32-string' a bit.

    * guix/base32.scm (bit-field): New macro.

It can be reproduced with a two-dimensional time machine:

  $ guix time-machine --branch=core-updates-frozen -- time-machine \
      --commit=cb06f7c61e4b8393abf38f1f5891e03c33d53b9b -- build hello

...or by pulling 'core-updates-frozen' and attempting to pull 'master'.

The commit was merged to 'core-updates-frozen' in 5c3cb22c9b281066, so
pulling core-updates-frozen -> core-updates-frozen also fails in a
similar manner (albeit on a different derivation).