GNU bug report logs - #30155
'bag-transitive-inputs' behaves non-deterministically

Previous Next

Package: guix;

Reported by: ludo <at> gnu.org (Ludovic Courtès)

Date: Thu, 18 Jan 2018 11:21:01 UTC

Severity: important

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 30155 in the body.
You can then email your comments to 30155 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#30155; Package guix. (Thu, 18 Jan 2018 11:21:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to ludo <at> gnu.org (Ludovic Courtès):
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Thu, 18 Jan 2018 11:21:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: bug-guix <at> gnu.org
Subject: 'bag-transitive-inputs' behaves non-deterministically
Date: Thu, 18 Jan 2018 12:20:38 +0100
On ‘core-updates’ (e80514bc03b003a7ce95d7b55cf33c9f18f9e860) I get:

--8<---------------cut here---------------start------------->8---
ludo <at> ribbon ~/src/guix/+core-updates$ make -q
make  all-recursive
make[1]: Entering directory '/home/ludo/src/guix/+core-updates'
Making all in po/guix
make[1]: Leaving directory '/home/ludo/src/guix/+core-updates'
ludo <at> ribbon ~/src/guix/+core-updates$ ./pre-inst-env guix build -e '(@@ (gnu packages commencement) static-bash-for-glibc)'  -d
/gnu/store/xymnr48xhdzvrw0cakhyn7hgapr4wiix-bash-static-4.4.12.drv
ludo <at> ribbon ~/src/guix/+core-updates$ rm gnu/packages/commencement.go 
ludo <at> ribbon ~/src/guix/+core-updates$ ./pre-inst-env guix build -e '(@@ (gnu packages commencement) static-bash-for-glibc)'  -d
;;; note: source file /home/ludo/src/guix/+core-updates/gnu/packages/commencement.scm
;;;       newer than compiled /run/current-system/profile/lib/guile/2.2/site-ccache/gnu/packages/commencement.go
;;; note: source file /home/ludo/src/guix/+core-updates/gnu/packages/commencement.scm
;;;       newer than compiled /run/current-system/profile/lib/guile/2.2/site-ccache/gnu/packages/commencement.go
;;; note: source file /home/ludo/src/guix/+core-updates/gnu/packages/commencement.scm
;;;       newer than compiled /run/current-system/profile/lib/guile/2.2/site-ccache/gnu/packages/commencement.go
;;; note: source file /home/ludo/src/guix/+core-updates/gnu/packages/commencement.scm
;;;       newer than compiled /home/ludo/.cache/guile/ccache/2.2-LE-8-3.A/home/ludo/src/guix/+core-updates/gnu/packages/commencement.scm.go
/gnu/store/crzz4z5k8hpdkbgzqvn7bz3rspq13gb5-bash-static-4.4.12.drv
--8<---------------cut here---------------end--------------->8---

The difference between these two derivations is the build script.  In
the second case, it reads this:

--8<---------------cut here---------------start------------->8---
  (define %build-inputs
    (quote
     (("source" . "/gnu/store/hl0xxmm8habnijw7y45dqsp9j5nqxq6i-bash-4.4.tar.xz")
      ("gcc" . "/gnu/store/a1qrh6iw7gj3f8m0d3v97xc4xrk2qbk9-gcc-cross-boot0-wrapped-5.5.0")
      ("libc" . "/gnu/store/b6mcmg1wmxz83hd9ffjwzxv9xdb0xsbm-glibc-intermediate-2.26.105-g0890d5379c")
      ("libc:static" . "/gnu/store/9gy08pnv20v1g1ldmqlsy07lhj2w77gi-glibc-intermediate-2.26.105-g0890d5379c-static")
      ("ld-wrapper-cross" . "/gnu/store/hmb02fkk0gv2j7l3kb4a1igy6cga7kbl-ld-wrapper-boot0-0")
      ("binutils-cross" . "/gnu/store/580ywwc0sr3l4dqj36a5jl5ad3yh760b-binutils-cross-boot0-2.28.1")
      ("make" . "/gnu/store/f7q38v9fh9zz27qinjwscqip8k7fkirs-make-boot0-4.2.1")
      ("diffutils" . "/gnu/store/96brzsaxvax24qwylwfhb2kjikbm3zhn-diffutils-boot0-3.6")
      ("findutils" . "/gnu/store/imjcbzjrp4jsvmrznc8xyhja28jgnflv-findutils-boot0-4.6.0")
      ("file" . "/gnu/store/b18smgaibx4kgbw9sdypdd5x5pxjif5j-file-boot0-5.32")
      ("coreutils&co" . "/gnu/store/wsb8hrijrss858p2ddwmqwg85z8q719c-bootstrap-binaries-0")
      ("bash" . "/gnu/store/wsb8hrijrss858p2ddwmqwg85z8q719c-bootstrap-binaries-0")
      ("kernel-headers" . "/gnu/store/yqahwgll57j88bq275m4xvifg9x3alsb-linux-libre-headers-4.9.59")
      ("kernel-headers" . "/gnu/store/yqahwgll57j88bq275m4xvifg9x3alsb-linux-libre-headers-4.9.59"))))
--8<---------------cut here---------------end--------------->8---

Notice the “kernel-headers” repetition, which is not in the correct
build script.

The repetition stems from the traversal done by ‘bag-transitive-inputs’,
which relies on pointer identity when comparing packages (via the ‘eq?’
vhash in ‘transitive-inputs’), and for some reason there are two non-eq?
linux-libre-headers packages encountered here.  ‘master’ doesn’t have
this problem.

FTR we had a similar issue in <http://bugs.gnu.org/20037> with PAM
services.

Incidentally, I discovered this bug while getting berlin.guixsd.org to
build ‘core-updates’: Cuirass there would exhibit the bug, and thus
berlin would end up building something different from what I have on my
laptop (and what hydra.gnu.org has.)

Ludo’.




Severity set to 'important' from 'normal' Request was from ludo <at> gnu.org (Ludovic Courtès) to control <at> debbugs.gnu.org. (Thu, 18 Jan 2018 14:32:03 GMT) Full text and rfc822 format available.

Reply sent to ludo <at> gnu.org (Ludovic Courtès):
You have taken responsibility. (Thu, 18 Jan 2018 17:10:01 GMT) Full text and rfc822 format available.

Notification sent to ludo <at> gnu.org (Ludovic Courtès):
bug acknowledged by developer. (Thu, 18 Jan 2018 17:10:02 GMT) Full text and rfc822 format available.

Message #12 received at 30155-done <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: 30155-done <at> debbugs.gnu.org
Subject: Re: bug#30155: 'bag-transitive-inputs' behaves non-deterministically
Date: Thu, 18 Jan 2018 18:09:09 +0100
ludo <at> gnu.org (Ludovic Courtès) skribis:

> Notice the “kernel-headers” repetition, which is not in the correct
> build script.
>
> The repetition stems from the traversal done by ‘bag-transitive-inputs’,
> which relies on pointer identity when comparing packages (via the ‘eq?’
> vhash in ‘transitive-inputs’), and for some reason there are two non-eq?
> linux-libre-headers packages encountered here.  ‘master’ doesn’t have
> this problem.

This is fixed by 8102cf0b37e100f760d25b500cf91ed38928615c, which makes
sure there’s only one “linux-libre-boot0” package object.

At some point we could change the way ‘transitive-inputs’ checks for
already-visited node, though I think it’d be hard to avoid relying on
eq?-ness.

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 16 Feb 2018 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 69 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.