Subject: bug#30952: Grafting sometimes include all the outputs of a package

From: Simon Tournier <[email-masked]>
Date: Mon, 16 Jun 2025 12:07:09 +0200

Hi Ludo

What is the status of this old bug

    https://issues.guix.gnu.org/issue/30952

?

On Mon, 26 Mar 2018 at 15:59, [email-masked] (Ludovic Courtès) wrote:

> I noticed my /run/current-system would depend on two different
> ‘network-manager’.
>
> Looking more closely, both are grafts, but the different is that the
> first one only has the “out” output while the other one has “out” and
> “doc”:
>
> $ guix gc --referrers "/gnu/store/ia69421l4wxny3k38zj5ql7bxsnasbfq-network-manager-1.8.4.drv"
> /gnu/store/68gfp5ac9rp4p9vsb0rrnvxa2fy1w4w9-profile.drv
> /gnu/store/6mivj4kfa7qx1z47f3kgfxfzm4148wwi-info-dir.drv
> /gnu/store/7skqpm8a0h6cvzwbj6m0zjjdgg676gm1-dbus-system-services.drv
> /gnu/store/84xhi03ikjcrr6vpkbvqy12a5s9imbxx-etc-polkit-1.drv
> /gnu/store/8gcq4gvghnp830kz9rs4ra9b8m8cggmn-dbus-configuration.drv
> /gnu/store/c40mizbls6b91jifib2z9xhasqc2m45f-xdg-desktop-database.drv
> /gnu/store/dc1vrv9jf8bf1dl94v8k04rjv69rjc6s-ca-certificate-bundle.drv
> /gnu/store/hbzq0f0fmfylv380k315j56qpqj7hpbi-shepherd-networking.scm.drv
> /gnu/store/jhdxpzj8f4ar8bp8pi3nvjn4fkiqg3d5-manual-database.drv
> /gnu/store/q94jkh8vf6sdvx9lg9gx9z6nans85sai-fonts-dir.drv
> /gnu/store/yz5mp49js753xcidl20lddl5xq2i2c9f-xdg-mime-database.drv
> $ guix gc --referrers "/gnu/store/gpvbfa0bgz5v0n4lcyv0mp3mh44p8dvy-network-manager-1.8.4.drv"
> /gnu/store/332xw1rgi24v7vf3m8v8wgzbn34n037a-network-manager-applet-1.8.4.drv
> /gnu/store/m2j527i7mfvh6zayx3yn4jv64hqw28s0-network-manager-openvpn-1.8.0.drv
> $ head -c 50 "/gnu/store/ia69421l4wxny3k38zj5ql7bxsnasbfq-network-manager-1.8.4.drv"
> Derive([("doc","/gnu/store/53lsazvjjsf6ib0s2cgxrqn$
> $ head -c 50  "/gnu/store/gpvbfa0bgz5v0n4lcyv0mp3mh44p8dvy-network-manager-1.8.4.drv"
> Derive([("out","/gnu/store/hsy71fkli9blh34np008j3j
>
> I believe this is because the optimization in commit
> 482fda2729c3e76999892cb8f9a0391a7bd37119 work as expected when the graft
> is used as a package input, but doesn’t fire when the package is used in
> a gexp for instance.
>
> That’s because ‘package-compiler’ calls ‘package-derivation’, which
> doesn’t specify which output(s) we’re interested in.

It contains this unique message from 2018. :-)

Cheers,
simon