Pierre Neidhardt writes: >> In practice only a subset of these grafts are applied because, for >> instance, Fish doesn’t depend (directly or indirectly) on Ghostscript at >> run time whereas it does depend on Perl: >> >> --8<---------------cut here---------------start------------->8--- >> $ guix gc -R $(guix build fish) | grep -E '(perl|ghostscript)' >> /gnu/store/7ifc22sh86zblnzamqimgmv06idyx69v-perl-5.26.1 >> --8<---------------cut here---------------end--------------->8--- > > Thanks for pointing out this nuance, I wasn't aware of it. > > But I still wonder: why is fish first built to > vgrav12zra9zky21ahm4x1qg8g4v58fj... and then immediately grafted to > avk637800w1n7z1z0hnzx80r0fpd6729... Why not building directly to > avk637800w1n7z1z0hnzx80r0fpd6729...? Grafting is independent of building a package. These are separate derivations. The first derivation is merely about building the package — it is unaware of the need for grafting. The second derivation only performs the graft. All it knows about is that it takes “vgrav12zra9zky21ahm4x1qg8g4v58fj” as an input and should produce “avk637800w1n7z1z0hnzx80r0fpd6729”. -- Ricardo