Subject: bug#19973: Grafts break debug outputs

From: Mark H Weaver <[email-masked]>
Date: Sun, 01 Mar 2015 00:24:57 -0500

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

> Grafts break debug outputs, or at least that's my guess.
> Here's what I see:
>
> mhw@jojen:~$ guix build guile
> guix build: warning: ambiguous package specification `guile'
> guix build: warning: choosing guile-2.0.11 from gnu/packages/guile.scm:110:2
> /gnu/store/3lhr8q28q6f59774di9av7ncy09jd55d-guile-2.0.11
> /gnu/store/rgv3fvy6xqp6966rfh8v6fv7m48abcbh-guile-2.0.11-debug
> mhw@jojen:~$ guix package -I guile
> guile	2.0.11	out	/gnu/store/3lhr8q28q6f59774di9av7ncy09jd55d-guile-2.0.11
> guile	2.0.11	debug	/gnu/store/rgv3fvy6xqp6966rfh8v6fv7m48abcbh-guile-2.0.11-debug
> mhw@jojen:~$ ls -l .guix-profile/lib/debug/gnu/store/
> total 8
> lrwxrwxrwx 12 root guixbuild 128 Dec 31 1969
> 122jv790mv2mlnylbrbzav65vghbw93n-guile-2.0.11 ->
> /gnu/store/rgv3fvy6xqp6966rfh8v6fv7m48abcbh-guile-2.0.11-debug/lib/debug/gnu/store/122jv790mv2mlnylbrbzav65vghbw93n-guile-2.0.11
> lrwxrwxrwx 15 root guixbuild 127 Dec 31 1969
> 3g20rdmnavpblsmgppyl8jhg67nidhjk-glibc-2.20 ->
> /gnu/store/hrny2whqg9c3m0klyfpbmmcyiir9yf8m-gcc-toolchain-4.9.2/lib/debug/gnu/store/3g20rdmnavpblsmgppyl8jhg67nidhjk-glibc-2.20
>
> I guess GDB can't find the debugging information because
> 122jv790mv2mlnylbrbzav65vghbw93n-guile-2.0.11 is the name of the guile
> directory *before* grafting.
>
> To work around this, I created my own ~/mydebug directory:
>
> mhw@jojen:~/mydebug/gnu/store$ ln -s
> /gnu/store/rgv3fvy6xqp6966rfh8v6fv7m48abcbh-guile-2.0.11-debug/lib/debug/gnu/store/122jv790mv2mlnylbrbzav65vghbw93n-guile-2.0.11
> 3lhr8q28q6f59774di9av7ncy09jd55d-guile-2.0.11
>
> and then pointed GDB at ~/mydebug and then debugging works again.

I've since discovered that because our grafting is not done properly,
for now we need symbolic links for both the pre-grafted and post-grafted
directories.

I installed libgc:debug and then created a proper symlink in ~/mydebug,
but because our guile is still linked against the pre-grafted libgc, we
need a symbolic link with the pre-grafted name.  So here's what I have
now:

mhw@jojen:~/mydebug/gnu/store$ ls -l
total 12
lrwxrwxrwx 1 mhw mhw 128 Mar  1 00:00 3lhr8q28q6f59774di9av7ncy09jd55d-guile-2.0.11 -> /gnu/store/rgv3fvy6xqp6966rfh8v6fv7m48abcbh-guile-2.0.11-debug/lib/debug/gnu/store/122jv790mv2mlnylbrbzav65vghbw93n-guile-2.0.11
lrwxrwxrwx 1 mhw mhw 126 Mar  1 00:18 h6byyxpii73xlbhiq5lxfq3n6qzqwsif-libgc-7.4.2 -> /gnu/store/k0xjv8l196j4nxgbz8dxz6xz7kbysaix-libgc-7.4.2-debug/lib/debug/gnu/store/zshjm1ilbzz0z0zpxr17h13jnmilga7l-libgc-7.4.2
lrwxrwxrwx 1 mhw mhw 126 Mar  1 00:21 zshjm1ilbzz0z0zpxr17h13jnmilga7l-libgc-7.4.2 -> /gnu/store/k0xjv8l196j4nxgbz8dxz6xz7kbysaix-libgc-7.4.2-debug/lib/debug/gnu/store/zshjm1ilbzz0z0zpxr17h13jnmilga7l-libgc-7.4.2

       Mark