Hello, Consider this example:
--8<---------------cut here---------------start------------->8--- $ 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 --8<---------------cut here---------------end--------------->8--- 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’.