‘--with-input’ causes unintended rebuilds
(address . bug-Guix@gnu.org)
Hello,
Consider this example:
Toggle snippet (12 lines)
$ guix build glib -nd
/gnu/store/9zz9hvzaz06f40a4cbvhskb183x676w4-glib-2.60.6.drv
$ guix build glib --with-input=inkscape=libreoffice -nd
/gnu/store/15f9jkpakmsaz8i2a0gy4kir1zyk29vi-glib-2.60.6.drv
$ guix describe
Generacio 114 Nov 02 2019 11:32:51 (nuna)
guix ab1c063
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: ab1c063ab08e069fbe62919828fa634a2e222bbf
Since GLib does not depend on Inkscape, the ‘--with-input’ flag should
have no effect: we should get the same glib derivation. However, we’re
not.
If we diff the ‘glibc-2.60.6-guile-builder’ files of each derivation, we
see that the second one has a duplicate entry:
(define %build-inputs
`(…
("python" . "/gnu/store/78w7y0lxar70j512iqw8x3nimzj10yga-python-3.7.4")
("python" . "/gnu/store/78w7y0lxar70j512iqw8x3nimzj10yga-python-3.7.4")
…))
whereas the first one doesn’t have this duplicate entry. IOW, the two
derivations are functionally equivalent but are not bit-identical.
Indeed, evaluating:
(bag-transitive-inputs
(package->bag ((package-input-rewriting '()) glib)))
shows that we have two “python” packages there that are not ‘eq?’.
To be continued…
Ludo’.