Subject: Re: bug#27032: make check fails for Guix 0.13.0

From: [email-masked] (Ludovic Courtès)
Date: Wed, 24 May 2017 13:44:09 +0200

Hi William,

William <[email-masked]> skribis:

> I am trying to do a fresh install of GuixSD 0.13.0 (using UEFI if it's
> important), after running "guix system init /mnt/etc/config.scm /mnt"
> the "make check" stage of guix fails.

There was one problem, which is that substitutes for the ‘guix’ package
itself were missing.  This is now fixed, meaning that if you install
GuixSD 0.13.0 now, you won’t have to build ‘guix’.

Could you try again?

> test-name: dead path can be explicitly collected
> location: /tmp/guix-build-guix-0.13.0.drv-0/source/tests/store.scm:178
> source:
> + (test-assert
> +   "dead path can be explicitly collected"
> +   (let ((p (add-text-to-store
> +              %store
> +              "random-text"
> +              (random-text)
> +              '())))
> +     (let-values
> +       (((paths freed) (delete-paths %store (list p))))
> +       (and (equal? paths (list p))
> +            (> freed 0)
> +            (not (file-exists? p))))))
> actual-value: #f
> result: FAIL

[...]

> test-name: verify-store + check-contents
> location: /tmp/guix-build-guix-0.13.0.drv-0/source/tests/store.scm:815
> source:
> + (test-assert
> +   "verify-store + check-contents"
> +   (with-store
> +     s
> +     (let* ((text (random-text))
> +            (drv (build-expression->derivation
> +                   s
> +                   "corrupt"
> +                   `(let ((out (assoc-ref %outputs "out")))
> +                      (call-with-output-file
> +                        out
> +                        (lambda (port) (display ,text port)))
> +                      #t)
> +                   #:guile-for-build
> +                   (package-derivation
> +                     s
> +                     %bootstrap-guile
> +                     (%current-system))))
> +            (file (derivation->output-path drv)))
> +       (with-derivation-substitute
> +         drv
> +         text
> +         (and (build-derivations s (list drv))
> +              (verify-store s #:check-contents? #t)
> +              (begin
> +                (chmod file 420)
> +                (call-with-output-file
> +                  file
> +                  (lambda (port) (display "corrupt!" port)))
> +                #t)
> +              (not (verify-store s #:check-contents? #t))
> +              (delete-paths s (list file)))))))
> actual-value: #f
> actual-error:
> + (srfi-34
> +   #<condition &nix-protocol-error [message: "path `dtmp/guix-tests/store/462z3fnl7bs44vp9s97jyg1z74nsfvly-tar' is not in the Nix store" status: 1] e171e0>)
> result: FAIL

I’m surprised by the “dtmp” prefix here.   It should be
“/tmp/guix-tests”.  Was the log altered in some way?

Apart from that it’s hard to draw any conclusions.  We run these tests
very often without problems.  The difference here is that the GuixSD
installation system uses unionfs-fuse for its root file system, and I
suspect that file system could have slightly different semantics that
bite here.  We’ll have to investigate this.

Thanks for your report!

Ludo’.