[PATCH] tests: add FreeBSD dependencies

Pavel Hrdina phrdina at redhat.com
Thu Sep 3 11:49:11 UTC 2020


On Thu, Sep 03, 2020 at 03:21:51PM +0400, Roman Bogorodskiy wrote:
>   Daniel P. Berrangé wrote:
> 
> > On Thu, Sep 03, 2020 at 02:52:41PM +0400, Roman Bogorodskiy wrote:
> > >   Daniel P. Berrangé wrote:
> > > 
> > > > On Thu, Sep 03, 2020 at 02:21:37PM +0400, Roman Bogorodskiy wrote:
> > > > > Add some FreeBSD-specific libraries (-lutil, -lkvm) to tests dependencies.
> > > > > 
> > > > > Without that, FreeBSD 11.x, which uses the GNU ld, fails to link tests.
> > > > > Interestingly, newer FreeBSD versions that use LLVM ld tolerate this
> > > > > behaviour and builds successfully as is.
> > > > 
> > > > Hmm, we need a CI job for FreeBSD 11 added
> > > > 
> > > > Cirrus supports FreeBSD 11.4 so ought to be possible to add it to our
> > > > matrix.
> > > > 
> > > > > 
> > > > > Signed-off-by: Roman Bogorodskiy <bogorodskiy at gmail.com>
> > > > > ---
> > > > >  tests/meson.build | 2 ++
> > > > >  1 file changed, 2 insertions(+)
> > > > > 
> > > > > diff --git a/tests/meson.build b/tests/meson.build
> > > > > index ad13e2de60..ea2458efbc 100644
> > > > > --- a/tests/meson.build
> > > > > +++ b/tests/meson.build
> > > > > @@ -10,11 +10,13 @@ tests_dep = declare_dependency(
> > > > >      dlopen_dep,
> > > > >      glib_dep,
> > > > >      gnutls_dep,
> > > > > +    kvm_dep,
> > > > 
> > > > Makes sense, as we don't reference kvm_dep anywhere.
> > > > 
> > > > >      libnl_dep,
> > > > >      libxml_dep,
> > > > >      rpc_dep,
> > > > >      sasl_dep,
> > > > >      selinux_dep,
> > > > > +    util_dep,
> > > > 
> > > > In the top level meson.build, we appear to add -lutil as a linker
> > > > arg to the entire project, so i'm surprised this was needed.
> > > 
> > > -lutil was actually the first issue spotted, and when fixed, -lkvm
> > > showed up.
> > > 
> > > Here's the original report I got:
> > > 
> > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249056
> > > 
> > > It contains some initial thoughts on this issue; there I also assumed
> > > that add_global_link_arguments() could fix the issue, but was satisfied
> > > with the current solution.
> > 
> > Hmm, this is all very strange if I'm reading the the
> > add_project_link_arguments doc correctly it should apply to everything
> > we have. The difference between add_project and add_global  is just
> > about meson subprojects, but the tests are in our main project.
> > 
> > If add_project_link_arguments isn't working as we expect, we might be
> > better removing its use entirely in favour of explicitly adding the
> > _deps objects in the particular places they are needed.
> 
> I've just tried this change:
> 
> --- meson.build.orig    2020-09-03 11:14:20.233605000 +0000
> +++ meson.build 2020-09-03 11:14:43.661313000 +0000
> @@ -1405,7 +1405,7 @@
> 
>  util_dep = cc.find_library('util', required: false)
>  if util_dep.found()
> -  add_project_link_arguments('-lutil', language: 'c')
> +  add_global_link_arguments('-lutil', language: 'c')
>  endif
> 
>  if not get_option('virtualport').disabled()
> 
> It doesn't work, the build is still failing with it.

This is strange, after checking the freebsd bug there is -lutil and it
still fails which I don't understand:

[846/936] cc  -o tests/domaincapstest 'tests/59830eb@@domaincapstest at exe/domaincapstest.c.o'
-I/usr/local/include -L/usr/local/lib -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,-export-dynamic
-pie -Wl,--whole-archive -Wl,--start-group tests/libtest_utils.a tests/libtest_file_wrapper.a
-Wl,--no-whole-archive -lkvm -lintl -lutil -O2 -pipe -fstack-protector-strong -fno-strict-aliasing
                                       ^
                                       here you can see there is -lutil

                         ^ and here we have -lkvm as well

-fstack-protector -fstack-protector-strong src/libvirt.so.0.6007.0 src/bhyve/libvirt_driver_bhyve_impl.a
-Wl,-export-dynamic -ldl /usr/local/lib/libglib-2.0.so /usr/local/lib/libintl.so /usr/local/lib/libgobject-2.0.so
/usr/local/lib/libgio-2.0.so /usr/local/lib/libgnutls.so /usr/local/lib/libxml2.so -Wl,--end-group -Wl,-z,relro
-Wl,-z,now -Wl,-export-dynamic -Wl,-export-dynamic -Wl,-export-dynamic '-Wl,-rpath,$ORIGIN/../src:$ORIGIN/../src/bhyve'
-Wl,-rpath-link,/wrkdirs/usr/ports/devel/libvirt/work/libvirt-6.7.0/_build/src -Wl,-rpath-link,/wrkdirs/usr/ports/devel/libvirt/work/libvirt-6.7.0/_build/src/bhyve
FAILED: tests/domaincapstest
cc  -o tests/domaincapstest 'tests/59830eb@@domaincapstest at exe/domaincapstest.c.o' -I/usr/local/include
-L/usr/local/lib -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,-export-dynamic -pie -Wl,--whole-archive
-Wl,--start-group tests/libtest_utils.a tests/libtest_file_wrapper.a -Wl,--no-whole-archive -lkvm -lintl
-lutil -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -fstack-protector -fstack-protector-strong
src/libvirt.so.0.6007.0 src/bhyve/libvirt_driver_bhyve_impl.a -Wl,-export-dynamic -ldl /usr/local/lib/libglib-2.0.so
/usr/local/lib/libintl.so /usr/local/lib/libgobject-2.0.so /usr/local/lib/libgio-2.0.so /usr/local/lib/libgnutls.so
/usr/local/lib/libxml2.so -Wl,--end-group -Wl,-z,relro -Wl,-z,now -Wl,-export-dynamic -Wl,-export-dynamic
-Wl,-export-dynamic '-Wl,-rpath,$ORIGIN/../src:$ORIGIN/../src/bhyve' -Wl,-rpath-link,/wrkdirs/usr/ports/devel/libvirt/work/libvirt-6.7.0/_build/src
-Wl,-rpath-link,/wrkdirs/usr/ports/devel/libvirt/work/libvirt-6.7.0/_build/src/bhyve
/usr/bin/ld: undefined reference to symbol `expand_number' (try adding -lutil)
/usr/lib/libutil.so: could not read symbols: Bad value
cc: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
*** Error code 1

The fact that it compiles correctly on FreeBSD 12.x I'm not sure what's
going on here.

Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200903/4efc9a07/attachment-0001.sig>


More information about the libvir-list mailing list