Subject: Re: [bug#28444] [PATCH 3/3] build-system: Add 'meson-build-system'.

From: Peter Mikkelsen <[email-masked]>
Date: Sat, 16 Sep 2017 19:06:03 +0200

2017-09-16 18:11 GMT+02:00 Ludovic Courtès <[email-masked]>:
>
> Hi Peter,
>
> Peter Mikkelsen <[email-masked]> skribis:
>
>
> [...]
>
> >> According to this description, half of it corresponds to the
> >> ‘validate-runpath’ phase, no?
> >
> > To my understanding 'validate-runpath' just checks and complains, but
> > this phase checks if it can find any dependencies in directories that
> > are local to the package, and if it can, it adds them to the runpath.
> > I have tried to update the description :)
>
> I see.  Out of curiosity, which libraries did you find to be present in
> RUNPATH but not in NEEDED?
>

I tried building a simple program, and using 'patchelf --print-needed'
i got this:

libuuid.so
libstdc++.so.6
libgcc_s.so.1
libc.so.6

and without the shrinking done, the runpath looks like this:

/gnu/store/8y6wd2rfi6p3gpxcz3p1gyzsbxwyc9ha-uuid-cpp-0.6.5.1/lib:$ORIGIN/:/gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25/lib:/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib/lib:/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.4.0/../../..

and with, it looks like this:

/gnu/store/nqdf6kr5cqfqh9z5yprar1yyfqwprj4v-uuid-cpp-0.6.5.1/lib:$ORIGIN/:/gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25/lib:/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib/lib

So the last part of the old runpath is removed, and looking at the
output of ldd, it seems like it was never needed:

linux-vdso.so.1 (0x00007ffd6cbe2000)
libuuid.so => /gnu/store/8y6wd2rfi6p3gpxcz3p1gyzsbxwyc9ha-uuid-cpp-0.6.5.1/lib/libuuid.so
(0x00007feae61bc000)
libstdc++.so.6 =>
/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib/lib/libstdc++.so.6
(0x00007feae5e42000)
libgcc_s.so.1 =>
/gnu/store/3x53yv4v144c9xp02rs64z7j597kkqax-gcc-5.4.0-lib/lib/libgcc_s.so.1
(0x00007feae5c2b000)
libc.so.6 => /gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25/lib/libc.so.6
(0x00007feae588c000)
libm.so.6 => /gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25/lib/libm.so.6
(0x00007feae557a000)
/gnu/store/n6nvxlk2j8ysffjh3jphn1k5silnakh6-glibc-2.25/lib/ld-linux-x86-64.so.2
(0x00007feae63c4000)

Now, I am not sure it is worth shrinking, but I just think it is a
little bit strange having unneeded directories in the runpath :)
While trying to build a gnome package, I noticed that the runpath was
huuuge before shrinking, but I don't have that package definition
anymore :/
We can see what happens when we update gnome :)
>
> I’d consider it a Meson bug (or a bug in how the package uses Meson) if
> test libraries are passed as -l when linking non-test binaries.
>

I don't know if this is what is happening, but on their side they
'fix' the runpath before install, which we don't.
If any problem arises I will be happy to give it a look, but in the
mean time, I think this will work :)

> At any rate, we should implement ‘shrink-runpath’ in (guix build
> gremlin) someday!

That would be awesome!
>
> > From 8185c2a154c7473d3b50351246cc83b792ec6a57 Mon Sep 17 00:00:00 2001
> > From: Peter Mikkelsen <[email-masked]>
> > Date: Wed, 13 Sep 2017 14:37:39 +0200
> > Subject: [PATCH] build-system: Add 'meson-build-system'.
> >
> > * Makefile.am (MODULES): Add 'guix/build-system/meson.scm' and
> >   'guix/build/meson-build-system.scm'.
> > * guix/build-system/meson.scm: New file.
> > * guix/build/meson-build-system.scm: New file.
> > * doc/guix.texi (Build Systems): Add 'meson-build-system'.
>
> Pushed with the changes below.
>
> Thank you!
>
> Now to upgrade GNOME?  :-)
Yes :) I will finish some ongoing Haskell work before giving it a shot
> Ludo’.

Thanks,
Peter