> Sent: Wednesday, November 11, 2020 at 7:30 AM
> From: "Ken Moffat via blfs-support" <[email protected]>
> To: "BLFS Support List" <[email protected]>
> Cc: "Ken Moffat" <[email protected]>
> Subject: Re: [blfs-support] libsoup will not build with sysprof
>
> On Tue, Nov 10, 2020 at 06:34:21PM +0100, Christopher Gregory via
> blfs-support wrote:
> > Hello,
> >
> > I am working through another installation, and have found that libsoup will
> > not compile against sysprof. The following error occurs:
> >
> > /usr/bin/ld: /usr/lib/libsysprof-capture-4.a(sysprof-collector.c.o): in
> > function `use_single_trace':
> > /sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:119:
> > undefined reference to `pthread_getspecific'
> >
> > The only way that I could get libsoup to compile and install was by going
> > into the meson_options.txt and setting the option to use sysprof to
> > disabled.
> >
> > Has anyone actually tested and got this combination to work?
> >
> > I notice that arch have dropped the need to make sysprof a requirement. I
> > have not found any patch to date to actually get it to work. I am using
> > the svn version of systemd blf from 2020-11-01. There has been no update
> > to sysprof so I could not see if a later version worked.
> >
>
> Hi, Christopher.
>
> I asked on -dev last month *why* sysprof was recommended. The
> answer was that if sysprof is not present, libsoup's build will now
> download and install it as a sub-module.
>
> In my case I'd had problems because of static modules (I hide them
> so that I know what needs to be rebuilt if a package has a
> vulnerability - the old, old zlib problem from years ago).
>
> For me, sysprof builds ok. It looks as if in your build it is not
> finding libpthread. I can't see any references to pthread i nthe
> meson files I looked at, but in verbose builds (ninja -v) it
> magically appears for me, in the case of sysprof I see it in
> -fPIC -pthread -DSYSPROF_CAPTURE_COMPILATION
> for the first target
> (src/libsysprof-capture/libsysprof-capture-4.a.p/sysprof-address.c.o).
>
> Quoting https://mesonbuild.com/howtox.html
>
> | Enable threads | | Lots of people seem to do this manually with
> | find_library('pthread') or something similar. Do not do that. It
> | is not portable. Instead do this.
> |
> | thread_dep = dependency('threads')
> | executable(..., dependencies : thread_dep)
>
> From that, the configuration information re 'threads' is what
> matters. Im my case (just before glib-2.0) -
>
> Program gdbus-codegen found: YES
> Found pkg-config: /usr/bin/pkg-config (0.29.2)
> Program gdbus-codegen found: YES
> Program gdbus-codegen found: YES
> Configuring sysprof-version.h using configuration
> Run-time dependency threads found: YES
> Run-time dependency glib-2.0 found: YES 2.66.2
>
> Did meson find it on your system ?
>
> I'm guessing that perhaps meson only looks for the header file.
>
> The library comes from glibc. In LFS we have a symlink from
> /usr/lib/libpthread.so to /lib. There is also a static lib (which I
> hide).
>
> > Re-installing sysprof made no difference to the above error. I have only
> > used the commands listed in the book and not added anything extra to the
> > build commands, ie nothing optional.
> >
> > Regards,
> >
> > Christopher.
>
> I'm sorry, I'm not well up on all the details of how meson works.
> But this seems an uncommon problem and makes me wonder if something
> has trashed either the /usr/lib/libpthread.so symlink or
> /lib/libpthread.so ? I would epect the static libpthread.a to get
> used, but this is all turning into guesses and hypotheses on my
> part.
>
> ĸen
> --
> Brave Sir Nigel ran away! When reality reared its ugly head, Sir
> Nigel turned his tail and fled. Brave brave brave Sir Nigel.
> --
> http://lists.linuxfromscratch.org/listinfo/blfs-support
> FAQ: http://www.linuxfromscratch.org/blfs/faq.html
> Unsubscribe: See the above information page
>
Hello Ken,
sysprof does successfully build and install for me. It is libsoup that is
allergic to sysprof. I have successfully build and installed libsoup, by
disabling the need for it in the meson_options.txt file in libsoup's source
code.
The mentioned symlink on my system looks like this:
lrwxrwxrwx 1 root root 25 Nov 2 20:32 /usr/lib/libpthread.so ->
../../lib/libpthread.so.0
I used jhalf to build lfs, as I always do.
I did not notice libsoup downloading anything even though it does indeed appear
in the sub-modules as a wrapper to download from git.
I just attempted the build of libsoup again, and added the -v switch to ninja
and these are the relevant lines:
/usr/bin/ld: /usr/lib/libsysprof-capture-4.a(sysprof-collector.c.o): in
function `use_single_trace':
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:119:
undefined reference to `pthread_getspecific'
/usr/bin/ld: /usr/lib/libsysprof-capture-4.a(sysprof-collector.c.o): in
function `sysprof_collector_get':
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:395:
undefined reference to `pthread_getspecific'
/usr/bin/ld:
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:413:
undefined reference to `pthread_setspecific'
/usr/bin/ld:
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:434:
undefined reference to `pthread_getspecific'
/usr/bin/ld:
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:438:
undefined reference to `pthread_setspecific'
/usr/bin/ld:
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:445:
undefined reference to `pthread_setspecific'
/usr/bin/ld: /usr/lib/libsysprof-capture-4.a(sysprof-collector.c.o): in
function `collector_init_cb':
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:465:
undefined reference to `pthread_key_create'
/usr/bin/ld:
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:467:
undefined reference to `pthread_key_create'
/usr/bin/ld: /usr/lib/libsysprof-capture-4.a(sysprof-collector.c.o): in
function `sysprof_collector_init':
/sources/sysprof-3.38.1/build/../src/libsysprof-capture/sysprof-collector.c:476:
undefined reference to `pthread_once'
collect2: error: ld returned 1 exit status
This is the relevant section in meson's options in libsoup's source tarball
that I changed from auto to disabled:
option('sysprof',
type: 'feature',
value: 'auto',
description: 'enable sysprof-capture support for profiling'
Perhaps that is why it did not get downloaded, and yet was able to successfully
build and install.
Regards,
Christopher
--
http://lists.linuxfromscratch.org/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page