Subject: Re: bug#23132: Grafted system retains references to original store items

From: [email-masked] (Ludovic Courtès)
Date: Fri, 20 May 2016 18:03:59 +0200

Mark H Weaver <[email-masked]> skribis:

> [email-masked] (Ludovic Courtès) writes:

[...]

>> What does “guix build glib” produce?  Is the “bin” output of “glib”
>> correctly grafted?
>
> It produces:
>
> /gnu/store/1my476c628x9kxa6pf2jlw8mhdlvr8xr-glib-2.46.1
> /gnu/store/yw2yjlc1mgb4ga6m28nazxwjfh1d2p1n-glib-2.46.1-bin
> /gnu/store/mm05frzzxa55kl062c4qp44qli00jnm4-glib-2.46.1-doc

The problem we have (also with currentish master) is that the grafted
glib refers to the non-grafted one:

--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix build glib --no-grafts
/gnu/store/nnbd3mbb7cyzj3f9hmm84jwmhslx8jd1-glib-2.48.0-bin
/gnu/store/ijpqwljxn2j9nimjqnds58m2dzlcxf1g-glib-2.48.0-doc
/gnu/store/6m4xdh1rj3np9w2fikf8wlq6lka1hmsg-glib-2.48.0
$ ./pre-inst-env guix build glib
/gnu/store/40s3d59ig936fnqivyps3fwjzgm6m864-glib-2.48.0-bin
/gnu/store/fc5pcy9cj4r8plf7sxhykz3k7z03p22y-glib-2.48.0-doc
/gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0
$ guix gc --references /gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0|grep glib-
/gnu/store/6m4xdh1rj3np9w2fikf8wlq6lka1hmsg-glib-2.48.0
/gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0
--8<---------------cut here---------------end--------------->8---

It took me a while to find out where that reference came from.  Since
‘grep -r’ returned nothing, I resorted to ‘guix archive --export’
searched for “6m4xdh1rj3np9w2fikf8wlq6lka1hmsg” in the result, and
found:

--8<---------------cut here---------------start------------->8---
$ find /gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0 -name \*gdb.py
/gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0/share/gdb/auto-load/gnu/store/6m4xdh1rj3np9w2fikf8wlq6lka1hmsg-glib-2.48.0/lib/libgobject-2.0.so.0.4800.0-gdb.py
/gnu/store/vvdqmpm5biq2x3pw4s142qpcla2ryvax-glib-2.48.0/share/gdb/auto-load/gnu/store/6m4xdh1rj3np9w2fikf8wlq6lka1hmsg-glib-2.48.0/lib/libglib-2.0.so.0.4800.0-gdb.py
--8<---------------cut here---------------end--------------->8---

So we need an extra pass in (guix build grafts) to rename files whose
name appears in the mapping.

I’ll try to get it done soonish.

Ludo’.