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>
Attachment:
signature.asc
Description: PGP signature