[libvirt PATCH 000/351] port libvirt to Meson build system
Pavel Hrdina
phrdina at redhat.com
Fri Jul 17 19:16:03 UTC 2020
On Fri, Jul 17, 2020 at 05:16:00PM +0100, Daniel P. Berrangé wrote:
> On Fri, Jul 17, 2020 at 03:51:21PM +0100, Daniel P. Berrangé wrote:
> > On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> > > So I was finally able to produce the patches to port libvirt to Meson.
> > > Obviously, it is a lot of changes. It might look that some of the
> > > patches could be squashed together but I would rather have it as
> > > separated as possible to make the review not that difficult.
> > >
> > > Once we are done with review I suggest to squash all patches to single
> > > patch as it doesn't make sense to keep them separated as it will not be
> > > possible to build complete libvirt code by any of the build systems.
> > > Trying to achieve that would be even more challenging and the review
> > > would me more difficult.
> > >
> > > The reasoning behind taking this approach is to have 1:1 conversion from
> > > autotools to Meson where each patch removes that part from autotools. It
> > > serves as a check that nothing is skipped and to make sure that the
> > > conversion is complete.
> > >
> > > As probably most of us know Meson is completely different build system
> > > and one of the most challenging things was to deal with the fact that
> > > meson doesn't allow user functions and that everything has to be defined
> > > before it is used.
> > >
> > > Patches are available in my Gitlab repo as well:
> > >
> > > git clone -b meson https://gitlab.com/phrdina/libvirt.git
> >
> > I compared the contents of config.h and meson-config.h for the
> > before and after state, looking at wha "#define" are present.
> > I couple of problems appear
> >
> > HAVE_DECL_SEEK_HOLE, HAVE_LIBATTR, and HAVE_LIBUTIL, WITH_PM_UTILS
> > were not set in meson-config.h
>
> I have also compared symbols in the libvirt.so file
>
> Run:
>
> nm -a libvirt.so.0.6006.0 | cut -c18- | sort > a
>
> and then diff the autotools vs meson build, and we get
>
> 1a2,4
> > a admin_protocol.c
> > a admin_server.c
> > a admin_server_dispatch.c
>
> Dunno why these file names are listed as symbols now
Related to the admin symbols, I incorrectly added libvirt_admin_driver.a
static library into libvirt.so
> 738a742,743
> > d adminNProcs
> > d adminProcs
> 1436a1442
> > d virLogSelf
>
> Also dunno why we have a couple of new data symbols
All of them related to the admin issue.
> 6715a6763,6794
> > t adminClientClose
> > t adminClientGetInfo
> > t adminClientGetInfo.cold
> > t adminConnectListServers
> > t adminConnectLookupServer
> > t adminDispatchClientCloseHelper
> > t adminDispatchClientGetInfoHelper
> > t adminDispatchConnectCloseHelper
> > t adminDispatchConnectGetLibVersionHelper
> > t adminDispatchConnectGetLoggingFiltersHelper
> > t adminDispatchConnectGetLoggingOutputsHelper
> > t adminDispatchConnectListServersHelper
> > t adminDispatchConnectLookupServerHelper
> > t adminDispatchConnectOpenHelper
> > t adminDispatchConnectSetLoggingFiltersHelper
> > t adminDispatchConnectSetLoggingOutputsHelper
> > t adminDispatchServerGetClientLimitsHelper
> > t adminDispatchServerGetThreadpoolParametersHelper
> > t adminDispatchServerListClientsHelper
> > t adminDispatchServerLookupClientHelper
> > t adminDispatchServerSetClientLimitsHelper
> > t adminDispatchServerSetThreadpoolParametersHelper
> > t adminDispatchServerUpdateTlsFilesHelper
> > t adminServerGetClientLimits
> > t adminServerGetClientLimits.cold
> > t adminServerGetThreadPoolParameters
> > t adminServerGetThreadPoolParameters.cold
> > t adminServerListClients
> > t adminServerLookupClient
> > t adminServerSetClientLimits
> > t adminServerSetThreadPoolParameters
> > t adminServerUpdateTlsFiles
> 8392a8472
> > t make_nonnull_client
> 8525a8606,8609
> > t remoteAdmClientFree
> > t remoteAdmClientNew
> > t remoteAdmClientNewPostExecRestart
> > t remoteAdmClientPreExecRestart
>
> These are strange, as the admin stuff should be in
> libvirt-admin.so instead. Did some files get built
> into the wrong binary ?
As explained above, incorrect static library was linked into libvirt.so.
I'll fix it and push into gitlab.
> 12218a12303
> > t virFileActivateDirOverrideForProg.cold
>
> I guess this is new ?
No, my guess is that this is related to the rewrite by patch:
meson: src/util/virfile: rewrite virFileActivateDirOverrideForProg
> 14125,14126d14209
> < t virNodeSuspendSupportsTarget
> < t virNodeSuspendSupportsTarget.cold
>
> I think this is might be because meson failed to detect
> pm-utils which I already reported.
Already solved in different thread.
[...]
> 17039a17155
> > U g_getenv
>
> Seems due to a code change
Correct, patch changed the code of virFileActivateDirOverrideForProg:
meson: src/util/virfile: rewrite virFileActivateDirOverrideForProg
> 16961c17077
> < U fcntl@@GLIBC_2.2.5
> ---
> > U fcntl64@@GLIBC_2.28
> 16971c17087
> < U fopen@@GLIBC_2.2.5
> ---
> > U fopen64@@GLIBC_2.2.5
> 16980,16981c17096,17097
> < U ftruncate@@GLIBC_2.2.5
> < U __fxstat@@GLIBC_2.2.5
> ---
> > U ftruncate64@@GLIBC_2.2.5
> > U __fxstat64@@GLIBC_2.2.5
> 17030c17146
> < U getrlimit@@GLIBC_2.2.5
> ---
> > U getrlimit64@@GLIBC_2.2.5
> 17035d17150
> < U getxattr@@GLIBC_2.3
> 17236,17237c17352,17353
> < U lseek@@GLIBC_2.2.5
> < U __lxstat@@GLIBC_2.2.5
> ---
> > U lseek64@@GLIBC_2.2.5
> > U __lxstat64@@GLIBC_2.2.5
> 17292c17408,17409
> < U __open_2@@GLIBC_2.7
> ---
> > U __open64_2@@GLIBC_2.7
> > U open64@@GLIBC_2.2.5
> 17294d17410
> < U open@@GLIBC_2.2.5
> 17300c17416
> < U posix_fallocate@@GLIBC_2.2.5
> ---
> > U posix_fallocate64@@GLIBC_2.2.5
> 17302,17303c17418,17419
> < U pread@@GLIBC_2.2.5
> < U prlimit@@GLIBC_2.13
> ---
> > U pread64@@GLIBC_2.2.5
> > U prlimit64@@GLIBC_2.13
> 17337c17453
> < U readdir@@GLIBC_2.2.5
> ---
> > U readdir64@@GLIBC_2.2.5
> 17341d17456
> < U removexattr@@GLIBC_2.3
> 17385c17500
> < U setrlimit@@GLIBC_2.2.5
> ---
> > U setrlimit64@@GLIBC_2.2.5
> 17389d17503
> < U setxattr@@GLIBC_2.3
> 17443c17557
> < U statfs@@GLIBC_2.2.5
> ---
> > U statfs64@@GLIBC_2.2.5
> 17589c17703
> < U __xstat@@GLIBC_2.2.5
> ---
> > U __xstat64@@GLIBC_2.2.5
>
> These ones are pretty interesting.
>
> It appears we're setting -D_FILE_OFFSET_BITS=64 in meson, even though
> we're on a 64-bit platform already.
>
> IIUC, in autoconf we only set this in 32-bit platforms.
>
> I think this is probably harmless, as on 64-bit the "64" suffixed
> symbols should be identical to the non-"64" suffixed symbols. Just
> mention it in case it is a sign of a bug somewhere.
Meson adds the -D_FILE_OFFSET_BITS=64 regardless of 32-bit or 64-bit
platform [1]. So it's not a bug but intentional decision.
Thanks for the review.
Pavel
[1] <https://github.com/mesonbuild/meson/commit/853634a48da025c59eef70161dba0d150833f60d>
-------------- 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/20200717/2ba86e3a/attachment-0001.sig>
More information about the libvir-list
mailing list