Subject: bug#73371: guix system reconfigure -- hash mismatch for world

From: Simen Endsjø <[email-masked]>
Date: Thu, 19 Sep 2024 22:18:03 +0200

Trying to build my system after pulling the latest guix fails with

        sha256 hash mismatch for /tmp/guix-tests/store/53whz0jlbbbnk5cysp8xz3amx7njyass-world:
        expected hash: 0nq3k75cmck9v9giblhpqrgspbdjv6v019djk4x2jj0bn6zpvsvm
        actual hash:   0a7pd3rizm1qb3kz1ad1wzrijrhwsnq3lj7qprc86zp6a6r5drk8
        hash mismatch for store item '/tmp/guix-tests/store/53whz0jlbbbnk5cysp8xz3amx7njyass-world'

Full output

        The following derivation will be built:
        /gnu/store/k7mlmcfb81zi8lfgz215iacjkw2c8a3v-guix-1.4.0-25.e85f52e.drv

        84.0 MB will be downloaded
        font-gnu-unifont-15.1.05-pcf  2.6MiB                                                                               2.8MiB/s 00:01 ▕██████████████████▏ 100.0%
        bash  639KiB                                                                                                       4.5MiB/s 00:00 ▕██████████████████▏ 100.0%
        dbus-1.15.8-doc  1.1MiB                                                                                            5.8MiB/s 00:00 ▕██████████████████▏ 100.0%
        eudev-3.2.14-static  74KiB                                                                                         5.7MiB/s 00:00 ▕██████████████████▏ 100.0%
        font-gnu-unifont-15.1.05-bin  6.2MiB                                                                               4.5MiB/s 00:01 ▕██████████████████▏ 100.0%
        guile-2.0.9.tar.xz  2.8MiB                                                                                        11.1MiB/s 00:00 ▕██████████████████▏ 100.0%
        guile-2.0.9.tar.xz  2.5MiB                                                                                        25.6MiB/s 00:00 ▕██████████████████▏ 100.0%
        guix-1.4.0-25.e85f52e-checkout  12.9MiB                                                                           16.2MiB/s 00:01 ▕██████████████████▏ 100.0%
        ibus-1.5.29  8.4MiB                                                                                               16.3MiB/s 00:01 ▕██████████████████▏ 100.0%
        ibus-1.5.29-doc  194KiB                                                                                            4.2MiB/s 00:00 ▕██████████████████▏ 100.0%
        mesa-24.0.4-bin  6KiB                                                                                              3.4MiB/s 00:00 ▕██████████████████▏ 100.0%
        mkdir  326KiB                                                                                                      5.9MiB/s 00:00 ▕██████████████████▏ 100.0%
        network-manager-1.44.0-doc  424KiB                                                                                 2.8MiB/s 00:00 ▕██████████████████▏ 100.0%
        tar  601KiB                                                                                                       11.0MiB/s 00:00 ▕██████████████████▏ 100.0%
        udisks-2.8.4-doc  272KiB                                                                                           3.1MiB/s 00:00 ▕██████████████████▏ 100.0%
        xz  402KiB                                                                                                        20.8MiB/s 00:00 ▕██████████████████▏ 100.0%
        building /gnu/store/k7mlmcfb81zi8lfgz215iacjkw2c8a3v-guix-1.4.0-25.e85f52e.drv...
        - 'check' phase��@ build-log 15116 4096
        ��████████▏ 100.0%
        The following build is still in progress:
        /gnu/store/k7mlmcfb81zi8lfgz215iacjkw2c8a3v-guix-1.4.0-25.e85f52e.drv

        +     (let* ((d1 (derivation
        +                  %store
        +                  "fails"
        +                  %bash
        +                  `("-c" "false")
        +                  #:sources
        +                  (list %bash)))
        +            (d2 (build-expression->derivation
        +                  %store
        +                  "sleep-then-succeed"
        +                  `(begin ,(random-text) (sleep 2) (mkdir %output)))))
        +       (set-build-options
        +         %store
        +         #:use-substitutes?
        +         #f
        +         #:keep-going?
        +         #t)
        +       (guard (c ((store-protocol-error? c)
        +                  (and (= 100 (store-protocol-error-status c))
        +                       (string-contains
        +                         (store-protocol-error-message c)
        +                         (derivation-file-name d1))
        +                       (not (valid-path? %store (derivation->output-path d1)))
        +                       (valid-path? %store (derivation->output-path d2)))))
        +              (build-derivations %store (list d1 d2))
        +              #f))))
        actual-value: #t
        result: PASS

        test-name: identical files are deduplicated
        location: /tmp/guix-build-guix-1.4.0-25.e85f52e.drv-0/source/tests/derivations.scm:176
        source:
        + (test-assert
        +   "identical files are deduplicated"
        +   (let* ((data (make-string 9000 #\a))
        +          (build1
        +            (add-text-to-store
        +              %store
        +              "one.sh"
        +              (string-append "echo -n " data " > \"$out\"\n")
        +              '()))
        +          (build2
        +            (add-text-to-store
        +              %store
        +              "two.sh"
        +              (string-append
        +                "# Hey!\necho -n "
        +                data
        +                " > \"$out\"\n")
        +              '()))
        +          (drv1 (derivation
        +                  %store
        +                  "foo"
        +                  %bash
        +                  `(,build1)
        +                  #:sources
        +                  `(,%bash ,build1)))
        +          (drv2 (derivation
        +                  %store
        +                  "bar"
        +                  %bash
        +                  `(,build2)
        +                  #:sources
        +                  `(,%bash ,build2))))
        +     (and (build-derivations %store (list drv1 drv2))
        +          (let ((file1 (derivation->output-path drv1))
        +                (file2 (derivation->output-path drv2)))
        +            (and (valid-path? %store file1)
        +                 (valid-path? %store file2)
        +                 (string=?
        +                   (call-with-input-file file1 get-string-all)
        +                   data)
        +                 (= (stat:ino (lstat file1))
        +                    (stat:ino (lstat file2))))))))
        actual-value: #t
        result: PASS

        test-name: built-in-builders
        location: /tmp/guix-build-guix-1.4.0-25.e85f52e.drv-0/source/tests/derivations.scm:202
        source:
        + (test-equal
        +   "built-in-builders"
        +   '("download" "git-download")
        +   (built-in-builders %store))
        expected-value: ("download" "git-download")
        actual-value: ("download" "git-download")
        result: PASS

        test-name: unknown built-in builder
        location: /tmp/guix-build-guix-1.4.0-25.e85f52e.drv-0/source/tests/derivations.scm:206
        source:
        + (test-assert
        +   "unknown built-in builder"
        +   (let ((drv (derivation
        +                %store
        +                "ohoh"
        +                "builtin:does-not-exist"
        +                '())))
        +     (guard (c ((store-protocol-error? c)
        +                (string-contains
        +                  (store-protocol-error-message c)
        +                  "failed")))
        +            (build-derivations %store (list drv))
        +            #f)))
        actual-value: 75
        result: PASS

        test-name: 'download' built-in builder
        location: /tmp/guix-build-guix-1.4.0-25.e85f52e.drv-0/source/tests/derivations.scm:213
        source:
        + (test-assert
        +   "'download' built-in builder"
        +   (let ((text (random-text)))
        +     (with-http-server
        +       `((200 ,text))
        +       (let* ((drv (derivation
        +                     %store
        +                     "world"
        +                     "builtin:download"
        +                     '()
        +                     #:env-vars
        +      @ build-log 15116 4096
                    `(("url" unquote (object->string (%local-url))))
        +                     #:hash-algo
        +                     @ build-started /tmp/guix-tests/store/8bw9qsmpf17cpz1cwc20zwjf7jvhkry4-world.drv - x86_64-linux /tmp/guix-tests/var/log/guix/drvs/8b//w9qsmpf17cpz1cwc20zwjf7jvhkry4-world.drv.gz 10283

        Starting download of /tmp/guix-tests/store/53whz0jlbbbnk5cysp8xz3amx7njyass-world
        From http://localhost:42753/foo/bar...
        bar  13B                              36KiB/s 00:00 ▕██████████████████▏ 100.0%
        sha256 hash mismatch for /tmp/guix-tests/store/53whz0jlbbbnk5cysp8xz3amx7njyass-world:
        expected hash: 0nq3k75cmck9v9giblhpqrgspbdjv6v019djk4x2jj0bn6zpvsvm
        actual hash:   0a7pd3rizm1qb3kz1ad1wzrijrhwsnq3lj7qprc86zp6a6r5drk8
        hash mismatch for store item '/tmp/guix-tests/store/53whz0jlbbbnk5cysp8xz3amx7njyass-world'
        build of /tmp/guix-tests/store/8bw9qsmpf17cpz1cwc20zwjf7jvhkry4-world.drv failed
        Could not find build log for '/tmp/guix-tests/store/8bw9qsmpf17cpz1cwc20zwjf7jvhkry4-world.drv'.