[libvirt PATCH 000/351] port libvirt to Meson build system

Pavel Hrdina posted 351 patches 3 years, 9 months ago
Test syntax-check failed
Failed in applying to current master (apply log)
There is a newer version of this series
.gitignore                                    |   21 -
.gitlab-ci.yml                                |   71 +-
CONTRIBUTING.rst                              |    9 +-
GNUmakefile                                   |   74 -
Makefile.am                                   |  180 --
autogen.sh                                    |   53 -
build-aux/Makefile.in                         |    9 +
.../Makefile.nonreentrant                     |    0
build-aux/meson.build                         |   30 +
build-aux/syntax-check.mk                     |  120 +-
ci/aarch64-linux-gnu.meson                    |   11 +
ci/arm-linux-gnueabi.meson                    |   11 +
ci/arm-linux-gnueabihf.meson                  |   11 +
ci/cirrus/build.yml                           |   12 +-
ci/cirrus/libvirt-freebsd-12.vars             |    4 +-
ci/cirrus/libvirt-macos-1015.vars             |    4 +-
ci/containers/libvirt-centos-7.Dockerfile     |    2 +-
ci/containers/libvirt-centos-8.Dockerfile     |    4 +-
.../libvirt-centos-stream.Dockerfile          |    4 +-
...libvirt-debian-10-cross-aarch64.Dockerfile |    5 +-
.../libvirt-debian-10-cross-armv6l.Dockerfile |    6 +-
.../libvirt-debian-10-cross-armv7l.Dockerfile |    6 +-
.../libvirt-debian-10-cross-i686.Dockerfile   |    5 +-
.../libvirt-debian-10-cross-mips.Dockerfile   |    5 +-
...ibvirt-debian-10-cross-mips64el.Dockerfile |    5 +-
.../libvirt-debian-10-cross-mipsel.Dockerfile |    5 +-
...libvirt-debian-10-cross-ppc64le.Dockerfile |    5 +-
.../libvirt-debian-10-cross-s390x.Dockerfile  |    5 +-
ci/containers/libvirt-debian-10.Dockerfile    |    4 +-
...ibvirt-debian-sid-cross-aarch64.Dockerfile |    5 +-
...libvirt-debian-sid-cross-armv6l.Dockerfile |    6 +-
...libvirt-debian-sid-cross-armv7l.Dockerfile |    6 +-
.../libvirt-debian-sid-cross-i686.Dockerfile  |    5 +-
...bvirt-debian-sid-cross-mips64el.Dockerfile |    5 +-
...libvirt-debian-sid-cross-mipsel.Dockerfile |    6 +-
...ibvirt-debian-sid-cross-ppc64le.Dockerfile |    5 +-
.../libvirt-debian-sid-cross-s390x.Dockerfile |    5 +-
ci/containers/libvirt-debian-sid.Dockerfile   |    4 +-
ci/containers/libvirt-fedora-31.Dockerfile    |    4 +-
ci/containers/libvirt-fedora-32.Dockerfile    |    4 +-
...rt-fedora-rawhide-cross-mingw32.Dockerfile |    4 +-
...rt-fedora-rawhide-cross-mingw64.Dockerfile |    4 +-
.../libvirt-fedora-rawhide.Dockerfile         |    4 +-
ci/containers/libvirt-opensuse-151.Dockerfile |    2 +-
ci/containers/libvirt-ubuntu-1804.Dockerfile  |    2 +-
ci/containers/libvirt-ubuntu-2004.Dockerfile  |    4 +-
ci/i686-linux-gnu.meson                       |   11 +
ci/mips-linux-gnu.meson                       |   11 +
ci/mips64el-linux-gnuabi64.meson              |   11 +
ci/mipsel-linux-gnu.meson                     |   11 +
ci/powerpc64le-linux-gnu.meson                |   11 +
ci/s390x-linux-gnu.meson                      |   11 +
config-post.h => config.h                     |   25 +-
configmake.h.in                               |   16 +
configure.ac                                  | 1063 -------
docs/Makefile.am                              |  522 ----
docs/advanced-tests.rst                       |   14 +-
docs/best-practices.rst                       |    2 +-
docs/committer-guidelines.rst                 |    6 +-
docs/compiling.html.in                        |   40 +-
docs/fonts/meson.build                        |   24 +
docs/hacking.rst                              |    4 +-
docs/html/meson.build                         |  101 +
docs/internals/meson.build                    |   35 +
docs/js/meson.build                           |   13 +
docs/kbase/meson.build                        |   44 +
docs/logging.html.in                          |    2 +-
docs/logos/meson.build                        |   31 +
docs/manpages/{index.rst => index.rst.in}     |    0
.../{libvirtd.rst => libvirtd.rst.in}         |    0
docs/manpages/meson.build                     |  129 +
docs/manpages/{virsh.rst => virsh.rst.in}     |    0
.../{virt-admin.rst => virt-admin.rst.in}     |    0
...validate.rst => virt-host-validate.rst.in} |    0
...ogin-shell.rst => virt-login-shell.rst.in} |    0
...-validate.rst => virt-pki-validate.rst.in} |    0
...virt-qemu-run.rst => virt-qemu-run.rst.in} |    0
...leanup.rst => virt-sanlock-cleanup.rst.in} |    0
...-validate.rst => virt-xml-validate.rst.in} |    0
.../{virtlockd.rst => virtlockd.rst.in}       |    0
.../{virtlogd.rst => virtlogd.rst.in}         |    0
docs/meson.build                              |  319 +++
docs/schemas/meson.build                      |   26 +
docs/strategy.html.in                         |   27 +-
docs/windows.html.in                          |   18 +-
examples/Makefile.am                          |  135 -
examples/c/admin/meson.build                  |   27 +
examples/c/domain/meson.build                 |   24 +
examples/c/meson.build                        |    3 +
examples/c/misc/meson.build                   |   22 +
examples/meson.build                          |    7 +
examples/polkit/meson.build                   |    1 +
examples/sh/meson.build                       |    1 +
examples/systemtap/lock-debug.stp             |    2 +-
examples/systemtap/meson.build                |    9 +
examples/xml/meson.build                      |    2 +
examples/xml/storage/meson.build              |   15 +
examples/xml/test/meson.build                 |   14 +
include/libvirt/Makefile.am                   |   28 -
include/libvirt/meson.build                   |   36 +
include/meson.build                           |    3 +
libvirt.spec.in                               |  203 +-
m4/virt-acl.m4                                |   37 -
m4/virt-apparmor.m4                           |   41 -
m4/virt-arg.m4                                |  154 --
m4/virt-attr.m4                               |   13 -
m4/virt-audit.m4                              |   31 -
m4/virt-bash-completion.m4                    |   70 -
m4/virt-blkid.m4                              |   30 -
m4/virt-capng.m4                              |   30 -
m4/virt-chrdev-lock-files.m4                  |   52 -
m4/virt-compile-pie.m4                        |   35 -
m4/virt-compile-warnings.m4                   |  255 --
m4/virt-curl.m4                               |   38 -
m4/virt-dbus.m4                               |   41 -
m4/virt-debug.m4                              |   33 -
m4/virt-default-editor.m4                     |   32 -
m4/virt-devmapper.m4                          |   32 -
m4/virt-dlopen.m4                             |   45 -
m4/virt-driver-bhyve.m4                       |   56 -
m4/virt-driver-esx.m4                         |   57 -
m4/virt-driver-hyperv.m4                      |   47 -
m4/virt-driver-interface.m4                   |   49 -
m4/virt-driver-libvirtd.m4                    |   33 -
m4/virt-driver-libxl.m4                       |   74 -
m4/virt-driver-lxc.m4                         |   74 -
m4/virt-driver-modules.m4                     |   53 -
m4/virt-driver-network.m4                     |   51 -
m4/virt-driver-openvz.m4                      |   42 -
m4/virt-driver-qemu.m4                        |  132 -
m4/virt-driver-remote.m4                      |   48 -
m4/virt-driver-test.m4                        |   33 -
m4/virt-driver-vbox.m4                        |   44 -
m4/virt-driver-vmware.m4                      |   33 -
m4/virt-driver-vz.m4                          |   47 -
m4/virt-dtrace.m4                             |   45 -
m4/virt-external-programs.m4                  |  106 -
m4/virt-firewalld-zone.m4                     |   45 -
m4/virt-firewalld.m4                          |   43 -
m4/virt-fuse.m4                               |   30 -
m4/virt-glib.m4                               |   36 -
m4/virt-gluster.m4                            |   32 -
m4/virt-gnutls.m4                             |   30 -
m4/virt-hal.m4                                |   30 -
m4/virt-host-validate.m4                      |   43 -
m4/virt-init-script.m4                        |   61 -
m4/virt-lib.m4                                |  386 ---
m4/virt-libiscsi.m4                           |   30 -
m4/virt-libnl.m4                              |   47 -
m4/virt-libpcap.m4                            |   62 -
m4/virt-libssh.m4                             |   51 -
m4/virt-libxml.m4                             |   36 -
m4/virt-linker-no-indirect.m4                 |   32 -
m4/virt-linker-no-undefined.m4                |   32 -
m4/virt-linker-relro.m4                       |   35 -
m4/virt-loader-nvram.m4                       |   49 -
m4/virt-login-shell.m4                        |   43 -
m4/virt-macvtap.m4                            |   56 -
m4/virt-manywarnings.m4                       |  339 ---
m4/virt-netcf.m4                              |   30 -
m4/virt-nls.m4                                |   72 -
m4/virt-nss.m4                                |   86 -
m4/virt-numactl.m4                            |   34 -
m4/virt-numad.m4                              |   58 -
m4/virt-nwfilter.m4                           |   32 -
m4/virt-openwsman.m4                          |   30 -
m4/virt-parted.m4                             |   38 -
m4/virt-pciaccess.m4                          |   30 -
m4/virt-pm-utils.m4                           |   45 -
m4/virt-polkit.m4                             |   62 -
m4/virt-pthread.m4                            |   58 -
m4/virt-readline.m4                           |   86 -
m4/virt-result.m4                             |   42 -
m4/virt-sanlock.m4                            |   47 -
m4/virt-sasl.m4                               |   30 -
m4/virt-secdriver-apparmor.m4                 |   50 -
m4/virt-secdriver-selinux.m4                  |   43 -
m4/virt-selinux.m4                            |   47 -
m4/virt-ssh2.m4                               |   30 -
m4/virt-storage-dir.m4                        |   33 -
m4/virt-storage-disk.m4                       |   58 -
m4/virt-storage-fs.m4                         |   89 -
m4/virt-storage-gluster.m4                    |   43 -
m4/virt-storage-iscsi-direct.m4               |   44 -
m4/virt-storage-iscsi.m4                      |   50 -
m4/virt-storage-lvm.m4                        |   90 -
m4/virt-storage-mpath.m4                      |   53 -
m4/virt-storage-rbd.m4                        |   62 -
m4/virt-storage-scsi.m4                       |   36 -
m4/virt-storage-sheepdog.m4                   |   56 -
m4/virt-storage-vstorage.m4                   |   73 -
m4/virt-storage-zfs.m4                        |   56 -
m4/virt-sysctl.m4                             |   43 -
m4/virt-tls-priority.m4                       |   33 -
m4/virt-udev.m4                               |   36 -
m4/virt-virtualport.m4                        |   65 -
m4/virt-warnings.m4                           |  115 -
m4/virt-win-common.m4                         |   42 -
m4/virt-win-mingw.m4                          |   28 -
m4/virt-win-symbols.m4                        |   40 -
m4/virt-win-windres.m4                        |   36 -
m4/virt-wireshark.m4                          |   71 -
m4/virt-xdr.m4                                |   40 -
m4/virt-yajl.m4                               |   42 -
meson.build                                   | 2461 +++++++++++++++++
meson_options.txt                             |  104 +
po/Makefile.am                                |   94 -
po/meson.build                                |   35 +
run.in                                        |    4 +-
scripts/apibuild.py                           |   26 +-
scripts/check-augeas.sh                       |   12 +
scripts/check-file-access.py                  |   24 +-
scripts/check-remote-protocol.py              |   75 +-
scripts/gen-def-files.sh                      |    5 +
scripts/gen-sym-files.sh                      |   15 +
scripts/install-dirs.sh                       |    5 +
scripts/install-symlink.sh                    |    7 +
scripts/meson-change-perms.sh                 |    6 +
scripts/meson-dist.sh                         |    6 +
scripts/meson-gen-authors.sh                  |    4 +
scripts/meson-html-gen.py                     |   49 +
scripts/meson-install-web.py                  |   10 +
scripts/meson-python.sh                       |    3 +
scripts/meson-timestamp.sh                    |    8 +
scripts/meson.build                           |   40 +
src/Makefile.am                               |  693 -----
src/access/Makefile.inc.am                    |  153 -
src/access/meson.build                        |  121 +
src/admin/Makefile.inc.am                     |  146 -
src/admin/meson.build                         |  114 +
src/bhyve/Makefile.inc.am                     |  106 -
src/bhyve/meson.build                         |   62 +
src/conf/Makefile.inc.am                      |  191 --
src/conf/meson.build                          |  110 +
src/cpu/Makefile.inc.am                       |   27 -
src/cpu/meson.build                           |   21 +
src/cpu_map/Makefile.inc.am                   |   80 -
src/cpu_map/meson.build                       |   75 +
src/driver.c                                  |    2 +-
src/esx/Makefile.inc.am                       |   91 -
src/esx/meson.build                           |   67 +
src/hyperv/Makefile.inc.am                    |   59 -
src/hyperv/meson.build                        |   43 +
src/hypervisor/Makefile.inc.am                |   20 -
src/hypervisor/meson.build                    |   23 +
src/interface/Makefile.inc.am                 |  125 -
src/interface/meson.build                     |   64 +
src/libvirt-lxc.pc.in                         |    2 +-
src/libvirt-qemu.pc.in                        |    2 +-
src/libvirt.pc.in                             |    2 +-
src/libxl/Makefile.inc.am                     |  163 --
src/libxl/meson.build                         |   89 +
src/locking/Makefile.inc.am                   |  298 --
src/locking/lock_manager.c                    |    2 +-
src/locking/meson.build                       |  249 ++
src/logging/Makefile.inc.am                   |  147 -
src/logging/meson.build                       |  100 +
src/lxc/Makefile.inc.am                       |  293 --
src/lxc/meson.build                           |  190 ++
src/meson.build                               |  969 +++++++
src/network/Makefile.inc.am                   |  197 --
src/network/{default.xml => default.xml.in}   |    0
src/network/meson.build                       |  129 +
src/node_device/Makefile.inc.am               |  151 -
src/node_device/meson.build                   |   77 +
src/nwfilter/Makefile.inc.am                  |  134 -
src/nwfilter/meson.build                      |   73 +
src/nwfilter/xml/meson.build                  |   22 +
src/openvz/Makefile.inc.am                    |   30 -
src/openvz/meson.build                        |   28 +
src/qemu/Makefile.inc.am                      |  268 --
src/{ => qemu}/libvirt_qemu_probes.d          |    0
src/qemu/meson.build                          |  173 ++
src/remote/Makefile.inc.am                    |  490 ----
src/remote/meson.build                        |  288 ++
...n.target.in => virt-guest-shutdown.target} |    0
src/rpc/Makefile.inc.am                       |  144 -
src/rpc/meson.build                           |  136 +
src/secret/Makefile.inc.am                    |  110 -
src/secret/meson.build                        |   53 +
src/security/Makefile.inc.am                  |  142 -
src/security/apparmor/meson.build             |   38 +
.../usr.lib.libvirt.virt-aa-helper.local      |    1 +
src/security/meson.build                      |   57 +
src/storage/Makefile.inc.am                   |  476 ----
src/storage/meson.build                       |  306 ++
src/storage/storage_backend.c                 |    2 +-
src/test/Makefile.inc.am                      |   28 -
src/test/meson.build                          |   26 +
src/util/Makefile.inc.am                      |  318 ---
src/util/meson.build                          |  212 ++
src/util/virfile.c                            |   34 +-
src/util/virstoragefilebackend.c              |    2 +-
src/vbox/Makefile.inc.am                      |  138 -
src/vbox/meson.build                          |   78 +
src/vmware/Makefile.inc.am                    |   29 -
src/vmware/meson.build                        |   26 +
src/vmx/Makefile.inc.am                       |   24 -
src/vmx/meson.build                           |   28 +
src/vz/Makefile.inc.am                        |  117 -
src/vz/meson.build                            |   68 +
tests/Makefile.am                             | 1571 -----------
tests/meson.build                             |  686 +++++
tests/securityselinuxlabeltest.c              |    2 +-
tests/securityselinuxtest.c                   |    2 +-
tests/shunloadtest.c                          |    4 +-
tests/testutils.c                             |    2 +-
tests/testutils.h                             |    2 +-
tests/viridentitytest.c                       |    2 +-
tests/virsh-optparse                          |   58 +-
tests/virsh-schedinfo                         |   12 +-
tests/virt-aa-helper-test                     |    2 +-
tests/virtestmock.c                           |    2 +-
tools/Makefile.am                             |  529 ----
tools/bash-completion/meson.build             |   13 +
tools/meson.build                             |  292 ++
tools/nss/meson.build                         |   92 +
tools/wireshark/meson.build                   |    3 +
tools/wireshark/src/libvirt/meson.build       |   20 +
tools/wireshark/src/meson.build               |   17 +
tools/wireshark/util/genxdrstub.pl            |    9 +-
321 files changed, 9526 insertions(+), 15979 deletions(-)
delete mode 100644 GNUmakefile
delete mode 100644 Makefile.am
delete mode 100755 autogen.sh
create mode 100644 build-aux/Makefile.in
rename Makefile.nonreentrant => build-aux/Makefile.nonreentrant (100%)
create mode 100644 build-aux/meson.build
create mode 100644 ci/aarch64-linux-gnu.meson
create mode 100644 ci/arm-linux-gnueabi.meson
create mode 100644 ci/arm-linux-gnueabihf.meson
create mode 100644 ci/i686-linux-gnu.meson
create mode 100644 ci/mips-linux-gnu.meson
create mode 100644 ci/mips64el-linux-gnuabi64.meson
create mode 100644 ci/mipsel-linux-gnu.meson
create mode 100644 ci/powerpc64le-linux-gnu.meson
create mode 100644 ci/s390x-linux-gnu.meson
rename config-post.h => config.h (65%)
create mode 100644 configmake.h.in
delete mode 100644 configure.ac
delete mode 100644 docs/Makefile.am
create mode 100644 docs/fonts/meson.build
create mode 100644 docs/html/meson.build
create mode 100644 docs/internals/meson.build
create mode 100644 docs/js/meson.build
create mode 100644 docs/kbase/meson.build
create mode 100644 docs/logos/meson.build
rename docs/manpages/{index.rst => index.rst.in} (100%)
rename docs/manpages/{libvirtd.rst => libvirtd.rst.in} (100%)
create mode 100644 docs/manpages/meson.build
rename docs/manpages/{virsh.rst => virsh.rst.in} (100%)
rename docs/manpages/{virt-admin.rst => virt-admin.rst.in} (100%)
rename docs/manpages/{virt-host-validate.rst => virt-host-validate.rst.in} (100%)
rename docs/manpages/{virt-login-shell.rst => virt-login-shell.rst.in} (100%)
rename docs/manpages/{virt-pki-validate.rst => virt-pki-validate.rst.in} (100%)
rename docs/manpages/{virt-qemu-run.rst => virt-qemu-run.rst.in} (100%)
rename docs/manpages/{virt-sanlock-cleanup.rst => virt-sanlock-cleanup.rst.in} (100%)
rename docs/manpages/{virt-xml-validate.rst => virt-xml-validate.rst.in} (100%)
rename docs/manpages/{virtlockd.rst => virtlockd.rst.in} (100%)
rename docs/manpages/{virtlogd.rst => virtlogd.rst.in} (100%)
create mode 100644 docs/meson.build
create mode 100644 docs/schemas/meson.build
delete mode 100644 examples/Makefile.am
create mode 100644 examples/c/admin/meson.build
create mode 100644 examples/c/domain/meson.build
create mode 100644 examples/c/meson.build
create mode 100644 examples/c/misc/meson.build
create mode 100644 examples/meson.build
create mode 100644 examples/polkit/meson.build
create mode 100644 examples/sh/meson.build
create mode 100644 examples/systemtap/meson.build
create mode 100644 examples/xml/meson.build
create mode 100644 examples/xml/storage/meson.build
create mode 100644 examples/xml/test/meson.build
delete mode 100644 include/libvirt/Makefile.am
create mode 100644 include/libvirt/meson.build
create mode 100644 include/meson.build
delete mode 100644 m4/virt-acl.m4
delete mode 100644 m4/virt-apparmor.m4
delete mode 100644 m4/virt-arg.m4
delete mode 100644 m4/virt-attr.m4
delete mode 100644 m4/virt-audit.m4
delete mode 100644 m4/virt-bash-completion.m4
delete mode 100644 m4/virt-blkid.m4
delete mode 100644 m4/virt-capng.m4
delete mode 100644 m4/virt-chrdev-lock-files.m4
delete mode 100644 m4/virt-compile-pie.m4
delete mode 100644 m4/virt-compile-warnings.m4
delete mode 100644 m4/virt-curl.m4
delete mode 100644 m4/virt-dbus.m4
delete mode 100644 m4/virt-debug.m4
delete mode 100644 m4/virt-default-editor.m4
delete mode 100644 m4/virt-devmapper.m4
delete mode 100644 m4/virt-dlopen.m4
delete mode 100644 m4/virt-driver-bhyve.m4
delete mode 100644 m4/virt-driver-esx.m4
delete mode 100644 m4/virt-driver-hyperv.m4
delete mode 100644 m4/virt-driver-interface.m4
delete mode 100644 m4/virt-driver-libvirtd.m4
delete mode 100644 m4/virt-driver-libxl.m4
delete mode 100644 m4/virt-driver-lxc.m4
delete mode 100644 m4/virt-driver-modules.m4
delete mode 100644 m4/virt-driver-network.m4
delete mode 100644 m4/virt-driver-openvz.m4
delete mode 100644 m4/virt-driver-qemu.m4
delete mode 100644 m4/virt-driver-remote.m4
delete mode 100644 m4/virt-driver-test.m4
delete mode 100644 m4/virt-driver-vbox.m4
delete mode 100644 m4/virt-driver-vmware.m4
delete mode 100644 m4/virt-driver-vz.m4
delete mode 100644 m4/virt-dtrace.m4
delete mode 100644 m4/virt-external-programs.m4
delete mode 100644 m4/virt-firewalld-zone.m4
delete mode 100644 m4/virt-firewalld.m4
delete mode 100644 m4/virt-fuse.m4
delete mode 100644 m4/virt-glib.m4
delete mode 100644 m4/virt-gluster.m4
delete mode 100644 m4/virt-gnutls.m4
delete mode 100644 m4/virt-hal.m4
delete mode 100644 m4/virt-host-validate.m4
delete mode 100644 m4/virt-init-script.m4
delete mode 100644 m4/virt-lib.m4
delete mode 100644 m4/virt-libiscsi.m4
delete mode 100644 m4/virt-libnl.m4
delete mode 100644 m4/virt-libpcap.m4
delete mode 100644 m4/virt-libssh.m4
delete mode 100644 m4/virt-libxml.m4
delete mode 100644 m4/virt-linker-no-indirect.m4
delete mode 100644 m4/virt-linker-no-undefined.m4
delete mode 100644 m4/virt-linker-relro.m4
delete mode 100644 m4/virt-loader-nvram.m4
delete mode 100644 m4/virt-login-shell.m4
delete mode 100644 m4/virt-macvtap.m4
delete mode 100644 m4/virt-manywarnings.m4
delete mode 100644 m4/virt-netcf.m4
delete mode 100644 m4/virt-nls.m4
delete mode 100644 m4/virt-nss.m4
delete mode 100644 m4/virt-numactl.m4
delete mode 100644 m4/virt-numad.m4
delete mode 100644 m4/virt-nwfilter.m4
delete mode 100644 m4/virt-openwsman.m4
delete mode 100644 m4/virt-parted.m4
delete mode 100644 m4/virt-pciaccess.m4
delete mode 100644 m4/virt-pm-utils.m4
delete mode 100644 m4/virt-polkit.m4
delete mode 100644 m4/virt-pthread.m4
delete mode 100644 m4/virt-readline.m4
delete mode 100644 m4/virt-result.m4
delete mode 100644 m4/virt-sanlock.m4
delete mode 100644 m4/virt-sasl.m4
delete mode 100644 m4/virt-secdriver-apparmor.m4
delete mode 100644 m4/virt-secdriver-selinux.m4
delete mode 100644 m4/virt-selinux.m4
delete mode 100644 m4/virt-ssh2.m4
delete mode 100644 m4/virt-storage-dir.m4
delete mode 100644 m4/virt-storage-disk.m4
delete mode 100644 m4/virt-storage-fs.m4
delete mode 100644 m4/virt-storage-gluster.m4
delete mode 100644 m4/virt-storage-iscsi-direct.m4
delete mode 100644 m4/virt-storage-iscsi.m4
delete mode 100644 m4/virt-storage-lvm.m4
delete mode 100644 m4/virt-storage-mpath.m4
delete mode 100644 m4/virt-storage-rbd.m4
delete mode 100644 m4/virt-storage-scsi.m4
delete mode 100644 m4/virt-storage-sheepdog.m4
delete mode 100644 m4/virt-storage-vstorage.m4
delete mode 100644 m4/virt-storage-zfs.m4
delete mode 100644 m4/virt-sysctl.m4
delete mode 100644 m4/virt-tls-priority.m4
delete mode 100644 m4/virt-udev.m4
delete mode 100644 m4/virt-virtualport.m4
delete mode 100644 m4/virt-warnings.m4
delete mode 100644 m4/virt-win-common.m4
delete mode 100644 m4/virt-win-mingw.m4
delete mode 100644 m4/virt-win-symbols.m4
delete mode 100644 m4/virt-win-windres.m4
delete mode 100644 m4/virt-wireshark.m4
delete mode 100644 m4/virt-xdr.m4
delete mode 100644 m4/virt-yajl.m4
create mode 100644 meson.build
create mode 100644 meson_options.txt
delete mode 100644 po/Makefile.am
create mode 100644 po/meson.build
create mode 100644 scripts/check-augeas.sh
create mode 100755 scripts/gen-def-files.sh
create mode 100755 scripts/gen-sym-files.sh
create mode 100644 scripts/install-dirs.sh
create mode 100644 scripts/install-symlink.sh
create mode 100644 scripts/meson-change-perms.sh
create mode 100755 scripts/meson-dist.sh
create mode 100755 scripts/meson-gen-authors.sh
create mode 100755 scripts/meson-html-gen.py
create mode 100755 scripts/meson-install-web.py
create mode 100755 scripts/meson-python.sh
create mode 100755 scripts/meson-timestamp.sh
create mode 100644 scripts/meson.build
delete mode 100644 src/Makefile.am
delete mode 100644 src/access/Makefile.inc.am
create mode 100644 src/access/meson.build
delete mode 100644 src/admin/Makefile.inc.am
create mode 100644 src/admin/meson.build
delete mode 100644 src/bhyve/Makefile.inc.am
create mode 100644 src/bhyve/meson.build
delete mode 100644 src/conf/Makefile.inc.am
create mode 100644 src/conf/meson.build
delete mode 100644 src/cpu/Makefile.inc.am
create mode 100644 src/cpu/meson.build
delete mode 100644 src/cpu_map/Makefile.inc.am
create mode 100644 src/cpu_map/meson.build
delete mode 100644 src/esx/Makefile.inc.am
create mode 100644 src/esx/meson.build
delete mode 100644 src/hyperv/Makefile.inc.am
create mode 100644 src/hyperv/meson.build
delete mode 100644 src/hypervisor/Makefile.inc.am
create mode 100644 src/hypervisor/meson.build
delete mode 100644 src/interface/Makefile.inc.am
create mode 100644 src/interface/meson.build
delete mode 100644 src/libxl/Makefile.inc.am
create mode 100644 src/libxl/meson.build
delete mode 100644 src/locking/Makefile.inc.am
create mode 100644 src/locking/meson.build
delete mode 100644 src/logging/Makefile.inc.am
create mode 100644 src/logging/meson.build
delete mode 100644 src/lxc/Makefile.inc.am
create mode 100644 src/lxc/meson.build
create mode 100644 src/meson.build
delete mode 100644 src/network/Makefile.inc.am
rename src/network/{default.xml => default.xml.in} (100%)
create mode 100644 src/network/meson.build
delete mode 100644 src/node_device/Makefile.inc.am
create mode 100644 src/node_device/meson.build
delete mode 100644 src/nwfilter/Makefile.inc.am
create mode 100644 src/nwfilter/meson.build
create mode 100644 src/nwfilter/xml/meson.build
delete mode 100644 src/openvz/Makefile.inc.am
create mode 100644 src/openvz/meson.build
delete mode 100644 src/qemu/Makefile.inc.am
rename src/{ => qemu}/libvirt_qemu_probes.d (100%)
create mode 100644 src/qemu/meson.build
delete mode 100644 src/remote/Makefile.inc.am
create mode 100644 src/remote/meson.build
rename src/remote/{virt-guest-shutdown.target.in => virt-guest-shutdown.target} (100%)
delete mode 100644 src/rpc/Makefile.inc.am
create mode 100644 src/rpc/meson.build
delete mode 100644 src/secret/Makefile.inc.am
create mode 100644 src/secret/meson.build
delete mode 100644 src/security/Makefile.inc.am
create mode 100644 src/security/apparmor/meson.build
create mode 100644 src/security/apparmor/usr.lib.libvirt.virt-aa-helper.local
create mode 100644 src/security/meson.build
delete mode 100644 src/storage/Makefile.inc.am
create mode 100644 src/storage/meson.build
delete mode 100644 src/test/Makefile.inc.am
create mode 100644 src/test/meson.build
delete mode 100644 src/util/Makefile.inc.am
create mode 100644 src/util/meson.build
delete mode 100644 src/vbox/Makefile.inc.am
create mode 100644 src/vbox/meson.build
delete mode 100644 src/vmware/Makefile.inc.am
create mode 100644 src/vmware/meson.build
delete mode 100644 src/vmx/Makefile.inc.am
create mode 100644 src/vmx/meson.build
delete mode 100644 src/vz/Makefile.inc.am
create mode 100644 src/vz/meson.build
delete mode 100644 tests/Makefile.am
create mode 100644 tests/meson.build
delete mode 100644 tools/Makefile.am
create mode 100644 tools/bash-completion/meson.build
create mode 100644 tools/meson.build
create mode 100644 tools/nss/meson.build
create mode 100644 tools/wireshark/meson.build
create mode 100644 tools/wireshark/src/libvirt/meson.build
create mode 100644 tools/wireshark/src/meson.build
[libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
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

and link to Giltab pipeline:

    https://gitlab.com/phrdina/libvirt/-/pipelines/167276632

The pipeline is not for the latest version is I tweaked some commit
messages.

Pavel Hrdina (351):
  meson: ci: increase git clone depth to 1000
  meson: remove automake specific directives
  meson: drop driver_module configure argument
  meson: drop loader_nvram build option
  meson: Makefile: drop cov target
  meson: syntax-check: drop Makefile and m4 related checks
  meson: m4: drop not relevant m4 files
  meson: src/util/virfile: rewrite virFileActivateDirOverrideForProg
  meson: tests: remove '.libs' from all relevant paths
  meson: introduce meson build files
  meson: build everything with PIE
  meson: move content from config-post.h to config.h
  meson: set windows variables for AI_ADDRCONFIG
  meson: generate configmake.h
  meson: add packager build options
  meson: add test_suite build option
  meson: add expensive_tests build option
  meson: add test_coverage build option
  meson: add static analysis detection
  meson: add manywarnings
  meson: add compiler warnings
  meson: add linker checks
  meson: add scripts directory
  meson: add include directory
  meson: add functions check
  meson: add headers check
  meson: add symbols check
  meson: add types check
  meson: add members check
  meson: add sizeof check
  meson: add programs checks
  meson: add iscsiadm as optional program
  meson: add acl build dependency
  meson: add AppArmor build dependency
  meson: add attr build option
  meson: add audit build dependency
  meson: add readline build option
  meson: add bash_completion build options
  meson: add blkid build dependency
  meson: add capng build dependency
  meson: add curl build dependency
  meson: add dbus build dependency
  meson: add devmapper build dependency
  meson: add dlopen build dependency
  meson: add firewalld build option
  meson: add firewalld_zone build option
  meson: add fuse build dependency
  meson: add GLib dependency
  meson: add glusterfs build dependency
  meson: add GnuTLS build dependency
  meson: add hal build dependency
  meson: add kvm build dependency
  meson: add libiscsi build dependency
  meson: add macvtap build option
  meson: add libnl build dependency
  meson: add libparted dependency
  meson: add libpcap build option
  meson: add libssh build dependency
  meson: add libssh2 build dependency
  meson: add libxml build dependency
  meson: add netcf build options
  meson: add nls build dependency
  meson: add numactl build dependency
  meson: add openwsman build dependency
  meson: add parallels-sdk build check
  meson: add pciaccess build option
  meson: add polkit build option
  meson: add rbd build dependency
  meson: add sanlock build option
  meson: add sasl build dependency
  meson: add SELinux build dependency
  meson: add thread build dependency
  meson: add udev build options
  meson: add util build dependency
  meson: add virtualport build dependency
  meson: add win32 build dependency
  meson: add wireshark build dependency
  meson: add xdr build dependency
  meson: add yajl build dependency
  meson: add driver_remote build option
  meson: add libvirtd driver build option
  meson: add BHyVe build option
  meson: add ESX driver build option
  meson: add Hyper-V driver build option
  meson: add libxl driver build option
  meson: add LXC driver build option
  meson: add OpenVZ driver build option
  meson: add qemu driver build options
  meson: add test driver build option
  meson: add vbox driver build options
  meson: add VMWare driver build option
  meson: add Virtuozzo driver build option
  meson: add secdriver build options
  meson: add network driver build option
  meson: add interface driver build option
  meson: add secrets driver build option
  meson: add node_device driver check
  meson: add storage build check
  meson: add storage dir build option
  meson: add storage disk build option
  meson: add storage fs driver build option
  meson: add storage gluster build option
  meson: add storage iscsi build option
  meson: add storage iscsi-direct build option
  meson: add storage lvm build options
  meson: add storage mpath build options
  meson: add storage rbd build option
  meson: add storage SCSI build option
  meson: add storage sheepdog build option
  meson: add storage vstorage build option
  meson: add storage ZFS build option
  meson: add chrdev_lock_files build option
  meson: add debug_logs build option
  meson: add default_editor build option
  meson: add driver_modules build check
  meson: add dtrace build dependency
  meson: add host_validate build option
  meson: add init_script build option
  meson: add login_shell build option
  meson: add nss build option
  meson: add numad build option
  meson: add nwfilter build check
  meson: add pm_utils build option
  meson: add sysctl_config build option
  meson: add tls_priority option
  meson: add runutf8 env vars and meson-python.sh script
  meson: introduce src directory
  meson: src: define secdriver_dep
  meson: src: build dtrace files
  meson: src: build libvirt_util.a static lib
  meson: src: build libvirt_conf.a static lib
  meson: src: build libvirt_rpc static libs
  meson: src: build libvirt_access.a static library
  meson: src: build libvirt_driver_admin.a static lib
  meson: src: build libvirt_cpu.a static library
  meson: src: build libvirt_vmx.a static library
  meson: src: build libvirt_vmware.a static library
  meson: src: build libvirt_driver_esx.a static library
  meson: src: build libvirt_driver_hyperv.a static library
  meson: src: build libvirt_hypervisor.a static library
  meson: src: build libvirt_openvz.a static library
  meson: src: build libvirt_test.a static library
  meson: src: build libvirt_driver_lock.a static library
  meson: src: build libvirt_driver_log.a static library
  meson: src: build libvirt_driver_remote.a static library
  meson: src: build libvirt_security_manager.a static library
  meson: introduce datatypes sources
  meson: src: build libvirt_driver.a static library
  meson: scripts: introduce gen-def-files.sh script
  meson: scripts: introduce gen-sym-files.sh script
  meson: src: build libvirt.syms and libvirt.def symbol files
  meson: src: build libvirt.so library
  meson: src: install cpu_map data
  meson: src: build libvirt-qemu.so library
  meson: src: build libvirt-lxc.so library
  meson: src: build libvirt-admin.so library
  meson: src: build libvirt_driver_bhyve_impl.a static library
  meson: src: build libvirt_driver_libxl_impl.a static library
  meson: src: build liblockd_impl.a static library
  meson: src: build libvirt_driver_lxc_impl.a static library
  meson: src: build libvirt_driver_network_impl.a static library
  meson: src: build libvirt_driver_nodedev_impl.a static library
  meson: src: build libvirt_driver_nwfilter_impl.a static library
  meson: src: build libvirt_driver_qemu_impl.a static library
  meson: src: build libvirt_storage_driver_impl.a static library
  meson: src: build libvirt_driver_vbox_impl.a static library
  meson: src: build libvirt_driver_vz_impl.a static library
  meson: src: add code to build shared modules
  meson: src: build libvirt_driver_bhyve.so shared module
  meson: src: build libvirt_driver_interface.so shared module
  meson: src: build libvirt_driver_libxl.so shared module
  meson: src: build libvirt_driver_lxc.so shared module
  meson: src: build libvirt_driver_network.so shared module
  meson: src: build libvirt_driver_nodedev.so shared module
  meson: src: build libvirt_driver_nwfilter.so shared module
  meson: src: build libvirt_driver_qemu.so shared module
  meson: src: build libvirt_driver_secret.so shared module
  meson: src: build libvirt_driver_vbox.so shared module
  meson: src: build libvirt_driver_vz.so shared module
  meson: src: build lockd.so shared module
  meson: src: build sanlock.so shared module
  meson: src: build libvirt_storage_driver.so shared module
  meson: src: build libvirt_storage_backedn_fs.so shared module
  meson: src: build libvirt_storage_file_fs.so shared module
  meson: src: build libvirt_storage_backend_logical.so shared module
  meson: src: build libvirt_storage_backend_iscsi.so shared module
  meson: src: build libvirt_storage_backend_iscsi_direct.so shared
    module
  meson: src: build libvirt_storage_backend_scsi.so shared module
  meson: src: build libvirt_storage_backend_mpath.so shared module
  meson: src: build libvirt_storage_backend_disk.so shared module
  meson: src: build libvirt_storage_backend_rbd.so shared module
  meson: src: build libvirt_storage_backend_sheepdog.so shared module
  meson: src: build libvirt_storage_*_gluster.so shared modules
  meson: src: build libvirt_storage_backend_zfs.so shared module
  meson: src: build libvirt_storage_backend_vstorage.so shared module
  meson: src: prepare sources for libvirt daemons
  meson: src: add support for building daemon binaries
  meson: src: build virtbhyved daemon binary
  meson: src: build virtinterfaced daemon binary
  meson: src: build virtxend daemon binary
  meson: src: build virtlockd daemon binary
  meson: src: build virtlogd daemon binary
  meson: src: build virtlxcd daemon binary
  meson: src: build virtnetworkd daemon binary
  meson: src: build virtnodedevd daemon binary
  meson: src: build virtnwfilterd daemon binary
  meson: src: build virtqemud daemon binary
  meson: src: build libvirtd daemon binary
  meson: src: build virtproxyd daemon binary
  meson: src: build virtsecretd daemon binary
  meson: src: build virtstoraged daemon binary
  meson: src: build virtvboxd daemon binary
  meson: src: build virtvzd daemon binary
  meson: src: add support for building helpers
  meson: src: build libvirt_sanlock_helper binary
  meson: src: build libvirt_lxc binary
  meson: src: build libvirt_leaseshelper binary
  meson: src: build virt-qemu-run binary
  meson: src: build virt-aa-helper binary
  meson: src: build libvirt_parthelper binary
  meson: src: build libvirt_iohelper binary
  meson: src: add support for installing libvirt conf and augeas files
  meson: src: install libvirt daemon conf and augeas files
  meson: src: generate libvirt daemon augeas test files
  meson: src: generate libvirt daemon conf and augeas files
  meson: src: generate systemd unit files for libvirt daemons
  meson: src: generate openrc init files
  meson: src: install libvirt daemon sysconf files
  meson: src: install empty directories
  meson: src: generate logrotate files
  meson: src/access: generate org.libvirt.api.policy
  meson: src/access: generate libvirt_access*.xml files
  meson: src/network: install default network xml
  meson: src/network: install firewalld zone file
  meson: src/nwfilter: install nwfilter XML files
  meson: src/remote: install libvirt sysctl config file
  meson: src/remote: install polkit files
  meson: src/remote: install libvirtd sasl file
  meson: src/security: install apparmor profile files
  meson: src: add check-symfile test
  meson: src: add check-symsorting
  meson: src: add check-drivername test
  meson: src: add check-driverimpls test
  meson: src: add check-aclrules test
  meson: src/access: add check-aclperms test
  meson: src: add check-augeas test
  meson: src: build libvirt_functions.stp
  meson: src: add check*protocol tests
  meson: src: add check-admin-symfile test
  meson: src: add check-admin-symsorting test
  meson: src: add check-admin-drivername test
  meson: src: configure pkg-config files used by run script
  meson: add tools directory
  meson: tools: build libvirt_shell.a static library
  meson: tools: build virt-host-validate binary
  meson: tools: build virt-login-shell binary
  meson: tools: build virt-login-shell-helper binary
  meson: tools: build virsh_win_icon object file
  meson: tools: build virsh binary
  meson: tools: build virt-admin binary
  meson: tools: generate virt-xml-validate script
  meson: tools: generate virt-pki-validate script
  meson: tools: generate virt-sanlock-cleanup script
  meson: tools: generate libvirt-guests.sh script
  meson: tools: install virt-login-shell.conf
  meson: tools: install libvirt-guests sysconf file
  meson: tools: generate libvirt-guests.service systemd unit
  meson: tools: install bash-completion files
  meson: tools: introduce nss directory
  meson: tools: build libnss_libvirt_impl.a static library
  meson: tools: build libnss_libvirt_guest_impl.a static library
  meson: tools: build libnss_libvirt.so shared library
  meson: tools: build libnss_libvirt_guest.so shared_library
  meson: tools: introduce wireshark directory
  meson: tools: modify genxdrstub to work with meson
  meson: tools/wireshark: generate protocol header files
  meson: tools/wireshark: build libvirt.so wireshark module
  meson: introduce tests directory
  meson: tests: build mock shared modules
  meson: tests: built utils static libraries
  meson: tests: build commandhelper binary
  meson: tests: build fake ssh binary
  meson: tests: add test environment variables
  meson: tests: build shared libraries
  meson: tests: add test binaries build support
  meson: tests: introduce generic tests
  meson: tests: add linux specific tests
  meson: tests: add bhyve specific tests
  meson: tests: add dbus specific tests
  meson: tests: add ESX specific tests
  meson: tests: add libvirtd specific tests
  meson: tests: add libxl specific tests
  meson: tests: add lxc specific tests
  meson: tests: add network specific tests
  meson: tests: add node device specific tests
  meson: tests: add nss specific tests
  meson: tests: add nwfilter specific tests
  meson: tests: add openvz specific tests
  meson: tests: add qemu specific tests
  meson: tests: add remote specific tests
  meson: tests: add selinux specific tests
  meson: tests: add storage specific tests
  meson: tests: add storage_fs specific tests
  meson: tests: add storage_sheepdog specific tests
  meson: tests: add vbox specific tests
  meson: tests: add vmware specific tests
  meson: tests: add vmx specific tests
  meson: tests: add yajl specific tests
  meson: tests: add helper binaries build support
  meson: tests: build helper binaries
  meson: tests: add test scripts
  meson: tests: add file access test setup
  meson: tests: add valgrind test setup
  meson: examples: build and install example files
  meson: po: introduce libvirt translation
  meson: docs: introduce docs directory
  meson: docs: build api XML files
  meson: docs: generate docs timestamp
  meson: docs: generate aclperms.htmlinc
  meson: docs: introduce docs_rst2html_gen generator
  meson: docs: introduce meson-html-gen.py helper
  meson: docs: introduce XSL files
  meson: docs: build *.html files from *.html.in files
  meson: docs: build *.html files from *.rst files
  meson: docs: build hvsupport.html
  meson: docs: build news.html from news.xml
  meson: docs: copy asset data to build dir
  meson: docs/fonts: install font files
  meson: docs/html: generate libvirt API documentation
  meson: docs/html: generate admin,lxc and qemu API documentation
  meson: docs/internals: build html files
  meson: docs/js: install javascript files
  meson: docs/kbase: build html files
  meson: docs/logos: install logo files
  meson: docs/manpages: install man pages
  meson: docs/schemas: install RNG schemas
  meson: docs/html: add html test
  meson: install pkgconfig files
  meson: generate and distribute spec files and AUTHORS
  meson: generate run helper
  meson: generate developer tooling files
  meson: add syntax-check
  meson: update spec file to use meson
  meson: add rule to build and install only web documentation
  meson: drop remaining bits from Makefile.am
  meson: remove unused bits from GNUmakefile
  meson: drop all unused bits from configure.ac
  meson: now we can drop all autoconf related gitignore lines
  meson: adjust our documentation to mention meson instead of autoconf
  meson: update .gitlab-ci.yml file
  meson: .gitlab-ci.yml: switch armv7l build to Debian 10

 .gitignore                                    |   21 -
 .gitlab-ci.yml                                |   71 +-
 CONTRIBUTING.rst                              |    9 +-
 GNUmakefile                                   |   74 -
 Makefile.am                                   |  180 --
 autogen.sh                                    |   53 -
 build-aux/Makefile.in                         |    9 +
 .../Makefile.nonreentrant                     |    0
 build-aux/meson.build                         |   30 +
 build-aux/syntax-check.mk                     |  120 +-
 ci/aarch64-linux-gnu.meson                    |   11 +
 ci/arm-linux-gnueabi.meson                    |   11 +
 ci/arm-linux-gnueabihf.meson                  |   11 +
 ci/cirrus/build.yml                           |   12 +-
 ci/cirrus/libvirt-freebsd-12.vars             |    4 +-
 ci/cirrus/libvirt-macos-1015.vars             |    4 +-
 ci/containers/libvirt-centos-7.Dockerfile     |    2 +-
 ci/containers/libvirt-centos-8.Dockerfile     |    4 +-
 .../libvirt-centos-stream.Dockerfile          |    4 +-
 ...libvirt-debian-10-cross-aarch64.Dockerfile |    5 +-
 .../libvirt-debian-10-cross-armv6l.Dockerfile |    6 +-
 .../libvirt-debian-10-cross-armv7l.Dockerfile |    6 +-
 .../libvirt-debian-10-cross-i686.Dockerfile   |    5 +-
 .../libvirt-debian-10-cross-mips.Dockerfile   |    5 +-
 ...ibvirt-debian-10-cross-mips64el.Dockerfile |    5 +-
 .../libvirt-debian-10-cross-mipsel.Dockerfile |    5 +-
 ...libvirt-debian-10-cross-ppc64le.Dockerfile |    5 +-
 .../libvirt-debian-10-cross-s390x.Dockerfile  |    5 +-
 ci/containers/libvirt-debian-10.Dockerfile    |    4 +-
 ...ibvirt-debian-sid-cross-aarch64.Dockerfile |    5 +-
 ...libvirt-debian-sid-cross-armv6l.Dockerfile |    6 +-
 ...libvirt-debian-sid-cross-armv7l.Dockerfile |    6 +-
 .../libvirt-debian-sid-cross-i686.Dockerfile  |    5 +-
 ...bvirt-debian-sid-cross-mips64el.Dockerfile |    5 +-
 ...libvirt-debian-sid-cross-mipsel.Dockerfile |    6 +-
 ...ibvirt-debian-sid-cross-ppc64le.Dockerfile |    5 +-
 .../libvirt-debian-sid-cross-s390x.Dockerfile |    5 +-
 ci/containers/libvirt-debian-sid.Dockerfile   |    4 +-
 ci/containers/libvirt-fedora-31.Dockerfile    |    4 +-
 ci/containers/libvirt-fedora-32.Dockerfile    |    4 +-
 ...rt-fedora-rawhide-cross-mingw32.Dockerfile |    4 +-
 ...rt-fedora-rawhide-cross-mingw64.Dockerfile |    4 +-
 .../libvirt-fedora-rawhide.Dockerfile         |    4 +-
 ci/containers/libvirt-opensuse-151.Dockerfile |    2 +-
 ci/containers/libvirt-ubuntu-1804.Dockerfile  |    2 +-
 ci/containers/libvirt-ubuntu-2004.Dockerfile  |    4 +-
 ci/i686-linux-gnu.meson                       |   11 +
 ci/mips-linux-gnu.meson                       |   11 +
 ci/mips64el-linux-gnuabi64.meson              |   11 +
 ci/mipsel-linux-gnu.meson                     |   11 +
 ci/powerpc64le-linux-gnu.meson                |   11 +
 ci/s390x-linux-gnu.meson                      |   11 +
 config-post.h => config.h                     |   25 +-
 configmake.h.in                               |   16 +
 configure.ac                                  | 1063 -------
 docs/Makefile.am                              |  522 ----
 docs/advanced-tests.rst                       |   14 +-
 docs/best-practices.rst                       |    2 +-
 docs/committer-guidelines.rst                 |    6 +-
 docs/compiling.html.in                        |   40 +-
 docs/fonts/meson.build                        |   24 +
 docs/hacking.rst                              |    4 +-
 docs/html/meson.build                         |  101 +
 docs/internals/meson.build                    |   35 +
 docs/js/meson.build                           |   13 +
 docs/kbase/meson.build                        |   44 +
 docs/logging.html.in                          |    2 +-
 docs/logos/meson.build                        |   31 +
 docs/manpages/{index.rst => index.rst.in}     |    0
 .../{libvirtd.rst => libvirtd.rst.in}         |    0
 docs/manpages/meson.build                     |  129 +
 docs/manpages/{virsh.rst => virsh.rst.in}     |    0
 .../{virt-admin.rst => virt-admin.rst.in}     |    0
 ...validate.rst => virt-host-validate.rst.in} |    0
 ...ogin-shell.rst => virt-login-shell.rst.in} |    0
 ...-validate.rst => virt-pki-validate.rst.in} |    0
 ...virt-qemu-run.rst => virt-qemu-run.rst.in} |    0
 ...leanup.rst => virt-sanlock-cleanup.rst.in} |    0
 ...-validate.rst => virt-xml-validate.rst.in} |    0
 .../{virtlockd.rst => virtlockd.rst.in}       |    0
 .../{virtlogd.rst => virtlogd.rst.in}         |    0
 docs/meson.build                              |  319 +++
 docs/schemas/meson.build                      |   26 +
 docs/strategy.html.in                         |   27 +-
 docs/windows.html.in                          |   18 +-
 examples/Makefile.am                          |  135 -
 examples/c/admin/meson.build                  |   27 +
 examples/c/domain/meson.build                 |   24 +
 examples/c/meson.build                        |    3 +
 examples/c/misc/meson.build                   |   22 +
 examples/meson.build                          |    7 +
 examples/polkit/meson.build                   |    1 +
 examples/sh/meson.build                       |    1 +
 examples/systemtap/lock-debug.stp             |    2 +-
 examples/systemtap/meson.build                |    9 +
 examples/xml/meson.build                      |    2 +
 examples/xml/storage/meson.build              |   15 +
 examples/xml/test/meson.build                 |   14 +
 include/libvirt/Makefile.am                   |   28 -
 include/libvirt/meson.build                   |   36 +
 include/meson.build                           |    3 +
 libvirt.spec.in                               |  203 +-
 m4/virt-acl.m4                                |   37 -
 m4/virt-apparmor.m4                           |   41 -
 m4/virt-arg.m4                                |  154 --
 m4/virt-attr.m4                               |   13 -
 m4/virt-audit.m4                              |   31 -
 m4/virt-bash-completion.m4                    |   70 -
 m4/virt-blkid.m4                              |   30 -
 m4/virt-capng.m4                              |   30 -
 m4/virt-chrdev-lock-files.m4                  |   52 -
 m4/virt-compile-pie.m4                        |   35 -
 m4/virt-compile-warnings.m4                   |  255 --
 m4/virt-curl.m4                               |   38 -
 m4/virt-dbus.m4                               |   41 -
 m4/virt-debug.m4                              |   33 -
 m4/virt-default-editor.m4                     |   32 -
 m4/virt-devmapper.m4                          |   32 -
 m4/virt-dlopen.m4                             |   45 -
 m4/virt-driver-bhyve.m4                       |   56 -
 m4/virt-driver-esx.m4                         |   57 -
 m4/virt-driver-hyperv.m4                      |   47 -
 m4/virt-driver-interface.m4                   |   49 -
 m4/virt-driver-libvirtd.m4                    |   33 -
 m4/virt-driver-libxl.m4                       |   74 -
 m4/virt-driver-lxc.m4                         |   74 -
 m4/virt-driver-modules.m4                     |   53 -
 m4/virt-driver-network.m4                     |   51 -
 m4/virt-driver-openvz.m4                      |   42 -
 m4/virt-driver-qemu.m4                        |  132 -
 m4/virt-driver-remote.m4                      |   48 -
 m4/virt-driver-test.m4                        |   33 -
 m4/virt-driver-vbox.m4                        |   44 -
 m4/virt-driver-vmware.m4                      |   33 -
 m4/virt-driver-vz.m4                          |   47 -
 m4/virt-dtrace.m4                             |   45 -
 m4/virt-external-programs.m4                  |  106 -
 m4/virt-firewalld-zone.m4                     |   45 -
 m4/virt-firewalld.m4                          |   43 -
 m4/virt-fuse.m4                               |   30 -
 m4/virt-glib.m4                               |   36 -
 m4/virt-gluster.m4                            |   32 -
 m4/virt-gnutls.m4                             |   30 -
 m4/virt-hal.m4                                |   30 -
 m4/virt-host-validate.m4                      |   43 -
 m4/virt-init-script.m4                        |   61 -
 m4/virt-lib.m4                                |  386 ---
 m4/virt-libiscsi.m4                           |   30 -
 m4/virt-libnl.m4                              |   47 -
 m4/virt-libpcap.m4                            |   62 -
 m4/virt-libssh.m4                             |   51 -
 m4/virt-libxml.m4                             |   36 -
 m4/virt-linker-no-indirect.m4                 |   32 -
 m4/virt-linker-no-undefined.m4                |   32 -
 m4/virt-linker-relro.m4                       |   35 -
 m4/virt-loader-nvram.m4                       |   49 -
 m4/virt-login-shell.m4                        |   43 -
 m4/virt-macvtap.m4                            |   56 -
 m4/virt-manywarnings.m4                       |  339 ---
 m4/virt-netcf.m4                              |   30 -
 m4/virt-nls.m4                                |   72 -
 m4/virt-nss.m4                                |   86 -
 m4/virt-numactl.m4                            |   34 -
 m4/virt-numad.m4                              |   58 -
 m4/virt-nwfilter.m4                           |   32 -
 m4/virt-openwsman.m4                          |   30 -
 m4/virt-parted.m4                             |   38 -
 m4/virt-pciaccess.m4                          |   30 -
 m4/virt-pm-utils.m4                           |   45 -
 m4/virt-polkit.m4                             |   62 -
 m4/virt-pthread.m4                            |   58 -
 m4/virt-readline.m4                           |   86 -
 m4/virt-result.m4                             |   42 -
 m4/virt-sanlock.m4                            |   47 -
 m4/virt-sasl.m4                               |   30 -
 m4/virt-secdriver-apparmor.m4                 |   50 -
 m4/virt-secdriver-selinux.m4                  |   43 -
 m4/virt-selinux.m4                            |   47 -
 m4/virt-ssh2.m4                               |   30 -
 m4/virt-storage-dir.m4                        |   33 -
 m4/virt-storage-disk.m4                       |   58 -
 m4/virt-storage-fs.m4                         |   89 -
 m4/virt-storage-gluster.m4                    |   43 -
 m4/virt-storage-iscsi-direct.m4               |   44 -
 m4/virt-storage-iscsi.m4                      |   50 -
 m4/virt-storage-lvm.m4                        |   90 -
 m4/virt-storage-mpath.m4                      |   53 -
 m4/virt-storage-rbd.m4                        |   62 -
 m4/virt-storage-scsi.m4                       |   36 -
 m4/virt-storage-sheepdog.m4                   |   56 -
 m4/virt-storage-vstorage.m4                   |   73 -
 m4/virt-storage-zfs.m4                        |   56 -
 m4/virt-sysctl.m4                             |   43 -
 m4/virt-tls-priority.m4                       |   33 -
 m4/virt-udev.m4                               |   36 -
 m4/virt-virtualport.m4                        |   65 -
 m4/virt-warnings.m4                           |  115 -
 m4/virt-win-common.m4                         |   42 -
 m4/virt-win-mingw.m4                          |   28 -
 m4/virt-win-symbols.m4                        |   40 -
 m4/virt-win-windres.m4                        |   36 -
 m4/virt-wireshark.m4                          |   71 -
 m4/virt-xdr.m4                                |   40 -
 m4/virt-yajl.m4                               |   42 -
 meson.build                                   | 2461 +++++++++++++++++
 meson_options.txt                             |  104 +
 po/Makefile.am                                |   94 -
 po/meson.build                                |   35 +
 run.in                                        |    4 +-
 scripts/apibuild.py                           |   26 +-
 scripts/check-augeas.sh                       |   12 +
 scripts/check-file-access.py                  |   24 +-
 scripts/check-remote-protocol.py              |   75 +-
 scripts/gen-def-files.sh                      |    5 +
 scripts/gen-sym-files.sh                      |   15 +
 scripts/install-dirs.sh                       |    5 +
 scripts/install-symlink.sh                    |    7 +
 scripts/meson-change-perms.sh                 |    6 +
 scripts/meson-dist.sh                         |    6 +
 scripts/meson-gen-authors.sh                  |    4 +
 scripts/meson-html-gen.py                     |   49 +
 scripts/meson-install-web.py                  |   10 +
 scripts/meson-python.sh                       |    3 +
 scripts/meson-timestamp.sh                    |    8 +
 scripts/meson.build                           |   40 +
 src/Makefile.am                               |  693 -----
 src/access/Makefile.inc.am                    |  153 -
 src/access/meson.build                        |  121 +
 src/admin/Makefile.inc.am                     |  146 -
 src/admin/meson.build                         |  114 +
 src/bhyve/Makefile.inc.am                     |  106 -
 src/bhyve/meson.build                         |   62 +
 src/conf/Makefile.inc.am                      |  191 --
 src/conf/meson.build                          |  110 +
 src/cpu/Makefile.inc.am                       |   27 -
 src/cpu/meson.build                           |   21 +
 src/cpu_map/Makefile.inc.am                   |   80 -
 src/cpu_map/meson.build                       |   75 +
 src/driver.c                                  |    2 +-
 src/esx/Makefile.inc.am                       |   91 -
 src/esx/meson.build                           |   67 +
 src/hyperv/Makefile.inc.am                    |   59 -
 src/hyperv/meson.build                        |   43 +
 src/hypervisor/Makefile.inc.am                |   20 -
 src/hypervisor/meson.build                    |   23 +
 src/interface/Makefile.inc.am                 |  125 -
 src/interface/meson.build                     |   64 +
 src/libvirt-lxc.pc.in                         |    2 +-
 src/libvirt-qemu.pc.in                        |    2 +-
 src/libvirt.pc.in                             |    2 +-
 src/libxl/Makefile.inc.am                     |  163 --
 src/libxl/meson.build                         |   89 +
 src/locking/Makefile.inc.am                   |  298 --
 src/locking/lock_manager.c                    |    2 +-
 src/locking/meson.build                       |  249 ++
 src/logging/Makefile.inc.am                   |  147 -
 src/logging/meson.build                       |  100 +
 src/lxc/Makefile.inc.am                       |  293 --
 src/lxc/meson.build                           |  190 ++
 src/meson.build                               |  969 +++++++
 src/network/Makefile.inc.am                   |  197 --
 src/network/{default.xml => default.xml.in}   |    0
 src/network/meson.build                       |  129 +
 src/node_device/Makefile.inc.am               |  151 -
 src/node_device/meson.build                   |   77 +
 src/nwfilter/Makefile.inc.am                  |  134 -
 src/nwfilter/meson.build                      |   73 +
 src/nwfilter/xml/meson.build                  |   22 +
 src/openvz/Makefile.inc.am                    |   30 -
 src/openvz/meson.build                        |   28 +
 src/qemu/Makefile.inc.am                      |  268 --
 src/{ => qemu}/libvirt_qemu_probes.d          |    0
 src/qemu/meson.build                          |  173 ++
 src/remote/Makefile.inc.am                    |  490 ----
 src/remote/meson.build                        |  288 ++
 ...n.target.in => virt-guest-shutdown.target} |    0
 src/rpc/Makefile.inc.am                       |  144 -
 src/rpc/meson.build                           |  136 +
 src/secret/Makefile.inc.am                    |  110 -
 src/secret/meson.build                        |   53 +
 src/security/Makefile.inc.am                  |  142 -
 src/security/apparmor/meson.build             |   38 +
 .../usr.lib.libvirt.virt-aa-helper.local      |    1 +
 src/security/meson.build                      |   57 +
 src/storage/Makefile.inc.am                   |  476 ----
 src/storage/meson.build                       |  306 ++
 src/storage/storage_backend.c                 |    2 +-
 src/test/Makefile.inc.am                      |   28 -
 src/test/meson.build                          |   26 +
 src/util/Makefile.inc.am                      |  318 ---
 src/util/meson.build                          |  212 ++
 src/util/virfile.c                            |   34 +-
 src/util/virstoragefilebackend.c              |    2 +-
 src/vbox/Makefile.inc.am                      |  138 -
 src/vbox/meson.build                          |   78 +
 src/vmware/Makefile.inc.am                    |   29 -
 src/vmware/meson.build                        |   26 +
 src/vmx/Makefile.inc.am                       |   24 -
 src/vmx/meson.build                           |   28 +
 src/vz/Makefile.inc.am                        |  117 -
 src/vz/meson.build                            |   68 +
 tests/Makefile.am                             | 1571 -----------
 tests/meson.build                             |  686 +++++
 tests/securityselinuxlabeltest.c              |    2 +-
 tests/securityselinuxtest.c                   |    2 +-
 tests/shunloadtest.c                          |    4 +-
 tests/testutils.c                             |    2 +-
 tests/testutils.h                             |    2 +-
 tests/viridentitytest.c                       |    2 +-
 tests/virsh-optparse                          |   58 +-
 tests/virsh-schedinfo                         |   12 +-
 tests/virt-aa-helper-test                     |    2 +-
 tests/virtestmock.c                           |    2 +-
 tools/Makefile.am                             |  529 ----
 tools/bash-completion/meson.build             |   13 +
 tools/meson.build                             |  292 ++
 tools/nss/meson.build                         |   92 +
 tools/wireshark/meson.build                   |    3 +
 tools/wireshark/src/libvirt/meson.build       |   20 +
 tools/wireshark/src/meson.build               |   17 +
 tools/wireshark/util/genxdrstub.pl            |    9 +-
 321 files changed, 9526 insertions(+), 15979 deletions(-)
 delete mode 100644 GNUmakefile
 delete mode 100644 Makefile.am
 delete mode 100755 autogen.sh
 create mode 100644 build-aux/Makefile.in
 rename Makefile.nonreentrant => build-aux/Makefile.nonreentrant (100%)
 create mode 100644 build-aux/meson.build
 create mode 100644 ci/aarch64-linux-gnu.meson
 create mode 100644 ci/arm-linux-gnueabi.meson
 create mode 100644 ci/arm-linux-gnueabihf.meson
 create mode 100644 ci/i686-linux-gnu.meson
 create mode 100644 ci/mips-linux-gnu.meson
 create mode 100644 ci/mips64el-linux-gnuabi64.meson
 create mode 100644 ci/mipsel-linux-gnu.meson
 create mode 100644 ci/powerpc64le-linux-gnu.meson
 create mode 100644 ci/s390x-linux-gnu.meson
 rename config-post.h => config.h (65%)
 create mode 100644 configmake.h.in
 delete mode 100644 configure.ac
 delete mode 100644 docs/Makefile.am
 create mode 100644 docs/fonts/meson.build
 create mode 100644 docs/html/meson.build
 create mode 100644 docs/internals/meson.build
 create mode 100644 docs/js/meson.build
 create mode 100644 docs/kbase/meson.build
 create mode 100644 docs/logos/meson.build
 rename docs/manpages/{index.rst => index.rst.in} (100%)
 rename docs/manpages/{libvirtd.rst => libvirtd.rst.in} (100%)
 create mode 100644 docs/manpages/meson.build
 rename docs/manpages/{virsh.rst => virsh.rst.in} (100%)
 rename docs/manpages/{virt-admin.rst => virt-admin.rst.in} (100%)
 rename docs/manpages/{virt-host-validate.rst => virt-host-validate.rst.in} (100%)
 rename docs/manpages/{virt-login-shell.rst => virt-login-shell.rst.in} (100%)
 rename docs/manpages/{virt-pki-validate.rst => virt-pki-validate.rst.in} (100%)
 rename docs/manpages/{virt-qemu-run.rst => virt-qemu-run.rst.in} (100%)
 rename docs/manpages/{virt-sanlock-cleanup.rst => virt-sanlock-cleanup.rst.in} (100%)
 rename docs/manpages/{virt-xml-validate.rst => virt-xml-validate.rst.in} (100%)
 rename docs/manpages/{virtlockd.rst => virtlockd.rst.in} (100%)
 rename docs/manpages/{virtlogd.rst => virtlogd.rst.in} (100%)
 create mode 100644 docs/meson.build
 create mode 100644 docs/schemas/meson.build
 delete mode 100644 examples/Makefile.am
 create mode 100644 examples/c/admin/meson.build
 create mode 100644 examples/c/domain/meson.build
 create mode 100644 examples/c/meson.build
 create mode 100644 examples/c/misc/meson.build
 create mode 100644 examples/meson.build
 create mode 100644 examples/polkit/meson.build
 create mode 100644 examples/sh/meson.build
 create mode 100644 examples/systemtap/meson.build
 create mode 100644 examples/xml/meson.build
 create mode 100644 examples/xml/storage/meson.build
 create mode 100644 examples/xml/test/meson.build
 delete mode 100644 include/libvirt/Makefile.am
 create mode 100644 include/libvirt/meson.build
 create mode 100644 include/meson.build
 delete mode 100644 m4/virt-acl.m4
 delete mode 100644 m4/virt-apparmor.m4
 delete mode 100644 m4/virt-arg.m4
 delete mode 100644 m4/virt-attr.m4
 delete mode 100644 m4/virt-audit.m4
 delete mode 100644 m4/virt-bash-completion.m4
 delete mode 100644 m4/virt-blkid.m4
 delete mode 100644 m4/virt-capng.m4
 delete mode 100644 m4/virt-chrdev-lock-files.m4
 delete mode 100644 m4/virt-compile-pie.m4
 delete mode 100644 m4/virt-compile-warnings.m4
 delete mode 100644 m4/virt-curl.m4
 delete mode 100644 m4/virt-dbus.m4
 delete mode 100644 m4/virt-debug.m4
 delete mode 100644 m4/virt-default-editor.m4
 delete mode 100644 m4/virt-devmapper.m4
 delete mode 100644 m4/virt-dlopen.m4
 delete mode 100644 m4/virt-driver-bhyve.m4
 delete mode 100644 m4/virt-driver-esx.m4
 delete mode 100644 m4/virt-driver-hyperv.m4
 delete mode 100644 m4/virt-driver-interface.m4
 delete mode 100644 m4/virt-driver-libvirtd.m4
 delete mode 100644 m4/virt-driver-libxl.m4
 delete mode 100644 m4/virt-driver-lxc.m4
 delete mode 100644 m4/virt-driver-modules.m4
 delete mode 100644 m4/virt-driver-network.m4
 delete mode 100644 m4/virt-driver-openvz.m4
 delete mode 100644 m4/virt-driver-qemu.m4
 delete mode 100644 m4/virt-driver-remote.m4
 delete mode 100644 m4/virt-driver-test.m4
 delete mode 100644 m4/virt-driver-vbox.m4
 delete mode 100644 m4/virt-driver-vmware.m4
 delete mode 100644 m4/virt-driver-vz.m4
 delete mode 100644 m4/virt-dtrace.m4
 delete mode 100644 m4/virt-external-programs.m4
 delete mode 100644 m4/virt-firewalld-zone.m4
 delete mode 100644 m4/virt-firewalld.m4
 delete mode 100644 m4/virt-fuse.m4
 delete mode 100644 m4/virt-glib.m4
 delete mode 100644 m4/virt-gluster.m4
 delete mode 100644 m4/virt-gnutls.m4
 delete mode 100644 m4/virt-hal.m4
 delete mode 100644 m4/virt-host-validate.m4
 delete mode 100644 m4/virt-init-script.m4
 delete mode 100644 m4/virt-lib.m4
 delete mode 100644 m4/virt-libiscsi.m4
 delete mode 100644 m4/virt-libnl.m4
 delete mode 100644 m4/virt-libpcap.m4
 delete mode 100644 m4/virt-libssh.m4
 delete mode 100644 m4/virt-libxml.m4
 delete mode 100644 m4/virt-linker-no-indirect.m4
 delete mode 100644 m4/virt-linker-no-undefined.m4
 delete mode 100644 m4/virt-linker-relro.m4
 delete mode 100644 m4/virt-loader-nvram.m4
 delete mode 100644 m4/virt-login-shell.m4
 delete mode 100644 m4/virt-macvtap.m4
 delete mode 100644 m4/virt-manywarnings.m4
 delete mode 100644 m4/virt-netcf.m4
 delete mode 100644 m4/virt-nls.m4
 delete mode 100644 m4/virt-nss.m4
 delete mode 100644 m4/virt-numactl.m4
 delete mode 100644 m4/virt-numad.m4
 delete mode 100644 m4/virt-nwfilter.m4
 delete mode 100644 m4/virt-openwsman.m4
 delete mode 100644 m4/virt-parted.m4
 delete mode 100644 m4/virt-pciaccess.m4
 delete mode 100644 m4/virt-pm-utils.m4
 delete mode 100644 m4/virt-polkit.m4
 delete mode 100644 m4/virt-pthread.m4
 delete mode 100644 m4/virt-readline.m4
 delete mode 100644 m4/virt-result.m4
 delete mode 100644 m4/virt-sanlock.m4
 delete mode 100644 m4/virt-sasl.m4
 delete mode 100644 m4/virt-secdriver-apparmor.m4
 delete mode 100644 m4/virt-secdriver-selinux.m4
 delete mode 100644 m4/virt-selinux.m4
 delete mode 100644 m4/virt-ssh2.m4
 delete mode 100644 m4/virt-storage-dir.m4
 delete mode 100644 m4/virt-storage-disk.m4
 delete mode 100644 m4/virt-storage-fs.m4
 delete mode 100644 m4/virt-storage-gluster.m4
 delete mode 100644 m4/virt-storage-iscsi-direct.m4
 delete mode 100644 m4/virt-storage-iscsi.m4
 delete mode 100644 m4/virt-storage-lvm.m4
 delete mode 100644 m4/virt-storage-mpath.m4
 delete mode 100644 m4/virt-storage-rbd.m4
 delete mode 100644 m4/virt-storage-scsi.m4
 delete mode 100644 m4/virt-storage-sheepdog.m4
 delete mode 100644 m4/virt-storage-vstorage.m4
 delete mode 100644 m4/virt-storage-zfs.m4
 delete mode 100644 m4/virt-sysctl.m4
 delete mode 100644 m4/virt-tls-priority.m4
 delete mode 100644 m4/virt-udev.m4
 delete mode 100644 m4/virt-virtualport.m4
 delete mode 100644 m4/virt-warnings.m4
 delete mode 100644 m4/virt-win-common.m4
 delete mode 100644 m4/virt-win-mingw.m4
 delete mode 100644 m4/virt-win-symbols.m4
 delete mode 100644 m4/virt-win-windres.m4
 delete mode 100644 m4/virt-wireshark.m4
 delete mode 100644 m4/virt-xdr.m4
 delete mode 100644 m4/virt-yajl.m4
 create mode 100644 meson.build
 create mode 100644 meson_options.txt
 delete mode 100644 po/Makefile.am
 create mode 100644 po/meson.build
 create mode 100644 scripts/check-augeas.sh
 create mode 100755 scripts/gen-def-files.sh
 create mode 100755 scripts/gen-sym-files.sh
 create mode 100644 scripts/install-dirs.sh
 create mode 100644 scripts/install-symlink.sh
 create mode 100644 scripts/meson-change-perms.sh
 create mode 100755 scripts/meson-dist.sh
 create mode 100755 scripts/meson-gen-authors.sh
 create mode 100755 scripts/meson-html-gen.py
 create mode 100755 scripts/meson-install-web.py
 create mode 100755 scripts/meson-python.sh
 create mode 100755 scripts/meson-timestamp.sh
 create mode 100644 scripts/meson.build
 delete mode 100644 src/Makefile.am
 delete mode 100644 src/access/Makefile.inc.am
 create mode 100644 src/access/meson.build
 delete mode 100644 src/admin/Makefile.inc.am
 create mode 100644 src/admin/meson.build
 delete mode 100644 src/bhyve/Makefile.inc.am
 create mode 100644 src/bhyve/meson.build
 delete mode 100644 src/conf/Makefile.inc.am
 create mode 100644 src/conf/meson.build
 delete mode 100644 src/cpu/Makefile.inc.am
 create mode 100644 src/cpu/meson.build
 delete mode 100644 src/cpu_map/Makefile.inc.am
 create mode 100644 src/cpu_map/meson.build
 delete mode 100644 src/esx/Makefile.inc.am
 create mode 100644 src/esx/meson.build
 delete mode 100644 src/hyperv/Makefile.inc.am
 create mode 100644 src/hyperv/meson.build
 delete mode 100644 src/hypervisor/Makefile.inc.am
 create mode 100644 src/hypervisor/meson.build
 delete mode 100644 src/interface/Makefile.inc.am
 create mode 100644 src/interface/meson.build
 delete mode 100644 src/libxl/Makefile.inc.am
 create mode 100644 src/libxl/meson.build
 delete mode 100644 src/locking/Makefile.inc.am
 create mode 100644 src/locking/meson.build
 delete mode 100644 src/logging/Makefile.inc.am
 create mode 100644 src/logging/meson.build
 delete mode 100644 src/lxc/Makefile.inc.am
 create mode 100644 src/lxc/meson.build
 create mode 100644 src/meson.build
 delete mode 100644 src/network/Makefile.inc.am
 rename src/network/{default.xml => default.xml.in} (100%)
 create mode 100644 src/network/meson.build
 delete mode 100644 src/node_device/Makefile.inc.am
 create mode 100644 src/node_device/meson.build
 delete mode 100644 src/nwfilter/Makefile.inc.am
 create mode 100644 src/nwfilter/meson.build
 create mode 100644 src/nwfilter/xml/meson.build
 delete mode 100644 src/openvz/Makefile.inc.am
 create mode 100644 src/openvz/meson.build
 delete mode 100644 src/qemu/Makefile.inc.am
 rename src/{ => qemu}/libvirt_qemu_probes.d (100%)
 create mode 100644 src/qemu/meson.build
 delete mode 100644 src/remote/Makefile.inc.am
 create mode 100644 src/remote/meson.build
 rename src/remote/{virt-guest-shutdown.target.in => virt-guest-shutdown.target} (100%)
 delete mode 100644 src/rpc/Makefile.inc.am
 create mode 100644 src/rpc/meson.build
 delete mode 100644 src/secret/Makefile.inc.am
 create mode 100644 src/secret/meson.build
 delete mode 100644 src/security/Makefile.inc.am
 create mode 100644 src/security/apparmor/meson.build
 create mode 100644 src/security/apparmor/usr.lib.libvirt.virt-aa-helper.local
 create mode 100644 src/security/meson.build
 delete mode 100644 src/storage/Makefile.inc.am
 create mode 100644 src/storage/meson.build
 delete mode 100644 src/test/Makefile.inc.am
 create mode 100644 src/test/meson.build
 delete mode 100644 src/util/Makefile.inc.am
 create mode 100644 src/util/meson.build
 delete mode 100644 src/vbox/Makefile.inc.am
 create mode 100644 src/vbox/meson.build
 delete mode 100644 src/vmware/Makefile.inc.am
 create mode 100644 src/vmware/meson.build
 delete mode 100644 src/vmx/Makefile.inc.am
 create mode 100644 src/vmx/meson.build
 delete mode 100644 src/vz/Makefile.inc.am
 create mode 100644 src/vz/meson.build
 delete mode 100644 tests/Makefile.am
 create mode 100644 tests/meson.build
 delete mode 100644 tools/Makefile.am
 create mode 100644 tools/bash-completion/meson.build
 create mode 100644 tools/meson.build
 create mode 100644 tools/nss/meson.build
 create mode 100644 tools/wireshark/meson.build
 create mode 100644 tools/wireshark/src/libvirt/meson.build
 create mode 100644 tools/wireshark/src/meson.build

-- 
2.26.2

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
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
> 
> and link to Giltab pipeline:
> 
>     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632

FWIW, some unit tests fail for me - Fedora 31, with pip installed meson 0.55

 11/154 check-virnetprotocol            FAIL           0.09s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py virnetprotocol virt_net_rpc /home/berrange/src/virt/libvirt/build/src/rpc /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/virnetprotocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_net_rpc@.*' in '/home/berrange/src/virt/libvirt/build/src/rpc'
-------

 12/154 check-virkeepaliveprotocol      FAIL           0.11s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py virkeepaliveprotocol virt_net_rpc /home/berrange/src/virt/libvirt/build/src/rpc /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/virkeepaliveprotocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_net_rpc@.*' in '/home/berrange/src/virt/libvirt/build/src/rpc'
-------

 13/154 check-remote_protocol           FAIL           0.09s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py remote_protocol virt_remote_driver /home/berrange/src/virt/libvirt/build/src/remote /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/remote_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/berrange/src/virt/libvirt/build/src/remote'
-------

 14/154 check-qemu_protocol             FAIL           0.11s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py qemu_protocol virt_remote_driver /home/berrange/src/virt/libvirt/build/src/remote /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/qemu_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/berrange/src/virt/libvirt/build/src/remote'
-------

 15/154 check-lxc_protocol              FAIL           0.10s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py lxc_protocol virt_remote_driver /home/berrange/src/virt/libvirt/build/src/remote /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/lxc_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/berrange/src/virt/libvirt/build/src/remote'
-------

 16/154 check-admin_protocol            FAIL           0.08s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py admin_protocol virt_admin_driver /home/berrange/src/virt/libvirt/build/src/admin /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/admin_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_admin_driver@.*' in '/home/berrange/src/virt/libvirt/build/src/admin'
-------

 17/154 check-lock_protocol             FAIL           0.08s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py lock_protocol lockd_impl /home/berrange/src/virt/libvirt/build/src/locking /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/lock_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@lockd_impl@.*' in '/home/berrange/src/virt/libvirt/build/src/locking'
-------

 18/154 check-lxc_monitor_protocol      FAIL           0.08s (exit status 1)

--- command ---
14:26:24 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /usr/bin/python3 /home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py lxc_monitor_protocol virt_driver_lxc_impl /home/berrange/src/virt/libvirt/build/src/lxc /usr/bin/pdwtags /home/berrange/src/virt/libvirt/build/../src/lxc_monitor_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/berrange/src/virt/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_driver_lxc_impl@.*' in '/home/berrange/src/virt/libvirt/build/src/lxc'
-------


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 03:28:52PM +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
> > 
> > and link to Giltab pipeline:
> > 
> >     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> 
> FWIW, some unit tests fail for me - Fedora 31, with pip installed meson 0.55
> 
>  11/154 check-virnetprotocol            FAIL           0.09s (exit status 1)

Right, they changed the name of internal temporary directories where
the object files are stored. They are required for pdwtags so I need to
figure out a better way how to get the object file path.

I knew that it was not that robust, sigh.

Thanks

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:

[...]

Tests fail when building with clang:

built as:

 CC=clang meson clang ~/libvirt
 cd clang
 ninja
 ninja test


Looking at the test output (pasted below) you didn't faithfully
reproduce the skipping of symbol file tests which have different
ordering when the code is compiled with clang.

Test output:

[0/1] Running all tests.
  1/154 check-aclperms                  OK             0.06s
  2/154 check-symfile                   OK             0.08s
  3/154 check-admin-symfile             OK             0.04s
  4/154 check-symsorting                OK             0.04s
  5/154 check-admin-symsorting          OK             0.03s
  6/154 check-drivername                OK             0.04s
  7/154 check-admin-drivername          OK             0.06s
  8/154 check-driverimpls               OK             0.22s
  9/154 check-aclrules                  OK             0.24s
 10/154 check-augeas                    OK             0.08s
 11/154 check-virnetprotocol            FAIL           0.05s (exit status 1)
 12/154 check-virkeepaliveprotocol      OK             0.05s
 13/154 check-remote_protocol           FAIL           0.10s (exit status 1)
 14/154 check-qemu_protocol             FAIL           0.05s (exit status 1)
 15/154 check-lxc_protocol              FAIL           0.05s (exit status 1)
 16/154 check-admin_protocol            FAIL           0.05s (exit status 1)
 17/154 check-lock_protocol             FAIL           0.04s (exit status 1)
 18/154 check-lxc_monitor_protocol      FAIL           0.04s (exit status 1)
 19/154 commandtest                     OK             0.42s
 20/154 cputest                         OK             0.77s
 21/154 domaincapstest                  OK             0.32s
 22/154 domainconftest                  OK             0.05s
 23/154 genericxml2xmltest              OK             0.11s
 24/154 interfacexml2xmltest            OK             0.04s
 25/154 metadatatest                    OK             0.03s
 26/154 networkxml2xmlupdatetest        OK             0.04s
 27/154 nodedevxml2xmltest              OK             0.02s
 28/154 nwfilterxml2xmltest             OK             0.03s
 29/154 objecteventtest                 OK             0.04s
 30/154 seclabeltest                    OK             0.02s
 31/154 secretxml2xmltest               OK             0.02s
 32/154 shunloadtest                    OK             0.02s
 33/154 sockettest                      OK             0.03s
 34/154 storagevolxml2xmltest           OK             0.02s
 35/154 sysinfotest                     OK             0.03s
 36/154 utiltest                        OK             0.05s
 37/154 viralloctest                    OK             0.02s
 38/154 virauthconfigtest               OK             0.02s
 39/154 virbitmaptest                   OK             0.02s
 40/154 virbuftest                      OK             0.02s
 41/154 vircapstest                     OK             0.02s
 42/154 vircgrouptest                   OK             0.05s
 43/154 virconftest                     OK             0.04s
 44/154 vircryptotest                   OK             0.03s
 45/154 virendiantest                   OK             0.03s
 46/154 virerrortest                    OK             0.03s
 47/154 virfilecachetest                OK             0.04s
 48/154 virfiletest                     OK             0.03s
 49/154 virfirewalltest                 OK             0.04s
 50/154 virhashtest                     OK             0.02s
 51/154 virhostcputest                  OK             0.05s
 52/154 virhostdevtest                  OK             0.11s
 53/154 viriscsitest                    OK             0.03s
 54/154 virkeycodetest                  OK             0.02s
 55/154 virkmodtest                     OK             0.03s
 56/154 virlockspacetest                OK             0.02s
 57/154 virlogtest                      OK             0.03s
 58/154 virnetdevtest                   OK             0.03s
 59/154 virnetworkportxml2xmltest       OK             0.03s
 60/154 virnwfilterbindingxml2xmltest   OK             0.02s
 61/154 virpcitest                      OK             0.04s
 62/154 virportallocatortest            OK             0.04s
 63/154 virrotatingfiletest             OK             0.04s
 64/154 virschematest                   OK             1.05s
 65/154 virshtest                       OK             1.10s
 66/154 virstringtest                   OK             0.02s
 67/154 virtimetest                     OK             0.02s
 68/154 virtypedparamtest               OK             0.03s
 69/154 viruritest                      OK             0.03s
 70/154 vshtabletest                    OK             0.01s
 71/154 fchosttest                      OK             0.04s
 72/154 scsihosttest                    OK             0.02s
 73/154 vircaps2xmltest                 OK             0.03s
 74/154 virnetdevbandwidthtest          OK             0.03s
 75/154 virresctrltest                  OK             0.03s
 76/154 virscsitest                     OK             0.03s
 77/154 virusbtest                      OK             0.04s
 78/154 virdbustest                     OK             0.02s
 79/154 virsystemdtest                  OK             0.03s
 80/154 virpolkittest                   OK             0.03s
 81/154 esxutilstest                    OK             0.01s
 82/154 eventtest                       OK             0.44s
 83/154 fdstreamtest                    OK             0.02s
 84/154 virdriverconnvalidatetest       OK             0.02s
 85/154 virdrivermoduletest             OK             0.05s
 86/154 libxlxml2domconfigtest          OK             0.05s
 87/154 xlconfigtest                    OK             0.06s
 88/154 xmconfigtest                    OK             0.05s
 89/154 lxcconf2xmltest                 OK             0.02s
 90/154 lxcxml2xmltest                  OK             0.03s
 91/154 networkxml2conftest             OK             0.03s
 92/154 networkxml2firewalltest         OK             0.03s
 93/154 networkxml2xmltest              OK             0.03s
 94/154 nodedevmdevctltest              OK             0.02s
 95/154 nsstest                         OK             0.05s
 96/154 nssguesttest                    OK             0.03s
 97/154 nwfilterebiptablestest          OK             0.02s
 98/154 nwfilterxml2firewalltest        OK             0.03s
 99/154 openvzutilstest                 OK             0.03s
100/154 qemuagenttest                   OK             0.03s
101/154 qemublocktest                   OK             0.13s
102/154 qemucapabilitiestest            OK             1.28s
103/154 qemucaps2xmltest                OK             0.13s
104/154 qemucommandutiltest             OK             0.02s
105/154 qemudomaincheckpointxml2xmltest OK             0.24s
106/154 qemudomainsnapshotxml2xmltest   OK             0.02s
107/154 qemufirmwaretest                OK             0.02s
108/154 qemuhotplugtest                 OK             0.38s
109/154 qemumemlocktest                 OK             0.08s
110/154 qemumigparamstest               OK             0.05s
111/154 qemumonitorjsontest             OK             0.38s
112/154 qemusecuritytest                OK             0.88s
113/154 qemuvhostusertest               OK             0.03s
114/154 qemuxml2argvtest                OK             4.69s
115/154 qemuxml2xmltest                 OK             1.78s
116/154 virnetdaemontest                OK             0.08s
117/154 virnetmessagetest               OK             0.02s
118/154 virnetserverclienttest          OK             0.05s
119/154 virnetsockettest                OK             0.13s
120/154 virnettlscontexttest            OK             0.33s
121/154 virnettlssessiontest            OK             0.48s
122/154 storagepoolcapstest             OK             0.04s
123/154 storagepoolxml2argvtest         OK             0.07s
124/154 storagepoolxml2xmltest          OK             0.07s
125/154 storagevolxml2argvtest          OK             0.04s
126/154 virstorageutiltest              OK             0.02s
127/154 virstoragetest                  OK             0.93s
128/154 storagebackendsheepdogtest      OK             0.03s
129/154 vboxsnapshotxmltest             OK             0.04s
130/154 vmwarevertest                   OK             0.02s
131/154 vmx2xmltest                     OK             0.04s
132/154 xml2vmxtest                     OK             0.04s
133/154 virjsontest                     OK             0.02s
134/154 virmacmaptest                   OK             0.04s
135/154 virnetdevopenvswitchtest        OK             0.02s
136/154 libvirtd-fail                   OK             0.04s
137/154 libvirtd-pool                   OK             0.07s
138/154 virsh-auth                      OK             0.07s
139/154 virsh-checkpoint                OK             0.33s
140/154 virsh-cpuset                    OK             0.07s
141/154 virsh-define-dev-segfault       OK             0.07s
142/154 virsh-int-overflow              OK             0.04s
143/154 virsh-optparse                  SKIP           0.03s
144/154 virsh-read-bufsiz               OK             0.12s
145/154 virsh-read-non-seekable         OK             0.07s
146/154 virsh-schedinfo                 OK             0.04s
147/154 virsh-self-test                 OK             0.07s
148/154 virsh-snapshot                  OK             0.37s
149/154 virsh-start                     OK             0.08s
150/154 virsh-undefine                  OK             0.12s
151/154 virsh-uriprecedence             OK             0.23s
152/154 virsh-vcpupin                   OK             0.22s
153/154 virt-admin-self-test            OK             0.07s
154/154 check-html                      OK             0.07s

Ok:                 146
Expected Fail:      0
Fail:               7
Unexpected Pass:    0
Skipped:            1
Timeout:            0


The output from the failed tests:

 11/154 check-virnetprotocol            FAIL           0.05s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py virnetprotocol virt_net_rpc /home/pipo/build/libvirt/meson/clang/src/rpc /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/virnetprotocol-structs
--- stdout ---
--- /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/virnetprotocol-structs	2020-01-29 15:18:11.000000000 +0100
+++ -	2020-07-17 11:18:24.972477362 +0200
@@ -13,14 +13,6 @@
         VIR_NET_ERROR = 1,
         VIR_NET_CONTINUE = 2,
 };
-struct virNetMessageHeader {
-        u_int                      prog;
-        u_int                      vers;
-        int                        proc;
-        virNetMessageType          type;
-        u_int                      serial;
-        virNetMessageStatus        status;
-};
 struct virNetMessageNonnullDomain {
         virNetMessageNonnullString name;
         virNetMessageUUID          uuid;
@@ -30,6 +22,14 @@
         virNetMessageNonnullString name;
         virNetMessageUUID          uuid;
 };
+struct virNetMessageHeader {
+        u_int                      prog;
+        u_int                      vers;
+        int                        proc;
+        virNetMessageType          type;
+        u_int                      serial;
+        virNetMessageStatus        status;
+};
 struct virNetMessageError {
         int                        code;
         int                        domain;
-------

 13/154 check-remote_protocol           FAIL           0.10s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py remote_protocol virt_remote_driver /home/pipo/build/libvirt/meson/clang/src/remote /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/remote_protocol-structs
--- Listing only the last 100 lines from a long log. ---
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_BLOCK_JOB = 326,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_DISK_CHANGE = 327,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_TRAY_CHANGE = 328,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_PMWAKEUP = 329,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_PMSUSPEND = 330,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_BALLOON_CHANGE = 331,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_PMSUSPEND_DISK = 332,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_DEVICE_REMOVED = 333,
-        REMOTE_PROC_DOMAIN_CORE_DUMP_WITH_FORMAT = 334,
-        REMOTE_PROC_DOMAIN_FSFREEZE = 335,
-        REMOTE_PROC_DOMAIN_FSTHAW = 336,
-        REMOTE_PROC_DOMAIN_GET_TIME = 337,
-        REMOTE_PROC_DOMAIN_SET_TIME = 338,
-        REMOTE_PROC_DOMAIN_EVENT_BLOCK_JOB_2 = 339,
-        REMOTE_PROC_NODE_GET_FREE_PAGES = 340,
-        REMOTE_PROC_NETWORK_GET_DHCP_LEASES = 341,
-        REMOTE_PROC_CONNECT_GET_DOMAIN_CAPABILITIES = 342,
-        REMOTE_PROC_DOMAIN_OPEN_GRAPHICS_FD = 343,
-        REMOTE_PROC_CONNECT_GET_ALL_DOMAIN_STATS = 344,
-        REMOTE_PROC_DOMAIN_BLOCK_COPY = 345,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_TUNABLE = 346,
-        REMOTE_PROC_NODE_ALLOC_PAGES = 347,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_AGENT_LIFECYCLE = 348,
-        REMOTE_PROC_DOMAIN_GET_FSINFO = 349,
-        REMOTE_PROC_DOMAIN_DEFINE_XML_FLAGS = 350,
-        REMOTE_PROC_DOMAIN_GET_IOTHREAD_INFO = 351,
-        REMOTE_PROC_DOMAIN_PIN_IOTHREAD = 352,
-        REMOTE_PROC_DOMAIN_INTERFACE_ADDRESSES = 353,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_DEVICE_ADDED = 354,
-        REMOTE_PROC_DOMAIN_ADD_IOTHREAD = 355,
-        REMOTE_PROC_DOMAIN_DEL_IOTHREAD = 356,
-        REMOTE_PROC_DOMAIN_SET_USER_PASSWORD = 357,
-        REMOTE_PROC_DOMAIN_RENAME = 358,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_MIGRATION_ITERATION = 359,
-        REMOTE_PROC_CONNECT_REGISTER_CLOSE_CALLBACK = 360,
-        REMOTE_PROC_CONNECT_UNREGISTER_CLOSE_CALLBACK = 361,
-        REMOTE_PROC_CONNECT_EVENT_CONNECTION_CLOSED = 362,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_JOB_COMPLETED = 363,
-        REMOTE_PROC_DOMAIN_MIGRATE_START_POST_COPY = 364,
-        REMOTE_PROC_DOMAIN_GET_PERF_EVENTS = 365,
-        REMOTE_PROC_DOMAIN_SET_PERF_EVENTS = 366,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_DEVICE_REMOVAL_FAILED = 367,
-        REMOTE_PROC_CONNECT_STORAGE_POOL_EVENT_REGISTER_ANY = 368,
-        REMOTE_PROC_CONNECT_STORAGE_POOL_EVENT_DEREGISTER_ANY = 369,
-        REMOTE_PROC_STORAGE_POOL_EVENT_LIFECYCLE = 370,
-        REMOTE_PROC_DOMAIN_GET_GUEST_VCPUS = 371,
-        REMOTE_PROC_DOMAIN_SET_GUEST_VCPUS = 372,
-        REMOTE_PROC_STORAGE_POOL_EVENT_REFRESH = 373,
-        REMOTE_PROC_CONNECT_NODE_DEVICE_EVENT_REGISTER_ANY = 374,
-        REMOTE_PROC_CONNECT_NODE_DEVICE_EVENT_DEREGISTER_ANY = 375,
-        REMOTE_PROC_NODE_DEVICE_EVENT_LIFECYCLE = 376,
-        REMOTE_PROC_NODE_DEVICE_EVENT_UPDATE = 377,
-        REMOTE_PROC_STORAGE_VOL_GET_INFO_FLAGS = 378,
-        REMOTE_PROC_DOMAIN_EVENT_CALLBACK_METADATA_CHANGE = 379,
-        REMOTE_PROC_CONNECT_SECRET_EVENT_REGISTER_ANY = 380,
-        REMOTE_PROC_CONNECT_SECRET_EVENT_DEREGISTER_ANY = 381,
-        REMOTE_PROC_SECRET_EVENT_LIFECYCLE = 382,
-        REMOTE_PROC_SECRET_EVENT_VALUE_CHANGED = 383,
-        REMOTE_PROC_DOMAIN_SET_VCPU = 384,
-        REMOTE_PROC_DOMAIN_EVENT_BLOCK_THRESHOLD = 385,
-        REMOTE_PROC_DOMAIN_SET_BLOCK_THRESHOLD = 386,
-        REMOTE_PROC_DOMAIN_MIGRATE_GET_MAX_DOWNTIME = 387,
-        REMOTE_PROC_DOMAIN_MANAGED_SAVE_GET_XML_DESC = 388,
-        REMOTE_PROC_DOMAIN_MANAGED_SAVE_DEFINE_XML = 389,
-        REMOTE_PROC_DOMAIN_SET_LIFECYCLE_ACTION = 390,
-        REMOTE_PROC_STORAGE_POOL_LOOKUP_BY_TARGET_PATH = 391,
-        REMOTE_PROC_DOMAIN_DETACH_DEVICE_ALIAS = 392,
-        REMOTE_PROC_CONNECT_COMPARE_HYPERVISOR_CPU = 393,
-        REMOTE_PROC_CONNECT_BASELINE_HYPERVISOR_CPU = 394,
-        REMOTE_PROC_NODE_GET_SEV_INFO = 395,
-        REMOTE_PROC_DOMAIN_GET_LAUNCH_SECURITY_INFO = 396,
-        REMOTE_PROC_NWFILTER_BINDING_LOOKUP_BY_PORT_DEV = 397,
-        REMOTE_PROC_NWFILTER_BINDING_GET_XML_DESC = 398,
-        REMOTE_PROC_NWFILTER_BINDING_CREATE_XML = 399,
-        REMOTE_PROC_NWFILTER_BINDING_DELETE = 400,
-        REMOTE_PROC_CONNECT_LIST_ALL_NWFILTER_BINDINGS = 401,
-        REMOTE_PROC_DOMAIN_SET_IOTHREAD_PARAMS = 402,
-        REMOTE_PROC_CONNECT_GET_STORAGE_POOL_CAPABILITIES = 403,
-        REMOTE_PROC_NETWORK_LIST_ALL_PORTS = 404,
-        REMOTE_PROC_NETWORK_PORT_LOOKUP_BY_UUID = 405,
-        REMOTE_PROC_NETWORK_PORT_CREATE_XML = 406,
-        REMOTE_PROC_NETWORK_PORT_GET_PARAMETERS = 407,
-        REMOTE_PROC_NETWORK_PORT_SET_PARAMETERS = 408,
-        REMOTE_PROC_NETWORK_PORT_GET_XML_DESC = 409,
-        REMOTE_PROC_NETWORK_PORT_DELETE = 410,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_CREATE_XML = 411,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_GET_XML_DESC = 412,
-        REMOTE_PROC_DOMAIN_LIST_ALL_CHECKPOINTS = 413,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_LIST_ALL_CHILDREN = 414,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_LOOKUP_BY_NAME = 415,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_GET_PARENT = 416,
-        REMOTE_PROC_DOMAIN_CHECKPOINT_DELETE = 417,
-        REMOTE_PROC_DOMAIN_GET_GUEST_INFO = 418,
-        REMOTE_PROC_CONNECT_SET_IDENTITY = 419,
-        REMOTE_PROC_DOMAIN_AGENT_SET_RESPONSE_TIMEOUT = 420,
-        REMOTE_PROC_DOMAIN_BACKUP_BEGIN = 421,
-        REMOTE_PROC_DOMAIN_BACKUP_GET_XML_DESC = 422,
-};
-------

 14/154 check-qemu_protocol             FAIL           0.05s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py qemu_protocol virt_remote_driver /home/pipo/build/libvirt/meson/clang/src/remote /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/qemu_protocol-structs
--- stdout ---
--- /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/qemu_protocol-structs	2020-01-29 15:18:11.000000000 +0100
+++ -	2020-07-17 11:18:24.996893209 +0200
@@ -4,6 +4,14 @@
         remote_uuid                uuid;
         int                        id;
 };
+enum qemu_procedure {
+        QEMU_PROC_DOMAIN_MONITOR_COMMAND = 1,
+        QEMU_PROC_DOMAIN_ATTACH = 2,
+        QEMU_PROC_DOMAIN_AGENT_COMMAND = 3,
+        QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_REGISTER = 4,
+        QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_DEREGISTER = 5,
+        QEMU_PROC_DOMAIN_MONITOR_EVENT = 6,
+};
 struct qemu_domain_monitor_command_args {
         remote_nonnull_domain      dom;
         remote_nonnull_string      cmd;
@@ -47,11 +55,3 @@
         u_int                      micros;
         remote_string              details;
 };
-enum qemu_procedure {
-        QEMU_PROC_DOMAIN_MONITOR_COMMAND = 1,
-        QEMU_PROC_DOMAIN_ATTACH = 2,
-        QEMU_PROC_DOMAIN_AGENT_COMMAND = 3,
-        QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_REGISTER = 4,
-        QEMU_PROC_CONNECT_DOMAIN_MONITOR_EVENT_DEREGISTER = 5,
-        QEMU_PROC_DOMAIN_MONITOR_EVENT = 6,
-};
-------

 15/154 check-lxc_protocol              FAIL           0.05s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lxc_protocol virt_remote_driver /home/pipo/build/libvirt/meson/clang/src/remote /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lxc_protocol-structs
--- stdout ---
--- /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lxc_protocol-structs	2020-01-29 15:18:11.000000000 +0100
+++ -	2020-07-17 11:18:24.996089241 +0200
@@ -4,10 +4,10 @@
         remote_uuid                uuid;
         int                        id;
 };
+enum lxc_procedure {
+        LXC_PROC_DOMAIN_OPEN_NAMESPACE = 1,
+};
 struct lxc_domain_open_namespace_args {
         remote_nonnull_domain      dom;
         u_int                      flags;
 };
-enum lxc_procedure {
-        LXC_PROC_DOMAIN_OPEN_NAMESPACE = 1,
-};
-------

 16/154 check-admin_protocol            FAIL           0.05s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py admin_protocol virt_admin_driver /home/pipo/build/libvirt/meson/clang/src/admin /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/admin_protocol-structs
--- Listing only the last 100 lines from a long log. ---
 struct admin_typed_param {
         admin_nonnull_string       field;
         admin_typed_param_value    value;
 };
-struct admin_nonnull_server {
-        admin_nonnull_string       name;
-};
-struct admin_nonnull_client {
-        admin_nonnull_server       srv;
-        uint64_t                   id;
-        int64_t                    timestamp;
-        u_int                      transport;
-};
 struct admin_connect_open_args {
         u_int                      flags;
 };
@@ -39,8 +58,6 @@
                 u_int              servers_len;
                 admin_nonnull_server * servers_val;
         } servers;
-        u_int                      ret;
-};
 struct admin_connect_lookup_server_args {
         admin_nonnull_string       name;
         u_int                      flags;
@@ -57,15 +74,12 @@
                 u_int              params_len;
                 admin_typed_param * params_val;
         } params;
-};
 struct admin_server_set_threadpool_parameters_args {
         admin_nonnull_server       srv;
         struct {
                 u_int              params_len;
                 admin_typed_param * params_val;
         } params;
-        u_int                      flags;
-};
 struct admin_server_list_clients_args {
         admin_nonnull_server       srv;
         u_int                      need_results;
@@ -76,8 +90,6 @@
                 u_int              clients_len;
                 admin_nonnull_client * clients_val;
         } clients;
-        u_int                      ret;
-};
 struct admin_server_lookup_client_args {
         admin_nonnull_server       srv;
         uint64_t                   id;
@@ -95,7 +107,6 @@
                 u_int              params_len;
                 admin_typed_param * params_val;
         } params;
-};
 struct admin_client_close_args {
         admin_nonnull_client       clnt;
         u_int                      flags;
@@ -109,15 +120,12 @@
                 u_int              params_len;
                 admin_typed_param * params_val;
         } params;
-};
 struct admin_server_set_client_limits_args {
         admin_nonnull_server       srv;
         struct {
                 u_int              params_len;
                 admin_typed_param * params_val;
         } params;
-        u_int                      flags;
-};
 struct admin_server_update_tls_files_args {
         admin_nonnull_server       srv;
         u_int                      flags;
@@ -144,23 +152,3 @@
         admin_string               filters;
         u_int                      flags;
 };
-enum admin_procedure {
-        ADMIN_PROC_CONNECT_OPEN = 1,
-        ADMIN_PROC_CONNECT_CLOSE = 2,
-        ADMIN_PROC_CONNECT_GET_LIB_VERSION = 3,
-        ADMIN_PROC_CONNECT_LIST_SERVERS = 4,
-        ADMIN_PROC_CONNECT_LOOKUP_SERVER = 5,
-        ADMIN_PROC_SERVER_GET_THREADPOOL_PARAMETERS = 6,
-        ADMIN_PROC_SERVER_SET_THREADPOOL_PARAMETERS = 7,
-        ADMIN_PROC_SERVER_LIST_CLIENTS = 8,
-        ADMIN_PROC_SERVER_LOOKUP_CLIENT = 9,
-        ADMIN_PROC_CLIENT_GET_INFO = 10,
-        ADMIN_PROC_CLIENT_CLOSE = 11,
-        ADMIN_PROC_SERVER_GET_CLIENT_LIMITS = 12,
-        ADMIN_PROC_SERVER_SET_CLIENT_LIMITS = 13,
-        ADMIN_PROC_CONNECT_GET_LOGGING_OUTPUTS = 14,
-        ADMIN_PROC_CONNECT_GET_LOGGING_FILTERS = 15,
-        ADMIN_PROC_CONNECT_SET_LOGGING_OUTPUTS = 16,
-        ADMIN_PROC_CONNECT_SET_LOGGING_FILTERS = 17,
-        ADMIN_PROC_SERVER_UPDATE_TLS_FILES = 18,
-};
-------

 17/154 check-lock_protocol             FAIL           0.04s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lock_protocol lockd_impl /home/pipo/build/libvirt/meson/clang/src/locking /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lock_protocol-structs
--- stdout ---
--- /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lock_protocol-structs	2020-01-29 15:18:11.000000000 +0100
+++ -	2020-07-17 11:18:25.001138489 +0200
@@ -1,4 +1,14 @@
 /* -*- c -*- */
+enum virLockSpaceProtocolProcedure {
+        VIR_LOCK_SPACE_PROTOCOL_PROC_REGISTER = 1,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_RESTRICT = 2,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_NEW = 3,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_RESOURCE = 4,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_DELETE_RESOURCE = 5,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_ACQUIRE_RESOURCE = 6,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_RELEASE_RESOURCE = 7,
+        VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_LOCKSPACE = 8,
+};
 struct virLockSpaceProtocolOwner {
         virLockSpaceProtocolUUID   uuid;
         virLockSpaceProtocolNonNullString name;
@@ -39,13 +49,3 @@
 struct virLockSpaceProtocolCreateLockSpaceArgs {
         virLockSpaceProtocolNonNullString path;
 };
-enum virLockSpaceProtocolProcedure {
-        VIR_LOCK_SPACE_PROTOCOL_PROC_REGISTER = 1,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_RESTRICT = 2,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_NEW = 3,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_RESOURCE = 4,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_DELETE_RESOURCE = 5,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_ACQUIRE_RESOURCE = 6,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_RELEASE_RESOURCE = 7,
-        VIR_LOCK_SPACE_PROTOCOL_PROC_CREATE_LOCKSPACE = 8,
-};
-------

 18/154 check-lxc_monitor_protocol      FAIL           0.04s (exit status 1)

--- command ---
09:18:24 LANG='C' LC_CTYPE='en_US.UTF-8' LC_ALL='' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lxc_monitor_protocol virt_driver_lxc_impl /home/pipo/build/libvirt/meson/clang/src/lxc /bin/pdwtags /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lxc_monitor_protocol-structs
--- stdout ---
--- /home/pipo/build/libvirt/meson/clang/../../../../libvirt/src/lxc_monitor_protocol-structs	2020-01-29 15:18:11.000000000 +0100
+++ -	2020-07-17 11:18:24.999930097 +0200
@@ -4,13 +4,13 @@
         VIR_LXC_MONITOR_EXIT_STATUS_SHUTDOWN = 1,
         VIR_LXC_MONITOR_EXIT_STATUS_REBOOT = 2,
 };
+enum virLXCMonitorProcedure {
+        VIR_LXC_MONITOR_PROC_EXIT_EVENT = 1,
+        VIR_LXC_MONITOR_PROC_INIT_EVENT = 2,
+};
 struct virLXCMonitorExitEventMsg {
         virLXCMonitorExitStatus    status;
 };
 struct virLXCMonitorInitEventMsg {
         uint64_t                   initpid;
 };
-enum virLXCMonitorProcedure {
-        VIR_LXC_MONITOR_PROC_EXIT_EVENT = 1,
-        VIR_LXC_MONITOR_PROC_INIT_EVENT = 2,
-};
-------

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 11:21:56AM +0200, Peter Krempa wrote:
> On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> 
> [...]
> 
> Tests fail when building with clang:
> 
> built as:
> 
>  CC=clang meson clang ~/libvirt
>  cd clang
>  ninja
>  ninja test
> 
> 
> Looking at the test output (pasted below) you didn't faithfully
> reproduce the skipping of symbol file tests which have different
> ordering when the code is compiled with clang.

Nice catch, thanks. I tried building it with clang but did not try
running tests. Should have tried running ninja dist.

I'll fix it.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Ján Tomko 3 years, 9 months ago
On a Friday in 2020, Pavel Hrdina wrote:
>On Fri, Jul 17, 2020 at 11:21:56AM +0200, Peter Krempa wrote:
>> On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
>>
>> [...]
>>
>> Tests fail when building with clang:
>>
>> built as:
>>
>>  CC=clang meson clang ~/libvirt
>>  cd clang
>>  ninja
>>  ninja test
>>
>>
>> Looking at the test output (pasted below) you didn't faithfully
>> reproduce the skipping of symbol file tests which have different
>> ordering when the code is compiled with clang.
>
>Nice catch, thanks. I tried building it with clang but did not try
>running tests.

Umm, how did the pipeline pass then, do we not run tests?

Jano

>Should have tried running ninja dist.
>
>I'll fix it.
>
>Pavel


Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Fri, Jul 17, 2020 at 12:06:54PM +0200, Ján Tomko wrote:
> On a Friday in 2020, Pavel Hrdina wrote:
> > On Fri, Jul 17, 2020 at 11:21:56AM +0200, Peter Krempa wrote:
> > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > 
> > > [...]
> > > 
> > > Tests fail when building with clang:
> > > 
> > > built as:
> > > 
> > >  CC=clang meson clang ~/libvirt
> > >  cd clang
> > >  ninja
> > >  ninja test
> > > 
> > > 
> > > Looking at the test output (pasted below) you didn't faithfully
> > > reproduce the skipping of symbol file tests which have different
> > > ordering when the code is compiled with clang.
> > 
> > Nice catch, thanks. I tried building it with clang but did not try
> > running tests.
> 
> Umm, how did the pipeline pass then, do we not run tests?

We only use clang on FreeBSD & macOS and don't run unit tests
on either. 


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Fri, Jul 17, 2020 at 11:39:15 +0200, Pavel Hrdina wrote:
> On Fri, Jul 17, 2020 at 11:21:56AM +0200, Peter Krempa wrote:
> > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > 
> > [...]
> > 
> > Tests fail when building with clang:
> > 
> > built as:
> > 
> >  CC=clang meson clang ~/libvirt
> >  cd clang
> >  ninja
> >  ninja test
> > 
> > 
> > Looking at the test output (pasted below) you didn't faithfully
> > reproduce the skipping of symbol file tests which have different
> > ordering when the code is compiled with clang.
> 
> Nice catch, thanks. I tried building it with clang but did not try
> running tests. Should have tried running ninja dist.

The fixed version on your branch now doesn't execute the tests when
building with clang.

After some learning curve (e.g. using -Dsystem=true to do the equivalent
of ./autogen.sh --system, and the .libs/ directory stopping to exist
I've successfully built both my normal workflows.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 03:45:36PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 11:39:15 +0200, Pavel Hrdina wrote:
> > On Fri, Jul 17, 2020 at 11:21:56AM +0200, Peter Krempa wrote:
> > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > 
> > > [...]
> > > 
> > > Tests fail when building with clang:
> > > 
> > > built as:
> > > 
> > >  CC=clang meson clang ~/libvirt
> > >  cd clang
> > >  ninja
> > >  ninja test
> > > 
> > > 
> > > Looking at the test output (pasted below) you didn't faithfully
> > > reproduce the skipping of symbol file tests which have different
> > > ordering when the code is compiled with clang.
> > 
> > Nice catch, thanks. I tried building it with clang but did not try
> > running tests. Should have tried running ninja dist.
> 
> The fixed version on your branch now doesn't execute the tests when
> building with clang.

With autoconf they were silently skipped so I decided to not run them at
all, but we can change it to show the as skipped.

> After some learning curve (e.g. using -Dsystem=true to do the equivalent
> of ./autogen.sh --system, and the .libs/ directory stopping to exist
> I've successfully built both my normal workflows.

Glad to hear that it works for someone else as well.

Thanks for testing and the feedback.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
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.

Some things I noticed, building on Fedora 31, with meson 0.55 from pip

A bunch of warnings from meson:

WARNING: custom_target 'virtesxgen' has more than one output! Using the first one.
WARNING: custom_target 'virthypervgen' has more than one output! Using the first one.
WARNING: custom_target 'protocol.h' has more than one output! Using the first one.
WARNING: custom_target 'generate-api' has more than one output! Using the first one.
WARNING: custom_target 'index-api' has more than one output! Using the first one.
WARNING: custom_target 'index-admin-api' has more than one output! Using the first one.
WARNING: custom_target 'index-lxc-api' has more than one output! Using the first one.
WARNING: custom_target 'index-qemu-api' has more than one output! Using the first one.


During build, a bunch of bogus automake style progress messages:


 Generating virtesxgen with a custom command
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typedef
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typeenum
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typetostring
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typefromstring
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.h
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.c
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.h
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.c
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.macro
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.h
  GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.c

Generating virthypervgen with a custom command
  GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.typedef
  GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.h
  GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.c


And one problem I think is unrelated / pre-existing, but lost in the noise
of automake:

../tests/qemuxml2xmltest.c: In function ‘mymain’:
../tests/qemuxml2xmltest.c:132:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
  132 | mymain(void)
      | ^~~~~~


The conversion has introduced 9 new shell scripts in scripts/.

IMHO, all of these need to be python scripts instead to follow out intent
to standardize on python. I dream of a world with zero shell scripts.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 03:24:38PM +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.
> 
> Some things I noticed, building on Fedora 31, with meson 0.55 from pip
> 
> A bunch of warnings from meson:
> 
> WARNING: custom_target 'virtesxgen' has more than one output! Using the first one.
> WARNING: custom_target 'virthypervgen' has more than one output! Using the first one.
> WARNING: custom_target 'protocol.h' has more than one output! Using the first one.
> WARNING: custom_target 'generate-api' has more than one output! Using the first one.
> WARNING: custom_target 'index-api' has more than one output! Using the first one.
> WARNING: custom_target 'index-admin-api' has more than one output! Using the first one.
> WARNING: custom_target 'index-lxc-api' has more than one output! Using the first one.
> WARNING: custom_target 'index-qemu-api' has more than one output! Using the first one.

So it fails with meson 0.55.0 on my Fedora 32 as well. I bisected Meson
repository and this commit <b4b1a2c5a145c1459fc4563a289e164e23bd6a02>
breaks the behavior so I believe it's a bug in Meson.

The warning is generated by any custom_target that has multiple output
files which is obviously incorrect as documentation [1] states that:

    * output: list of output files

I created an issue on github for this warning [2].

> During build, a bunch of bogus automake style progress messages:
> 
> 
>  Generating virtesxgen with a custom command
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typedef
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typeenum
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typetostring
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typefromstring
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.h
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.c
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.h
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.c
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.macro
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.h
>   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.c
> 
> Generating virthypervgen with a custom command
>   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.typedef
>   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.h
>   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.c

These are generated by scripts:

    scripts/esx_vi_generator.py
    scripts/hyperv_wmi_generator.py

I was ignoring these outputs but I agree that it would be probably nice
to remote it. I'll fix it and push fixed version into gitlab.

> And one problem I think is unrelated / pre-existing, but lost in the noise
> of automake:
> 
> ../tests/qemuxml2xmltest.c: In function ‘mymain’:
> ../tests/qemuxml2xmltest.c:132:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
>   132 | mymain(void)
>       | ^~~~~~

It is pre-existing so not addressing it right now as it's unrelated.

> The conversion has introduced 9 new shell scripts in scripts/.
> 
> IMHO, all of these need to be python scripts instead to follow out intent
> to standardize on python. I dream of a world with zero shell scripts.

Sure, works for me. My idea was that these scripts are super simple and
python would be overkill but I'm OK with using python. I'll rewrite it
and push into gitlab.

Thanks for the review.

Pavel

[1] <https://mesonbuild.com/Reference-manual.html#custom_target>
[2] <https://github.com/mesonbuild/meson/issues/7466>
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Fri, Jul 17, 2020 at 07:00:44PM +0200, Pavel Hrdina wrote:
> On Fri, Jul 17, 2020 at 03:24:38PM +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.
> > 
> > Some things I noticed, building on Fedora 31, with meson 0.55 from pip
> > 
> > A bunch of warnings from meson:
> > 
> > WARNING: custom_target 'virtesxgen' has more than one output! Using the first one.
> > WARNING: custom_target 'virthypervgen' has more than one output! Using the first one.
> > WARNING: custom_target 'protocol.h' has more than one output! Using the first one.
> > WARNING: custom_target 'generate-api' has more than one output! Using the first one.
> > WARNING: custom_target 'index-api' has more than one output! Using the first one.
> > WARNING: custom_target 'index-admin-api' has more than one output! Using the first one.
> > WARNING: custom_target 'index-lxc-api' has more than one output! Using the first one.
> > WARNING: custom_target 'index-qemu-api' has more than one output! Using the first one.
> 
> So it fails with meson 0.55.0 on my Fedora 32 as well. I bisected Meson
> repository and this commit <b4b1a2c5a145c1459fc4563a289e164e23bd6a02>
> breaks the behavior so I believe it's a bug in Meson.
> 
> The warning is generated by any custom_target that has multiple output
> files which is obviously incorrect as documentation [1] states that:
> 
>     * output: list of output files
> 
> I created an issue on github for this warning [2].
> 
> > During build, a bunch of bogus automake style progress messages:
> > 
> > 
> >  Generating virtesxgen with a custom command
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typedef
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typeenum
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typetostring
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typefromstring
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.h
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.c
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.h
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.c
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.macro
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.h
> >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.c
> > 
> > Generating virthypervgen with a custom command
> >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.typedef
> >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.h
> >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.c
> 
> These are generated by scripts:
> 
>     scripts/esx_vi_generator.py
>     scripts/hyperv_wmi_generator.py
> 
> I was ignoring these outputs but I agree that it would be probably nice
> to remote it. I'll fix it and push fixed version into gitlab.
> 
> > And one problem I think is unrelated / pre-existing, but lost in the noise
> > of automake:
> > 
> > ../tests/qemuxml2xmltest.c: In function ‘mymain’:
> > ../tests/qemuxml2xmltest.c:132:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
> >   132 | mymain(void)
> >       | ^~~~~~
> 
> It is pre-existing so not addressing it right now as it's unrelated.
> 
> > The conversion has introduced 9 new shell scripts in scripts/.
> > 
> > IMHO, all of these need to be python scripts instead to follow out intent
> > to standardize on python. I dream of a world with zero shell scripts.
> 
> Sure, works for me. My idea was that these scripts are super simple and
> python would be overkill but I'm OK with using python. I'll rewrite it
> and push into gitlab.

Even though they are simple, we always have the trapdoor of bash vs
non-bash, people always mess up  == vs = for example. So using python
gives us stronger portability.

It would in fact let us build natively on Windows (except for all the
other stuff that would break in the actual code if we didn't use mingw :-)

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 06:14:13PM +0100, Daniel P. Berrangé wrote:
> On Fri, Jul 17, 2020 at 07:00:44PM +0200, Pavel Hrdina wrote:
> > On Fri, Jul 17, 2020 at 03:24:38PM +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.
> > > 
> > > Some things I noticed, building on Fedora 31, with meson 0.55 from pip
> > > 
> > > A bunch of warnings from meson:
> > > 
> > > WARNING: custom_target 'virtesxgen' has more than one output! Using the first one.
> > > WARNING: custom_target 'virthypervgen' has more than one output! Using the first one.
> > > WARNING: custom_target 'protocol.h' has more than one output! Using the first one.
> > > WARNING: custom_target 'generate-api' has more than one output! Using the first one.
> > > WARNING: custom_target 'index-api' has more than one output! Using the first one.
> > > WARNING: custom_target 'index-admin-api' has more than one output! Using the first one.
> > > WARNING: custom_target 'index-lxc-api' has more than one output! Using the first one.
> > > WARNING: custom_target 'index-qemu-api' has more than one output! Using the first one.
> > 
> > So it fails with meson 0.55.0 on my Fedora 32 as well. I bisected Meson
> > repository and this commit <b4b1a2c5a145c1459fc4563a289e164e23bd6a02>
> > breaks the behavior so I believe it's a bug in Meson.
> > 
> > The warning is generated by any custom_target that has multiple output
> > files which is obviously incorrect as documentation [1] states that:
> > 
> >     * output: list of output files
> > 
> > I created an issue on github for this warning [2].
> > 
> > > During build, a bunch of bogus automake style progress messages:
> > > 
> > > 
> > >  Generating virtesxgen with a custom command
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typedef
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typeenum
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typetostring
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.typefromstring
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.h
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_types.generated.c
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.h
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.c
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi_methods.generated.macro
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.h
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/esx/esx_vi.generated.c
> > > 
> > > Generating virthypervgen with a custom command
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.typedef
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.h
> > >   GEN      /home/berrange/src/virt/libvirt/build/src/hyperv/hyperv_wmi_classes.generated.c
> > 
> > These are generated by scripts:
> > 
> >     scripts/esx_vi_generator.py
> >     scripts/hyperv_wmi_generator.py
> > 
> > I was ignoring these outputs but I agree that it would be probably nice
> > to remote it. I'll fix it and push fixed version into gitlab.
> > 
> > > And one problem I think is unrelated / pre-existing, but lost in the noise
> > > of automake:
> > > 
> > > ../tests/qemuxml2xmltest.c: In function ‘mymain’:
> > > ../tests/qemuxml2xmltest.c:132:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
> > >   132 | mymain(void)
> > >       | ^~~~~~
> > 
> > It is pre-existing so not addressing it right now as it's unrelated.
> > 
> > > The conversion has introduced 9 new shell scripts in scripts/.
> > > 
> > > IMHO, all of these need to be python scripts instead to follow out intent
> > > to standardize on python. I dream of a world with zero shell scripts.
> > 
> > Sure, works for me. My idea was that these scripts are super simple and
> > python would be overkill but I'm OK with using python. I'll rewrite it
> > and push into gitlab.
> 
> Even though they are simple, we always have the trapdoor of bash vs
> non-bash, people always mess up  == vs = for example. So using python
> gives us stronger portability.
> 
> It would in fact let us build natively on Windows (except for all the
> other stuff that would break in the actual code if we didn't use mingw :-)

Make sense, the only one that will be tricky is probably the current
workaround to run python scripts with correct LC_* configuration:

    scripts/meson-python.sh

But I'll see once I start converting them into python.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
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


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
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

Nice catch, I actually had a code to define HAVE_DECL_SEEK_HOLE but it
requires -D_GNU_SOURCE to detect it.

For some reason I missed HAVE_LIBATTR.

We don't use HAVE_LIBUTIL anywhere in the code, only HAVE_LIBUTIL_H
which is in meson-config.h.

WITH_PM_UTILS is actually broken in autotools and it should not be
there. If you check m4/virt-pm-utils.m4 we don't use pm-utils if
building on host with D-Bus and systemd.

Digging into the history commit <cf6b65a19eeb026cbf653b76e93e56383bf52da6>
removed init_systemd but forgot to update m4/virt-pm-utils.m4 to use 
"$with_init_script" = "systemd" instead of "$init_systemd" = "yes".

I'll fix the first two defines but the other two are correct unless I
should add the not-used HAVE_LIBUTIL.

Thanks for the review.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Fri, Jul 17, 2020 at 07:50:35PM +0200, Pavel Hrdina 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
> 
> Nice catch, I actually had a code to define HAVE_DECL_SEEK_HOLE but it
> requires -D_GNU_SOURCE to detect it.
> 
> For some reason I missed HAVE_LIBATTR.
> 
> We don't use HAVE_LIBUTIL anywhere in the code, only HAVE_LIBUTIL_H
> which is in meson-config.h.

We do AC_CHECK_LIB([util],[openpty],[]) which I think auto-adds
"-lutil" to the global $LIBS, only if needed. So yeah, the HAVE_LIBUTIL
in meson-config.h is not required, as long as we're adding -lutil when
needed in $LIBS.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 07:00:07PM +0100, Daniel P. Berrangé wrote:
> On Fri, Jul 17, 2020 at 07:50:35PM +0200, Pavel Hrdina 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
> > 
> > Nice catch, I actually had a code to define HAVE_DECL_SEEK_HOLE but it
> > requires -D_GNU_SOURCE to detect it.
> > 
> > For some reason I missed HAVE_LIBATTR.
> > 
> > We don't use HAVE_LIBUTIL anywhere in the code, only HAVE_LIBUTIL_H
> > which is in meson-config.h.
> 
> We do AC_CHECK_LIB([util],[openpty],[]) which I think auto-adds
> "-lutil" to the global $LIBS, only if needed. So yeah, the HAVE_LIBUTIL
> in meson-config.h is not required, as long as we're adding -lutil when
> needed in $LIBS.

meson.build:1377 is where we check for -lutil and if the library exists
it's added to link arguments so it is covered.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
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

738a742,743
> d adminNProcs
> d adminProcs
1436a1442
> d virLogSelf

Also dunno why we have a couple of new data symbols


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 ?

12218a12303
> t virFileActivateDirOverrideForProg.cold

I guess this is new ?


14125,14126d14209
< t virNodeSuspendSupportsTarget
< t virNodeSuspendSupportsTarget.cold

I think this is might be because meson failed to detect
pm-utils which I already reported.

16108a16192,16224
> T xdr_admin_client_close_args
> T xdr_admin_client_get_info_args
> T xdr_admin_client_get_info_ret
> T xdr_admin_connect_get_lib_version_ret
> T xdr_admin_connect_get_logging_filters_args
> T xdr_admin_connect_get_logging_filters_ret
> T xdr_admin_connect_get_logging_outputs_args
> T xdr_admin_connect_get_logging_outputs_ret
> T xdr_admin_connect_list_servers_args
> T xdr_admin_connect_list_servers_ret
> T xdr_admin_connect_lookup_server_args
> T xdr_admin_connect_lookup_server_ret
> T xdr_admin_connect_open_args
> T xdr_admin_connect_set_logging_filters_args
> T xdr_admin_connect_set_logging_outputs_args
> T xdr_admin_nonnull_client
> T xdr_admin_nonnull_server
> T xdr_admin_nonnull_string
> T xdr_admin_procedure
> T xdr_admin_server_get_client_limits_args
> T xdr_admin_server_get_client_limits_ret
> T xdr_admin_server_get_threadpool_parameters_args
> T xdr_admin_server_get_threadpool_parameters_ret
> T xdr_admin_server_list_clients_args
> T xdr_admin_server_list_clients_ret
> T xdr_admin_server_lookup_client_args
> T xdr_admin_server_lookup_client_ret
> T xdr_admin_server_set_client_limits_args
> T xdr_admin_server_set_threadpool_parameters_args
> T xdr_admin_server_update_tls_files_args
> T xdr_admin_string
> T xdr_admin_typed_param
> T xdr_admin_typed_param_value

Again more admin stuff which looks like it probably
should be in the separate libvirt-admin.so


17039a17155
> U g_getenv

Seems due to a code change



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.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
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>
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:

With the most recent version I've fetched from your repository I'm
seeing the following test failure when building with 'gcc'. 'clang'
builds fine.

The output from the failed tests:

 11/154 check-virnetprotocol            FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py virnetprotocol virt_net_rpc /home/pipo/build/libvirt/gcc/src/rpc /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/virnetprotocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_net_rpc@.*' in '/home/pipo/build/libvirt/gcc/src/rpc'
-------

 12/154 check-virkeepaliveprotocol      FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py virkeepaliveprotocol virt_net_rpc /home/pipo/build/libvirt/gcc/src/rpc /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/virkeepaliveprotocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_net_rpc@.*' in '/home/pipo/build/libvirt/gcc/src/rpc'
-------

 13/154 check-remote_protocol           FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py remote_protocol virt_remote_driver /home/pipo/build/libvirt/gcc/src/remote /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/remote_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/pipo/build/libvirt/gcc/src/remote'
-------

 14/154 check-qemu_protocol             FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py qemu_protocol virt_remote_driver /home/pipo/build/libvirt/gcc/src/remote /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/qemu_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/pipo/build/libvirt/gcc/src/remote'
-------

 15/154 check-lxc_protocol              FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lxc_protocol virt_remote_driver /home/pipo/build/libvirt/gcc/src/remote /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/lxc_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_remote_driver@.*' in '/home/pipo/build/libvirt/gcc/src/remote'
-------

 16/154 check-admin_protocol            FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py admin_protocol virt_admin_driver /home/pipo/build/libvirt/gcc/src/admin /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/admin_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_admin_driver@.*' in '/home/pipo/build/libvirt/gcc/src/admin'
-------

 17/154 check-lock_protocol             FAIL           0.09s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lock_protocol lockd_impl /home/pipo/build/libvirt/gcc/src/locking /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/lock_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@lockd_impl@.*' in '/home/pipo/build/libvirt/gcc/src/locking'
-------

 18/154 check-lxc_monitor_protocol      FAIL           0.07s (exit status 1)

--- command ---
09:13:39 LC_CTYPE='en_US.UTF-8' LC_ALL='' LANG='C' /bin/python3 /home/pipo/libvirt/scripts/check-remote-protocol.py lxc_monitor_protocol virt_driver_lxc_impl /home/pipo/build/libvirt/gcc/src/lxc /bin/pdwtags /home/pipo/build/libvirt/gcc/../../../libvirt/src/lxc_monitor_protocol-structs
--- stderr ---
Traceback (most recent call last):
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 55, in <module>
    objectdir = get_subdir(builddir, r'.*@{0}@.*'.format(libname))
  File "/home/pipo/libvirt/scripts/check-remote-protocol.py", line 50, in get_subdir
    raise Exception("Failed to find '{0}' in '{1}'".format(subdir, dirname))
Exception: Failed to find '.*@virt_driver_lxc_impl@.*' in '/home/pipo/build/libvirt/gcc/src/lxc'
-------


Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Thu, Jul 23, 2020 at 11:15:49AM +0200, Peter Krempa wrote:
> On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> 
> With the most recent version I've fetched from your repository I'm
> seeing the following test failure when building with 'gcc'. 'clang'
> builds fine.

Dan already reported this issue. It happens with new meson 0.55.0. They
changed the name of private target directory where object file are
created which we need for the protocol tests.

Unfortunately there is no way how to get this directory using meson
functions so it is hard-coded in the check-remote-protocol.py.

I've already fixed it locally by changing the code to detect both
name of the private directories, but I'll create an RFE in meson to
provide a way to get the correct path to the private directory.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:

I've tried building RPMs both from the pre-patch tree state and after
your patchset. I've then extracted all the RPMs toghether and compared
the file lists (minus the 'build-id' directory which differs).

I'm not sure whether it's due to the RPM or regular build process
though.

Here are differences which should be considered to be addressed:

Specifically lines with '-' are MISSING from the RPMs obtained by
building the meson-generated tarball:

--- files-automake	2020-07-17 15:44:29.602038223 +0200
+++ files-meson	2020-07-17 15:44:38.204937457 +0200
@@ -1531,8 +1571,6 @@
 ..
 backing_chains.html
 domainstatecapture.html
-incrementalbackupinternals.html
-kvm-realtime.html
 launch_security_sev.html
 locking.html
 locking-lockd.html
@@ -1540,7 +1578,6 @@
 migrationinternals.html
 qemu-passthrough-security.html
 rpm-deployment.html
-s390_protected_virt.html
 secureusage.html
 virtiofs.html

@@ -1564,6 +1601,8 @@
 logo-square-powered-96.png
 logo-square-powered.svg
 logo-square.svg
+logo-sticker-hexagon.svg
+logo-sticker-square.svg

 unpack/usr/share/doc/libvirt-docs/html/manpages:
 .
@@ -1636,7 +1675,6 @@
 x86_Broadwell-noTSX-IBRS.xml
 x86_Broadwell-noTSX.xml
 x86_Broadwell.xml
-x86_Cascadelake-Server-noTSX.xml
 x86_Cascadelake-Server.xml
 x86_Conroe.xml
 x86_Cooperlake.xml
@@ -1644,7 +1682,6 @@
 x86_coreduo.xml
 x86_cpu64-rhel5.xml
 x86_cpu64-rhel6.xml
-x86_Dhyana.xml
 x86_EPYC-IBPB.xml
 x86_EPYC.xml
 x86_features.xml
@@ -3274,10 +3311,10 @@
 esx
 hyperv
 libvirt_probes.h
-libvirt_qemu_probes.h
 locking
 logging
 lxc
+qemu
 remote
 rpc
 util
@@ -3340,6 +3377,11 @@
 lxc_monitor_protocol.c
 lxc_monitor_protocol.h

+unpack/usr/src/debug/libvirt-6.6.0-1.fc32.x86_64/x86_64-redhat-linux-gnu/src/qemu:
+.
+..
+libvirt_qemu_probes.h
+
 unpack/usr/src/debug/libvirt-6.6.0-1.fc32.x86_64/x86_64-redhat-linux-gnu/src/remote:
 .
 ..


I'm unsure about the 'probes' file location. The 'kbase' articles are
unfortunate, but the cpu modes could pose real problems.

The CPU xml files are from usr/share/libvirt/cpu_map

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> 
> I've tried building RPMs both from the pre-patch tree state and after
> your patchset. I've then extracted all the RPMs toghether and compared
> the file lists (minus the 'build-id' directory which differs).
> 
> I'm not sure whether it's due to the RPM or regular build process
> though.

I've also started to verify file differences:

config files which are installed in /etc/libvirt from said RPMs were not
post-processed.

E.g. virtnetworkd.conf:

The meson-originated version has:

# Set the name of the directory in which sockets will be found/created.
#
# This setting is not required or honoured if using systemd socket
# activation with systemd version >= 227
#
#unix_sock_dir = "@runstatedir@/libvirt"

while automake:

# Set the name of the directory in which sockets will be found/created.
#
# This setting is not required or honoured if using systemd socket
# activation with systemd version >= 227
#
#unix_sock_dir = "/run/libvirt"


A non-exhaustive list of differences that I can see:

automakerpm/unpack/etc/libvirt/virtinterfaced.conf
automakerpm/unpack/etc/libvirt/virtlxcd.conf
automakerpm/unpack/etc/libvirt/virtnetworkd.conf
automakerpm/unpack/etc/libvirt/virtnodedevd.conf
automakerpm/unpack/etc/libvirt/virtnwfilterd.conf
automakerpm/unpack/etc/libvirt/virtqemud.conf
automakerpm/unpack/etc/libvirt/virtsecretd.conf
automakerpm/unpack/etc/libvirt/virtstoraged.conf
automakerpm/unpack/etc/libvirt/virtvboxd.conf
automakerpm/unpack/etc/libvirt/virtxend.conf

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > 
> > I've tried building RPMs both from the pre-patch tree state and after
> > your patchset. I've then extracted all the RPMs toghether and compared
> > the file lists (minus the 'build-id' directory which differs).
> > 
> > I'm not sure whether it's due to the RPM or regular build process
> > though.
> 

Another difference is paths to shared objects:

e.g virsh:

automakerpm/unpack/usr/bin/virsh:
	linux-vdso.so.1 (0x00007ffccb1ea000)
	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)

mesonrpm/unpack/usr/bin/virsh:
	linux-vdso.so.1 (0x00007ffcb4b8d000)
	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)


This one is probably safe and also possibly considered modern, but I
wanted to point it out.

One mistake though is that usr/bin/virt-xml-validate is not installed as
executalbe with meson!




Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:31:05PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > 
> > > I've tried building RPMs both from the pre-patch tree state and after
> > > your patchset. I've then extracted all the RPMs toghether and compared
> > > the file lists (minus the 'build-id' directory which differs).
> > > 
> > > I'm not sure whether it's due to the RPM or regular build process
> > > though.
> > 
> 
> Another difference is paths to shared objects:
> 
> e.g virsh:
> 
> automakerpm/unpack/usr/bin/virsh:
> 	linux-vdso.so.1 (0x00007ffccb1ea000)
> 	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
> 	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
> 	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
> 	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
> 	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
> 	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
> 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)
> 
> mesonrpm/unpack/usr/bin/virsh:
> 	linux-vdso.so.1 (0x00007ffcb4b8d000)
> 	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
> 	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
> 	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
> 	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
> 	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
> 	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
> 	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)
> 
> 
> This one is probably safe and also possibly considered modern, but I
> wanted to point it out.

This should not be an issue.

> One mistake though is that usr/bin/virt-xml-validate is not installed as
> executalbe with meson!

I'll fix it, thanks.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Fri, Jul 17, 2020 at 16:31:05 +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > 
> > > I've tried building RPMs both from the pre-patch tree state and after
> > > your patchset. I've then extracted all the RPMs toghether and compared
> > > the file lists (minus the 'build-id' directory which differs).
> > > 
> > > I'm not sure whether it's due to the RPM or regular build process
> > > though.
> > 
> 
> Another difference is paths to shared objects:
> 
> e.g virsh:
> 
> automakerpm/unpack/usr/bin/virsh:
> 	linux-vdso.so.1 (0x00007ffccb1ea000)
> 	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
> 	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
> 	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
> 	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
> 	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
> 	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
> 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)
> 
> mesonrpm/unpack/usr/bin/virsh:
> 	linux-vdso.so.1 (0x00007ffcb4b8d000)
> 	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
> 	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
> 	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
> 	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
> 	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
> 	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
> 	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)
> 
> 
> This one is probably safe and also possibly considered modern, but I
> wanted to point it out.
> 
> One mistake though is that usr/bin/virt-xml-validate is not installed as
> executalbe with meson!

Also virt-pki-validate

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 9 months ago
On Fri, Jul 17, 2020 at 16:37:45 +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:31:05 +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> > > On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > > 
> > > > I've tried building RPMs both from the pre-patch tree state and after
> > > > your patchset. I've then extracted all the RPMs toghether and compared
> > > > the file lists (minus the 'build-id' directory which differs).
> > > > 
> > > > I'm not sure whether it's due to the RPM or regular build process
> > > > though.
> > > 
> > 
> > Another difference is paths to shared objects:
> > 
> > e.g virsh:
> > 
> > automakerpm/unpack/usr/bin/virsh:
> > 	linux-vdso.so.1 (0x00007ffccb1ea000)
> > 	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
> > 	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
> > 	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
> > 	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
> > 	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
> > 	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
> > 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)
> > 
> > mesonrpm/unpack/usr/bin/virsh:
> > 	linux-vdso.so.1 (0x00007ffcb4b8d000)
> > 	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
> > 	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
> > 	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
> > 	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
> > 	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
> > 	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
> > 	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)
> > 
> > 
> > This one is probably safe and also possibly considered modern, but I
> > wanted to point it out.
> > 
> > One mistake though is that usr/bin/virt-xml-validate is not installed as
> > executalbe with meson!
> 
> Also virt-pki-validate
> 

And virt-sanlock-cleanup in usr/sbin/


usr/share/doc/libvirt-docs/README is a symlink with meson ... the
automake version
doesn't differ. Is it even worth having them?

then

usr/share/doc/libvirt-docs/AUTHORS '#contributorslist#' is not expanded
with meson
.

I obviously could not verify binaries, but the files are at least
present :)

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:53:28PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:37:45 +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 16:31:05 +0200, Peter Krempa wrote:
> > > On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> > > > On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > > > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > > > 
> > > > > I've tried building RPMs both from the pre-patch tree state and after
> > > > > your patchset. I've then extracted all the RPMs toghether and compared
> > > > > the file lists (minus the 'build-id' directory which differs).
> > > > > 
> > > > > I'm not sure whether it's due to the RPM or regular build process
> > > > > though.
> > > > 
> > > 
> > > Another difference is paths to shared objects:
> > > 
> > > e.g virsh:
> > > 
> > > automakerpm/unpack/usr/bin/virsh:
> > > 	linux-vdso.so.1 (0x00007ffccb1ea000)
> > > 	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
> > > 	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
> > > 	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
> > > 	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
> > > 	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
> > > 	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
> > > 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)
> > > 
> > > mesonrpm/unpack/usr/bin/virsh:
> > > 	linux-vdso.so.1 (0x00007ffcb4b8d000)
> > > 	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
> > > 	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
> > > 	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
> > > 	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
> > > 	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
> > > 	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
> > > 	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)
> > > 
> > > 
> > > This one is probably safe and also possibly considered modern, but I
> > > wanted to point it out.
> > > 
> > > One mistake though is that usr/bin/virt-xml-validate is not installed as
> > > executalbe with meson!
> > 
> > Also virt-pki-validate
> > 
> 
> And virt-sanlock-cleanup in usr/sbin/

Already fixed, thanks.

> usr/share/doc/libvirt-docs/README is a symlink with meson ... the
> automake version
> doesn't differ. Is it even worth having them?

The symlink is also in our repository, I was not able to find any rule
in autoconf that would do anything with it. The difference exists in
the tarballs so it's some autotools magic that I'm not willing to
investigate.

> then
> 
> usr/share/doc/libvirt-docs/AUTHORS '#contributorslist#' is not expanded
> with meson

Fixed, thanks, it has to be '@contributorslist@' to expand it with
meson.

> I obviously could not verify binaries, but the files are at least
> present :)

Thanks for the feedback.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Fri, Jul 17, 2020 at 05:49:42PM +0200, Pavel Hrdina wrote:
> On Fri, Jul 17, 2020 at 04:53:28PM +0200, Peter Krempa wrote:

> > usr/share/doc/libvirt-docs/README is a symlink with meson ... the
> > automake version
> > doesn't differ. Is it even worth having them?
> 
> The symlink is also in our repository, I was not able to find any rule
> in autoconf that would do anything with it. The difference exists in
> the tarballs so it's some autotools magic that I'm not willing to
> investigate.

IIRC, the README -> README.md symlink just exists because automake
really wants a file exactly called README. I say we just drop this
symlink. Anyone is clever enough to find README.md.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 05:03:31PM +0100, Daniel P. Berrangé wrote:
> On Fri, Jul 17, 2020 at 05:49:42PM +0200, Pavel Hrdina wrote:
> > On Fri, Jul 17, 2020 at 04:53:28PM +0200, Peter Krempa wrote:
> 
> > > usr/share/doc/libvirt-docs/README is a symlink with meson ... the
> > > automake version
> > > doesn't differ. Is it even worth having them?
> > 
> > The symlink is also in our repository, I was not able to find any rule
> > in autoconf that would do anything with it. The difference exists in
> > the tarballs so it's some autotools magic that I'm not willing to
> > investigate.
> 
> IIRC, the README -> README.md symlink just exists because automake
> really wants a file exactly called README. I say we just drop this
> symlink. Anyone is clever enough to find README.md.

Agreed, but I would like to do it in different series to not complicate
the Meson rewrite.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:37:45PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:31:05 +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 16:18:52 +0200, Peter Krempa wrote:
> > > On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > > > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > > > 
> > > > I've tried building RPMs both from the pre-patch tree state and after
> > > > your patchset. I've then extracted all the RPMs toghether and compared
> > > > the file lists (minus the 'build-id' directory which differs).
> > > > 
> > > > I'm not sure whether it's due to the RPM or regular build process
> > > > though.
> > > 
> > 
> > Another difference is paths to shared objects:
> > 
> > e.g virsh:
> > 
> > automakerpm/unpack/usr/bin/virsh:
> > 	linux-vdso.so.1 (0x00007ffccb1ea000)
> > 	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f51f7082000)
> > 	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f51f707d000)
> > 	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f51f6bbd000)
> > 	libxml2.so.2 => /lib64/libxml2.so.2 (0x00007f51f6a4d000)
> > 	libreadline.so.8 => /lib64/libreadline.so.8 (0x00007f51f69f7000)
> > 	libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f51f68cc000)
> > 	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f51f68a8000)
> > 
> > mesonrpm/unpack/usr/bin/virsh:
> > 	linux-vdso.so.1 (0x00007ffcb4b8d000)
> > 	libvirt-lxc.so.0 => /usr/lib64/libvirt-lxc.so.0 (0x00007fc2b9596000)
> > 	libvirt-qemu.so.0 => /usr/lib64/libvirt-qemu.so.0 (0x00007fc2b9591000)
> > 	libvirt.so.0 => /usr/lib64/libvirt.so.0 (0x00007fc2b90d1000)
> > 	libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fc2b8f61000)
> > 	libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fc2b8e36000)
> > 	libreadline.so.8 => /usr/lib64/libreadline.so.8 (0x00007fc2b8de0000)
> > 	libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fc2b8dc3000)
> > 
> > 
> > This one is probably safe and also possibly considered modern, but I
> > wanted to point it out.
> > 
> > One mistake though is that usr/bin/virt-xml-validate is not installed as
> > executalbe with meson!
> 
> Also virt-pki-validate

And virt-sanlock-cleanup and libvirt-guests.sh. Fixing all of these as
I checked everything that's installed.

Thanks
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:18:52PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 16:04:16 +0200, Peter Krempa wrote:
> > On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> > 
> > I've tried building RPMs both from the pre-patch tree state and after
> > your patchset. I've then extracted all the RPMs toghether and compared
> > the file lists (minus the 'build-id' directory which differs).
> > 
> > I'm not sure whether it's due to the RPM or regular build process
> > though.
> 
> I've also started to verify file differences:
> 
> config files which are installed in /etc/libvirt from said RPMs were not
> post-processed.
> 
> E.g. virtnetworkd.conf:
> 
> The meson-originated version has:
> 
> # Set the name of the directory in which sockets will be found/created.
> #
> # This setting is not required or honoured if using systemd socket
> # activation with systemd version >= 227
> #
> #unix_sock_dir = "@runstatedir@/libvirt"
> 
> while automake:
> 
> # Set the name of the directory in which sockets will be found/created.
> #
> # This setting is not required or honoured if using systemd socket
> # activation with systemd version >= 227
> #
> #unix_sock_dir = "/run/libvirt"

So it's actually the other way around. I just checked it and with meson
it is expanded correctly. With autotools we have @runstatedir@ and
others in the config files. I also checked the installed files in my
fedora system and they also contain not-expanded strings.

So the meson rewrite fixes the issue that we have with autotools.

So I guess no need to do anything here.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:04:16PM +0200, Peter Krempa wrote:
> On Thu, Jul 16, 2020 at 11:53:56 +0200, Pavel Hrdina wrote:
> 
> I've tried building RPMs both from the pre-patch tree state and after
> your patchset. I've then extracted all the RPMs toghether and compared
> the file lists (minus the 'build-id' directory which differs).
> 
> I'm not sure whether it's due to the RPM or regular build process
> though.

It's because we don't track these files with autotools so there is no
conflict when rebasing this series. I tried to make sure nothing like
this happens by going through all the new commits since the last rebase
but it's easy to miss something. It the missing HTML docs files and XML
CPU files have to be fixed (I'll do it right now and update gitlab).

The qemu probes file location was moved because it is generated in qemu
directory with meson, I will check if we need to update our spec file.

Thanks for the comparison.

Pavel

> Here are differences which should be considered to be addressed:
> 
> Specifically lines with '-' are MISSING from the RPMs obtained by
> building the meson-generated tarball:
> 
> --- files-automake	2020-07-17 15:44:29.602038223 +0200
> +++ files-meson	2020-07-17 15:44:38.204937457 +0200
> @@ -1531,8 +1571,6 @@
>  ..
>  backing_chains.html
>  domainstatecapture.html
> -incrementalbackupinternals.html
> -kvm-realtime.html
>  launch_security_sev.html
>  locking.html
>  locking-lockd.html
> @@ -1540,7 +1578,6 @@
>  migrationinternals.html
>  qemu-passthrough-security.html
>  rpm-deployment.html
> -s390_protected_virt.html
>  secureusage.html
>  virtiofs.html
> 
> @@ -1564,6 +1601,8 @@
>  logo-square-powered-96.png
>  logo-square-powered.svg
>  logo-square.svg
> +logo-sticker-hexagon.svg
> +logo-sticker-square.svg
> 
>  unpack/usr/share/doc/libvirt-docs/html/manpages:
>  .
> @@ -1636,7 +1675,6 @@
>  x86_Broadwell-noTSX-IBRS.xml
>  x86_Broadwell-noTSX.xml
>  x86_Broadwell.xml
> -x86_Cascadelake-Server-noTSX.xml
>  x86_Cascadelake-Server.xml
>  x86_Conroe.xml
>  x86_Cooperlake.xml
> @@ -1644,7 +1682,6 @@
>  x86_coreduo.xml
>  x86_cpu64-rhel5.xml
>  x86_cpu64-rhel6.xml
> -x86_Dhyana.xml
>  x86_EPYC-IBPB.xml
>  x86_EPYC.xml
>  x86_features.xml
> @@ -3274,10 +3311,10 @@
>  esx
>  hyperv
>  libvirt_probes.h
> -libvirt_qemu_probes.h
>  locking
>  logging
>  lxc
> +qemu
>  remote
>  rpc
>  util
> @@ -3340,6 +3377,11 @@
>  lxc_monitor_protocol.c
>  lxc_monitor_protocol.h
> 
> +unpack/usr/src/debug/libvirt-6.6.0-1.fc32.x86_64/x86_64-redhat-linux-gnu/src/qemu:
> +.
> +..
> +libvirt_qemu_probes.h
> +
>  unpack/usr/src/debug/libvirt-6.6.0-1.fc32.x86_64/x86_64-redhat-linux-gnu/src/remote:
>  .
>  ..
> 
> 
> I'm unsure about the 'probes' file location. The 'kbase' articles are
> unfortunate, but the cpu modes could pose real problems.
> 
> The CPU xml files are from usr/share/libvirt/cpu_map
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
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.

Can you clarify a bit more what the expected behaviour is for the
intermediate patches in the series ? eg if I was to "git bisect"
across this series, how much will work vs break ?  I'm not fussed
if stuff like "make dist" breaks, but does the basic "make" and
"make check" (or meson equivalent) work ?  I'm also not fussed if
the intermediate stages require running *both* make and meson
as separate commands in order to full build.

Personally I'd really like to avoid squashing them, because splitting
up big patches is not merely to benefit the initial pre-merge review,
but to also benefit people who need to debug stuff that's already
merged and understand the scope of the intended change. So being able
to look back at the changes in isolation after commit is still a big
plus point.

> 
> 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
> 
> and link to Giltab pipeline:
> 
>     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> 
> The pipeline is not for the latest version is I tweaked some commit
> messages.
> 
> Pavel Hrdina (351):
>   meson: ci: increase git clone depth to 1000
>   meson: remove automake specific directives
>   meson: drop driver_module configure argument
>   meson: drop loader_nvram build option
>   meson: Makefile: drop cov target
>   meson: syntax-check: drop Makefile and m4 related checks
>   meson: m4: drop not relevant m4 files
>   meson: src/util/virfile: rewrite virFileActivateDirOverrideForProg
>   meson: tests: remove '.libs' from all relevant paths
>   meson: introduce meson build files
>   meson: build everything with PIE
>   meson: move content from config-post.h to config.h
>   meson: set windows variables for AI_ADDRCONFIG
>   meson: generate configmake.h
>   meson: add packager build options
>   meson: add test_suite build option
>   meson: add expensive_tests build option
>   meson: add test_coverage build option
>   meson: add static analysis detection
>   meson: add manywarnings
>   meson: add compiler warnings
>   meson: add linker checks
>   meson: add scripts directory
>   meson: add include directory
>   meson: add functions check
>   meson: add headers check
>   meson: add symbols check
>   meson: add types check
>   meson: add members check
>   meson: add sizeof check
>   meson: add programs checks
>   meson: add iscsiadm as optional program
>   meson: add acl build dependency
>   meson: add AppArmor build dependency
>   meson: add attr build option
>   meson: add audit build dependency
>   meson: add readline build option
>   meson: add bash_completion build options
>   meson: add blkid build dependency
>   meson: add capng build dependency
>   meson: add curl build dependency
>   meson: add dbus build dependency
>   meson: add devmapper build dependency
>   meson: add dlopen build dependency
>   meson: add firewalld build option
>   meson: add firewalld_zone build option
>   meson: add fuse build dependency
>   meson: add GLib dependency
>   meson: add glusterfs build dependency
>   meson: add GnuTLS build dependency
>   meson: add hal build dependency
>   meson: add kvm build dependency
>   meson: add libiscsi build dependency
>   meson: add macvtap build option
>   meson: add libnl build dependency
>   meson: add libparted dependency
>   meson: add libpcap build option
>   meson: add libssh build dependency
>   meson: add libssh2 build dependency
>   meson: add libxml build dependency
>   meson: add netcf build options
>   meson: add nls build dependency
>   meson: add numactl build dependency
>   meson: add openwsman build dependency
>   meson: add parallels-sdk build check
>   meson: add pciaccess build option
>   meson: add polkit build option
>   meson: add rbd build dependency
>   meson: add sanlock build option
>   meson: add sasl build dependency
>   meson: add SELinux build dependency
>   meson: add thread build dependency
>   meson: add udev build options
>   meson: add util build dependency
>   meson: add virtualport build dependency
>   meson: add win32 build dependency
>   meson: add wireshark build dependency
>   meson: add xdr build dependency
>   meson: add yajl build dependency
>   meson: add driver_remote build option
>   meson: add libvirtd driver build option
>   meson: add BHyVe build option
>   meson: add ESX driver build option
>   meson: add Hyper-V driver build option
>   meson: add libxl driver build option
>   meson: add LXC driver build option
>   meson: add OpenVZ driver build option
>   meson: add qemu driver build options
>   meson: add test driver build option
>   meson: add vbox driver build options
>   meson: add VMWare driver build option
>   meson: add Virtuozzo driver build option
>   meson: add secdriver build options
>   meson: add network driver build option
>   meson: add interface driver build option
>   meson: add secrets driver build option
>   meson: add node_device driver check
>   meson: add storage build check
>   meson: add storage dir build option
>   meson: add storage disk build option
>   meson: add storage fs driver build option
>   meson: add storage gluster build option
>   meson: add storage iscsi build option
>   meson: add storage iscsi-direct build option
>   meson: add storage lvm build options
>   meson: add storage mpath build options
>   meson: add storage rbd build option
>   meson: add storage SCSI build option
>   meson: add storage sheepdog build option
>   meson: add storage vstorage build option
>   meson: add storage ZFS build option
>   meson: add chrdev_lock_files build option
>   meson: add debug_logs build option
>   meson: add default_editor build option
>   meson: add driver_modules build check
>   meson: add dtrace build dependency
>   meson: add host_validate build option
>   meson: add init_script build option
>   meson: add login_shell build option
>   meson: add nss build option
>   meson: add numad build option
>   meson: add nwfilter build check
>   meson: add pm_utils build option
>   meson: add sysctl_config build option
>   meson: add tls_priority option
>   meson: add runutf8 env vars and meson-python.sh script
>   meson: introduce src directory
>   meson: src: define secdriver_dep
>   meson: src: build dtrace files
>   meson: src: build libvirt_util.a static lib
>   meson: src: build libvirt_conf.a static lib
>   meson: src: build libvirt_rpc static libs
>   meson: src: build libvirt_access.a static library
>   meson: src: build libvirt_driver_admin.a static lib
>   meson: src: build libvirt_cpu.a static library
>   meson: src: build libvirt_vmx.a static library
>   meson: src: build libvirt_vmware.a static library
>   meson: src: build libvirt_driver_esx.a static library
>   meson: src: build libvirt_driver_hyperv.a static library
>   meson: src: build libvirt_hypervisor.a static library
>   meson: src: build libvirt_openvz.a static library
>   meson: src: build libvirt_test.a static library
>   meson: src: build libvirt_driver_lock.a static library
>   meson: src: build libvirt_driver_log.a static library
>   meson: src: build libvirt_driver_remote.a static library
>   meson: src: build libvirt_security_manager.a static library
>   meson: introduce datatypes sources
>   meson: src: build libvirt_driver.a static library
>   meson: scripts: introduce gen-def-files.sh script
>   meson: scripts: introduce gen-sym-files.sh script
>   meson: src: build libvirt.syms and libvirt.def symbol files
>   meson: src: build libvirt.so library
>   meson: src: install cpu_map data
>   meson: src: build libvirt-qemu.so library
>   meson: src: build libvirt-lxc.so library
>   meson: src: build libvirt-admin.so library
>   meson: src: build libvirt_driver_bhyve_impl.a static library
>   meson: src: build libvirt_driver_libxl_impl.a static library
>   meson: src: build liblockd_impl.a static library
>   meson: src: build libvirt_driver_lxc_impl.a static library
>   meson: src: build libvirt_driver_network_impl.a static library
>   meson: src: build libvirt_driver_nodedev_impl.a static library
>   meson: src: build libvirt_driver_nwfilter_impl.a static library
>   meson: src: build libvirt_driver_qemu_impl.a static library
>   meson: src: build libvirt_storage_driver_impl.a static library
>   meson: src: build libvirt_driver_vbox_impl.a static library
>   meson: src: build libvirt_driver_vz_impl.a static library
>   meson: src: add code to build shared modules
>   meson: src: build libvirt_driver_bhyve.so shared module
>   meson: src: build libvirt_driver_interface.so shared module
>   meson: src: build libvirt_driver_libxl.so shared module
>   meson: src: build libvirt_driver_lxc.so shared module
>   meson: src: build libvirt_driver_network.so shared module
>   meson: src: build libvirt_driver_nodedev.so shared module
>   meson: src: build libvirt_driver_nwfilter.so shared module
>   meson: src: build libvirt_driver_qemu.so shared module
>   meson: src: build libvirt_driver_secret.so shared module
>   meson: src: build libvirt_driver_vbox.so shared module
>   meson: src: build libvirt_driver_vz.so shared module
>   meson: src: build lockd.so shared module
>   meson: src: build sanlock.so shared module
>   meson: src: build libvirt_storage_driver.so shared module
>   meson: src: build libvirt_storage_backedn_fs.so shared module
>   meson: src: build libvirt_storage_file_fs.so shared module
>   meson: src: build libvirt_storage_backend_logical.so shared module
>   meson: src: build libvirt_storage_backend_iscsi.so shared module
>   meson: src: build libvirt_storage_backend_iscsi_direct.so shared
>     module
>   meson: src: build libvirt_storage_backend_scsi.so shared module
>   meson: src: build libvirt_storage_backend_mpath.so shared module
>   meson: src: build libvirt_storage_backend_disk.so shared module
>   meson: src: build libvirt_storage_backend_rbd.so shared module
>   meson: src: build libvirt_storage_backend_sheepdog.so shared module
>   meson: src: build libvirt_storage_*_gluster.so shared modules
>   meson: src: build libvirt_storage_backend_zfs.so shared module
>   meson: src: build libvirt_storage_backend_vstorage.so shared module
>   meson: src: prepare sources for libvirt daemons
>   meson: src: add support for building daemon binaries
>   meson: src: build virtbhyved daemon binary
>   meson: src: build virtinterfaced daemon binary
>   meson: src: build virtxend daemon binary
>   meson: src: build virtlockd daemon binary
>   meson: src: build virtlogd daemon binary
>   meson: src: build virtlxcd daemon binary
>   meson: src: build virtnetworkd daemon binary
>   meson: src: build virtnodedevd daemon binary
>   meson: src: build virtnwfilterd daemon binary
>   meson: src: build virtqemud daemon binary
>   meson: src: build libvirtd daemon binary
>   meson: src: build virtproxyd daemon binary
>   meson: src: build virtsecretd daemon binary
>   meson: src: build virtstoraged daemon binary
>   meson: src: build virtvboxd daemon binary
>   meson: src: build virtvzd daemon binary
>   meson: src: add support for building helpers
>   meson: src: build libvirt_sanlock_helper binary
>   meson: src: build libvirt_lxc binary
>   meson: src: build libvirt_leaseshelper binary
>   meson: src: build virt-qemu-run binary
>   meson: src: build virt-aa-helper binary
>   meson: src: build libvirt_parthelper binary
>   meson: src: build libvirt_iohelper binary
>   meson: src: add support for installing libvirt conf and augeas files
>   meson: src: install libvirt daemon conf and augeas files
>   meson: src: generate libvirt daemon augeas test files
>   meson: src: generate libvirt daemon conf and augeas files
>   meson: src: generate systemd unit files for libvirt daemons
>   meson: src: generate openrc init files
>   meson: src: install libvirt daemon sysconf files
>   meson: src: install empty directories
>   meson: src: generate logrotate files
>   meson: src/access: generate org.libvirt.api.policy
>   meson: src/access: generate libvirt_access*.xml files
>   meson: src/network: install default network xml
>   meson: src/network: install firewalld zone file
>   meson: src/nwfilter: install nwfilter XML files
>   meson: src/remote: install libvirt sysctl config file
>   meson: src/remote: install polkit files
>   meson: src/remote: install libvirtd sasl file
>   meson: src/security: install apparmor profile files
>   meson: src: add check-symfile test
>   meson: src: add check-symsorting
>   meson: src: add check-drivername test
>   meson: src: add check-driverimpls test
>   meson: src: add check-aclrules test
>   meson: src/access: add check-aclperms test
>   meson: src: add check-augeas test
>   meson: src: build libvirt_functions.stp
>   meson: src: add check*protocol tests
>   meson: src: add check-admin-symfile test
>   meson: src: add check-admin-symsorting test
>   meson: src: add check-admin-drivername test
>   meson: src: configure pkg-config files used by run script
>   meson: add tools directory
>   meson: tools: build libvirt_shell.a static library
>   meson: tools: build virt-host-validate binary
>   meson: tools: build virt-login-shell binary
>   meson: tools: build virt-login-shell-helper binary
>   meson: tools: build virsh_win_icon object file
>   meson: tools: build virsh binary
>   meson: tools: build virt-admin binary
>   meson: tools: generate virt-xml-validate script
>   meson: tools: generate virt-pki-validate script
>   meson: tools: generate virt-sanlock-cleanup script
>   meson: tools: generate libvirt-guests.sh script
>   meson: tools: install virt-login-shell.conf
>   meson: tools: install libvirt-guests sysconf file
>   meson: tools: generate libvirt-guests.service systemd unit
>   meson: tools: install bash-completion files
>   meson: tools: introduce nss directory
>   meson: tools: build libnss_libvirt_impl.a static library
>   meson: tools: build libnss_libvirt_guest_impl.a static library
>   meson: tools: build libnss_libvirt.so shared library
>   meson: tools: build libnss_libvirt_guest.so shared_library
>   meson: tools: introduce wireshark directory
>   meson: tools: modify genxdrstub to work with meson
>   meson: tools/wireshark: generate protocol header files
>   meson: tools/wireshark: build libvirt.so wireshark module
>   meson: introduce tests directory
>   meson: tests: build mock shared modules
>   meson: tests: built utils static libraries
>   meson: tests: build commandhelper binary
>   meson: tests: build fake ssh binary
>   meson: tests: add test environment variables
>   meson: tests: build shared libraries
>   meson: tests: add test binaries build support
>   meson: tests: introduce generic tests
>   meson: tests: add linux specific tests
>   meson: tests: add bhyve specific tests
>   meson: tests: add dbus specific tests
>   meson: tests: add ESX specific tests
>   meson: tests: add libvirtd specific tests
>   meson: tests: add libxl specific tests
>   meson: tests: add lxc specific tests
>   meson: tests: add network specific tests
>   meson: tests: add node device specific tests
>   meson: tests: add nss specific tests
>   meson: tests: add nwfilter specific tests
>   meson: tests: add openvz specific tests
>   meson: tests: add qemu specific tests
>   meson: tests: add remote specific tests
>   meson: tests: add selinux specific tests
>   meson: tests: add storage specific tests
>   meson: tests: add storage_fs specific tests
>   meson: tests: add storage_sheepdog specific tests
>   meson: tests: add vbox specific tests
>   meson: tests: add vmware specific tests
>   meson: tests: add vmx specific tests
>   meson: tests: add yajl specific tests
>   meson: tests: add helper binaries build support
>   meson: tests: build helper binaries
>   meson: tests: add test scripts
>   meson: tests: add file access test setup
>   meson: tests: add valgrind test setup
>   meson: examples: build and install example files
>   meson: po: introduce libvirt translation
>   meson: docs: introduce docs directory
>   meson: docs: build api XML files
>   meson: docs: generate docs timestamp
>   meson: docs: generate aclperms.htmlinc
>   meson: docs: introduce docs_rst2html_gen generator
>   meson: docs: introduce meson-html-gen.py helper
>   meson: docs: introduce XSL files
>   meson: docs: build *.html files from *.html.in files
>   meson: docs: build *.html files from *.rst files
>   meson: docs: build hvsupport.html
>   meson: docs: build news.html from news.xml
>   meson: docs: copy asset data to build dir
>   meson: docs/fonts: install font files
>   meson: docs/html: generate libvirt API documentation
>   meson: docs/html: generate admin,lxc and qemu API documentation
>   meson: docs/internals: build html files
>   meson: docs/js: install javascript files
>   meson: docs/kbase: build html files
>   meson: docs/logos: install logo files
>   meson: docs/manpages: install man pages
>   meson: docs/schemas: install RNG schemas
>   meson: docs/html: add html test
>   meson: install pkgconfig files
>   meson: generate and distribute spec files and AUTHORS
>   meson: generate run helper
>   meson: generate developer tooling files
>   meson: add syntax-check
>   meson: update spec file to use meson
>   meson: add rule to build and install only web documentation
>   meson: drop remaining bits from Makefile.am
>   meson: remove unused bits from GNUmakefile
>   meson: drop all unused bits from configure.ac
>   meson: now we can drop all autoconf related gitignore lines
>   meson: adjust our documentation to mention meson instead of autoconf
>   meson: update .gitlab-ci.yml file
>   meson: .gitlab-ci.yml: switch armv7l build to Debian 10
> 
>  .gitignore                                    |   21 -
>  .gitlab-ci.yml                                |   71 +-
>  CONTRIBUTING.rst                              |    9 +-
>  GNUmakefile                                   |   74 -
>  Makefile.am                                   |  180 --
>  autogen.sh                                    |   53 -
>  build-aux/Makefile.in                         |    9 +
>  .../Makefile.nonreentrant                     |    0
>  build-aux/meson.build                         |   30 +
>  build-aux/syntax-check.mk                     |  120 +-
>  ci/aarch64-linux-gnu.meson                    |   11 +
>  ci/arm-linux-gnueabi.meson                    |   11 +
>  ci/arm-linux-gnueabihf.meson                  |   11 +
>  ci/cirrus/build.yml                           |   12 +-
>  ci/cirrus/libvirt-freebsd-12.vars             |    4 +-
>  ci/cirrus/libvirt-macos-1015.vars             |    4 +-
>  ci/containers/libvirt-centos-7.Dockerfile     |    2 +-
>  ci/containers/libvirt-centos-8.Dockerfile     |    4 +-
>  .../libvirt-centos-stream.Dockerfile          |    4 +-
>  ...libvirt-debian-10-cross-aarch64.Dockerfile |    5 +-
>  .../libvirt-debian-10-cross-armv6l.Dockerfile |    6 +-
>  .../libvirt-debian-10-cross-armv7l.Dockerfile |    6 +-
>  .../libvirt-debian-10-cross-i686.Dockerfile   |    5 +-
>  .../libvirt-debian-10-cross-mips.Dockerfile   |    5 +-
>  ...ibvirt-debian-10-cross-mips64el.Dockerfile |    5 +-
>  .../libvirt-debian-10-cross-mipsel.Dockerfile |    5 +-
>  ...libvirt-debian-10-cross-ppc64le.Dockerfile |    5 +-
>  .../libvirt-debian-10-cross-s390x.Dockerfile  |    5 +-
>  ci/containers/libvirt-debian-10.Dockerfile    |    4 +-
>  ...ibvirt-debian-sid-cross-aarch64.Dockerfile |    5 +-
>  ...libvirt-debian-sid-cross-armv6l.Dockerfile |    6 +-
>  ...libvirt-debian-sid-cross-armv7l.Dockerfile |    6 +-
>  .../libvirt-debian-sid-cross-i686.Dockerfile  |    5 +-
>  ...bvirt-debian-sid-cross-mips64el.Dockerfile |    5 +-
>  ...libvirt-debian-sid-cross-mipsel.Dockerfile |    6 +-
>  ...ibvirt-debian-sid-cross-ppc64le.Dockerfile |    5 +-
>  .../libvirt-debian-sid-cross-s390x.Dockerfile |    5 +-
>  ci/containers/libvirt-debian-sid.Dockerfile   |    4 +-
>  ci/containers/libvirt-fedora-31.Dockerfile    |    4 +-
>  ci/containers/libvirt-fedora-32.Dockerfile    |    4 +-
>  ...rt-fedora-rawhide-cross-mingw32.Dockerfile |    4 +-
>  ...rt-fedora-rawhide-cross-mingw64.Dockerfile |    4 +-
>  .../libvirt-fedora-rawhide.Dockerfile         |    4 +-
>  ci/containers/libvirt-opensuse-151.Dockerfile |    2 +-
>  ci/containers/libvirt-ubuntu-1804.Dockerfile  |    2 +-
>  ci/containers/libvirt-ubuntu-2004.Dockerfile  |    4 +-
>  ci/i686-linux-gnu.meson                       |   11 +
>  ci/mips-linux-gnu.meson                       |   11 +
>  ci/mips64el-linux-gnuabi64.meson              |   11 +
>  ci/mipsel-linux-gnu.meson                     |   11 +
>  ci/powerpc64le-linux-gnu.meson                |   11 +
>  ci/s390x-linux-gnu.meson                      |   11 +
>  config-post.h => config.h                     |   25 +-
>  configmake.h.in                               |   16 +
>  configure.ac                                  | 1063 -------
>  docs/Makefile.am                              |  522 ----
>  docs/advanced-tests.rst                       |   14 +-
>  docs/best-practices.rst                       |    2 +-
>  docs/committer-guidelines.rst                 |    6 +-
>  docs/compiling.html.in                        |   40 +-
>  docs/fonts/meson.build                        |   24 +
>  docs/hacking.rst                              |    4 +-
>  docs/html/meson.build                         |  101 +
>  docs/internals/meson.build                    |   35 +
>  docs/js/meson.build                           |   13 +
>  docs/kbase/meson.build                        |   44 +
>  docs/logging.html.in                          |    2 +-
>  docs/logos/meson.build                        |   31 +
>  docs/manpages/{index.rst => index.rst.in}     |    0
>  .../{libvirtd.rst => libvirtd.rst.in}         |    0
>  docs/manpages/meson.build                     |  129 +
>  docs/manpages/{virsh.rst => virsh.rst.in}     |    0
>  .../{virt-admin.rst => virt-admin.rst.in}     |    0
>  ...validate.rst => virt-host-validate.rst.in} |    0
>  ...ogin-shell.rst => virt-login-shell.rst.in} |    0
>  ...-validate.rst => virt-pki-validate.rst.in} |    0
>  ...virt-qemu-run.rst => virt-qemu-run.rst.in} |    0
>  ...leanup.rst => virt-sanlock-cleanup.rst.in} |    0
>  ...-validate.rst => virt-xml-validate.rst.in} |    0
>  .../{virtlockd.rst => virtlockd.rst.in}       |    0
>  .../{virtlogd.rst => virtlogd.rst.in}         |    0
>  docs/meson.build                              |  319 +++
>  docs/schemas/meson.build                      |   26 +
>  docs/strategy.html.in                         |   27 +-
>  docs/windows.html.in                          |   18 +-
>  examples/Makefile.am                          |  135 -
>  examples/c/admin/meson.build                  |   27 +
>  examples/c/domain/meson.build                 |   24 +
>  examples/c/meson.build                        |    3 +
>  examples/c/misc/meson.build                   |   22 +
>  examples/meson.build                          |    7 +
>  examples/polkit/meson.build                   |    1 +
>  examples/sh/meson.build                       |    1 +
>  examples/systemtap/lock-debug.stp             |    2 +-
>  examples/systemtap/meson.build                |    9 +
>  examples/xml/meson.build                      |    2 +
>  examples/xml/storage/meson.build              |   15 +
>  examples/xml/test/meson.build                 |   14 +
>  include/libvirt/Makefile.am                   |   28 -
>  include/libvirt/meson.build                   |   36 +
>  include/meson.build                           |    3 +
>  libvirt.spec.in                               |  203 +-
>  m4/virt-acl.m4                                |   37 -
>  m4/virt-apparmor.m4                           |   41 -
>  m4/virt-arg.m4                                |  154 --
>  m4/virt-attr.m4                               |   13 -
>  m4/virt-audit.m4                              |   31 -
>  m4/virt-bash-completion.m4                    |   70 -
>  m4/virt-blkid.m4                              |   30 -
>  m4/virt-capng.m4                              |   30 -
>  m4/virt-chrdev-lock-files.m4                  |   52 -
>  m4/virt-compile-pie.m4                        |   35 -
>  m4/virt-compile-warnings.m4                   |  255 --
>  m4/virt-curl.m4                               |   38 -
>  m4/virt-dbus.m4                               |   41 -
>  m4/virt-debug.m4                              |   33 -
>  m4/virt-default-editor.m4                     |   32 -
>  m4/virt-devmapper.m4                          |   32 -
>  m4/virt-dlopen.m4                             |   45 -
>  m4/virt-driver-bhyve.m4                       |   56 -
>  m4/virt-driver-esx.m4                         |   57 -
>  m4/virt-driver-hyperv.m4                      |   47 -
>  m4/virt-driver-interface.m4                   |   49 -
>  m4/virt-driver-libvirtd.m4                    |   33 -
>  m4/virt-driver-libxl.m4                       |   74 -
>  m4/virt-driver-lxc.m4                         |   74 -
>  m4/virt-driver-modules.m4                     |   53 -
>  m4/virt-driver-network.m4                     |   51 -
>  m4/virt-driver-openvz.m4                      |   42 -
>  m4/virt-driver-qemu.m4                        |  132 -
>  m4/virt-driver-remote.m4                      |   48 -
>  m4/virt-driver-test.m4                        |   33 -
>  m4/virt-driver-vbox.m4                        |   44 -
>  m4/virt-driver-vmware.m4                      |   33 -
>  m4/virt-driver-vz.m4                          |   47 -
>  m4/virt-dtrace.m4                             |   45 -
>  m4/virt-external-programs.m4                  |  106 -
>  m4/virt-firewalld-zone.m4                     |   45 -
>  m4/virt-firewalld.m4                          |   43 -
>  m4/virt-fuse.m4                               |   30 -
>  m4/virt-glib.m4                               |   36 -
>  m4/virt-gluster.m4                            |   32 -
>  m4/virt-gnutls.m4                             |   30 -
>  m4/virt-hal.m4                                |   30 -
>  m4/virt-host-validate.m4                      |   43 -
>  m4/virt-init-script.m4                        |   61 -
>  m4/virt-lib.m4                                |  386 ---
>  m4/virt-libiscsi.m4                           |   30 -
>  m4/virt-libnl.m4                              |   47 -
>  m4/virt-libpcap.m4                            |   62 -
>  m4/virt-libssh.m4                             |   51 -
>  m4/virt-libxml.m4                             |   36 -
>  m4/virt-linker-no-indirect.m4                 |   32 -
>  m4/virt-linker-no-undefined.m4                |   32 -
>  m4/virt-linker-relro.m4                       |   35 -
>  m4/virt-loader-nvram.m4                       |   49 -
>  m4/virt-login-shell.m4                        |   43 -
>  m4/virt-macvtap.m4                            |   56 -
>  m4/virt-manywarnings.m4                       |  339 ---
>  m4/virt-netcf.m4                              |   30 -
>  m4/virt-nls.m4                                |   72 -
>  m4/virt-nss.m4                                |   86 -
>  m4/virt-numactl.m4                            |   34 -
>  m4/virt-numad.m4                              |   58 -
>  m4/virt-nwfilter.m4                           |   32 -
>  m4/virt-openwsman.m4                          |   30 -
>  m4/virt-parted.m4                             |   38 -
>  m4/virt-pciaccess.m4                          |   30 -
>  m4/virt-pm-utils.m4                           |   45 -
>  m4/virt-polkit.m4                             |   62 -
>  m4/virt-pthread.m4                            |   58 -
>  m4/virt-readline.m4                           |   86 -
>  m4/virt-result.m4                             |   42 -
>  m4/virt-sanlock.m4                            |   47 -
>  m4/virt-sasl.m4                               |   30 -
>  m4/virt-secdriver-apparmor.m4                 |   50 -
>  m4/virt-secdriver-selinux.m4                  |   43 -
>  m4/virt-selinux.m4                            |   47 -
>  m4/virt-ssh2.m4                               |   30 -
>  m4/virt-storage-dir.m4                        |   33 -
>  m4/virt-storage-disk.m4                       |   58 -
>  m4/virt-storage-fs.m4                         |   89 -
>  m4/virt-storage-gluster.m4                    |   43 -
>  m4/virt-storage-iscsi-direct.m4               |   44 -
>  m4/virt-storage-iscsi.m4                      |   50 -
>  m4/virt-storage-lvm.m4                        |   90 -
>  m4/virt-storage-mpath.m4                      |   53 -
>  m4/virt-storage-rbd.m4                        |   62 -
>  m4/virt-storage-scsi.m4                       |   36 -
>  m4/virt-storage-sheepdog.m4                   |   56 -
>  m4/virt-storage-vstorage.m4                   |   73 -
>  m4/virt-storage-zfs.m4                        |   56 -
>  m4/virt-sysctl.m4                             |   43 -
>  m4/virt-tls-priority.m4                       |   33 -
>  m4/virt-udev.m4                               |   36 -
>  m4/virt-virtualport.m4                        |   65 -
>  m4/virt-warnings.m4                           |  115 -
>  m4/virt-win-common.m4                         |   42 -
>  m4/virt-win-mingw.m4                          |   28 -
>  m4/virt-win-symbols.m4                        |   40 -
>  m4/virt-win-windres.m4                        |   36 -
>  m4/virt-wireshark.m4                          |   71 -
>  m4/virt-xdr.m4                                |   40 -
>  m4/virt-yajl.m4                               |   42 -
>  meson.build                                   | 2461 +++++++++++++++++
>  meson_options.txt                             |  104 +
>  po/Makefile.am                                |   94 -
>  po/meson.build                                |   35 +
>  run.in                                        |    4 +-
>  scripts/apibuild.py                           |   26 +-
>  scripts/check-augeas.sh                       |   12 +
>  scripts/check-file-access.py                  |   24 +-
>  scripts/check-remote-protocol.py              |   75 +-
>  scripts/gen-def-files.sh                      |    5 +
>  scripts/gen-sym-files.sh                      |   15 +
>  scripts/install-dirs.sh                       |    5 +
>  scripts/install-symlink.sh                    |    7 +
>  scripts/meson-change-perms.sh                 |    6 +
>  scripts/meson-dist.sh                         |    6 +
>  scripts/meson-gen-authors.sh                  |    4 +
>  scripts/meson-html-gen.py                     |   49 +
>  scripts/meson-install-web.py                  |   10 +
>  scripts/meson-python.sh                       |    3 +
>  scripts/meson-timestamp.sh                    |    8 +
>  scripts/meson.build                           |   40 +
>  src/Makefile.am                               |  693 -----
>  src/access/Makefile.inc.am                    |  153 -
>  src/access/meson.build                        |  121 +
>  src/admin/Makefile.inc.am                     |  146 -
>  src/admin/meson.build                         |  114 +
>  src/bhyve/Makefile.inc.am                     |  106 -
>  src/bhyve/meson.build                         |   62 +
>  src/conf/Makefile.inc.am                      |  191 --
>  src/conf/meson.build                          |  110 +
>  src/cpu/Makefile.inc.am                       |   27 -
>  src/cpu/meson.build                           |   21 +
>  src/cpu_map/Makefile.inc.am                   |   80 -
>  src/cpu_map/meson.build                       |   75 +
>  src/driver.c                                  |    2 +-
>  src/esx/Makefile.inc.am                       |   91 -
>  src/esx/meson.build                           |   67 +
>  src/hyperv/Makefile.inc.am                    |   59 -
>  src/hyperv/meson.build                        |   43 +
>  src/hypervisor/Makefile.inc.am                |   20 -
>  src/hypervisor/meson.build                    |   23 +
>  src/interface/Makefile.inc.am                 |  125 -
>  src/interface/meson.build                     |   64 +
>  src/libvirt-lxc.pc.in                         |    2 +-
>  src/libvirt-qemu.pc.in                        |    2 +-
>  src/libvirt.pc.in                             |    2 +-
>  src/libxl/Makefile.inc.am                     |  163 --
>  src/libxl/meson.build                         |   89 +
>  src/locking/Makefile.inc.am                   |  298 --
>  src/locking/lock_manager.c                    |    2 +-
>  src/locking/meson.build                       |  249 ++
>  src/logging/Makefile.inc.am                   |  147 -
>  src/logging/meson.build                       |  100 +
>  src/lxc/Makefile.inc.am                       |  293 --
>  src/lxc/meson.build                           |  190 ++
>  src/meson.build                               |  969 +++++++
>  src/network/Makefile.inc.am                   |  197 --
>  src/network/{default.xml => default.xml.in}   |    0
>  src/network/meson.build                       |  129 +
>  src/node_device/Makefile.inc.am               |  151 -
>  src/node_device/meson.build                   |   77 +
>  src/nwfilter/Makefile.inc.am                  |  134 -
>  src/nwfilter/meson.build                      |   73 +
>  src/nwfilter/xml/meson.build                  |   22 +
>  src/openvz/Makefile.inc.am                    |   30 -
>  src/openvz/meson.build                        |   28 +
>  src/qemu/Makefile.inc.am                      |  268 --
>  src/{ => qemu}/libvirt_qemu_probes.d          |    0
>  src/qemu/meson.build                          |  173 ++
>  src/remote/Makefile.inc.am                    |  490 ----
>  src/remote/meson.build                        |  288 ++
>  ...n.target.in => virt-guest-shutdown.target} |    0
>  src/rpc/Makefile.inc.am                       |  144 -
>  src/rpc/meson.build                           |  136 +
>  src/secret/Makefile.inc.am                    |  110 -
>  src/secret/meson.build                        |   53 +
>  src/security/Makefile.inc.am                  |  142 -
>  src/security/apparmor/meson.build             |   38 +
>  .../usr.lib.libvirt.virt-aa-helper.local      |    1 +
>  src/security/meson.build                      |   57 +
>  src/storage/Makefile.inc.am                   |  476 ----
>  src/storage/meson.build                       |  306 ++
>  src/storage/storage_backend.c                 |    2 +-
>  src/test/Makefile.inc.am                      |   28 -
>  src/test/meson.build                          |   26 +
>  src/util/Makefile.inc.am                      |  318 ---
>  src/util/meson.build                          |  212 ++
>  src/util/virfile.c                            |   34 +-
>  src/util/virstoragefilebackend.c              |    2 +-
>  src/vbox/Makefile.inc.am                      |  138 -
>  src/vbox/meson.build                          |   78 +
>  src/vmware/Makefile.inc.am                    |   29 -
>  src/vmware/meson.build                        |   26 +
>  src/vmx/Makefile.inc.am                       |   24 -
>  src/vmx/meson.build                           |   28 +
>  src/vz/Makefile.inc.am                        |  117 -
>  src/vz/meson.build                            |   68 +
>  tests/Makefile.am                             | 1571 -----------
>  tests/meson.build                             |  686 +++++
>  tests/securityselinuxlabeltest.c              |    2 +-
>  tests/securityselinuxtest.c                   |    2 +-
>  tests/shunloadtest.c                          |    4 +-
>  tests/testutils.c                             |    2 +-
>  tests/testutils.h                             |    2 +-
>  tests/viridentitytest.c                       |    2 +-
>  tests/virsh-optparse                          |   58 +-
>  tests/virsh-schedinfo                         |   12 +-
>  tests/virt-aa-helper-test                     |    2 +-
>  tests/virtestmock.c                           |    2 +-
>  tools/Makefile.am                             |  529 ----
>  tools/bash-completion/meson.build             |   13 +
>  tools/meson.build                             |  292 ++
>  tools/nss/meson.build                         |   92 +
>  tools/wireshark/meson.build                   |    3 +
>  tools/wireshark/src/libvirt/meson.build       |   20 +
>  tools/wireshark/src/meson.build               |   17 +
>  tools/wireshark/util/genxdrstub.pl            |    9 +-
>  321 files changed, 9526 insertions(+), 15979 deletions(-)
>  delete mode 100644 GNUmakefile
>  delete mode 100644 Makefile.am
>  delete mode 100755 autogen.sh
>  create mode 100644 build-aux/Makefile.in
>  rename Makefile.nonreentrant => build-aux/Makefile.nonreentrant (100%)
>  create mode 100644 build-aux/meson.build
>  create mode 100644 ci/aarch64-linux-gnu.meson
>  create mode 100644 ci/arm-linux-gnueabi.meson
>  create mode 100644 ci/arm-linux-gnueabihf.meson
>  create mode 100644 ci/i686-linux-gnu.meson
>  create mode 100644 ci/mips-linux-gnu.meson
>  create mode 100644 ci/mips64el-linux-gnuabi64.meson
>  create mode 100644 ci/mipsel-linux-gnu.meson
>  create mode 100644 ci/powerpc64le-linux-gnu.meson
>  create mode 100644 ci/s390x-linux-gnu.meson
>  rename config-post.h => config.h (65%)
>  create mode 100644 configmake.h.in
>  delete mode 100644 configure.ac
>  delete mode 100644 docs/Makefile.am
>  create mode 100644 docs/fonts/meson.build
>  create mode 100644 docs/html/meson.build
>  create mode 100644 docs/internals/meson.build
>  create mode 100644 docs/js/meson.build
>  create mode 100644 docs/kbase/meson.build
>  create mode 100644 docs/logos/meson.build
>  rename docs/manpages/{index.rst => index.rst.in} (100%)
>  rename docs/manpages/{libvirtd.rst => libvirtd.rst.in} (100%)
>  create mode 100644 docs/manpages/meson.build
>  rename docs/manpages/{virsh.rst => virsh.rst.in} (100%)
>  rename docs/manpages/{virt-admin.rst => virt-admin.rst.in} (100%)
>  rename docs/manpages/{virt-host-validate.rst => virt-host-validate.rst.in} (100%)
>  rename docs/manpages/{virt-login-shell.rst => virt-login-shell.rst.in} (100%)
>  rename docs/manpages/{virt-pki-validate.rst => virt-pki-validate.rst.in} (100%)
>  rename docs/manpages/{virt-qemu-run.rst => virt-qemu-run.rst.in} (100%)
>  rename docs/manpages/{virt-sanlock-cleanup.rst => virt-sanlock-cleanup.rst.in} (100%)
>  rename docs/manpages/{virt-xml-validate.rst => virt-xml-validate.rst.in} (100%)
>  rename docs/manpages/{virtlockd.rst => virtlockd.rst.in} (100%)
>  rename docs/manpages/{virtlogd.rst => virtlogd.rst.in} (100%)
>  create mode 100644 docs/meson.build
>  create mode 100644 docs/schemas/meson.build
>  delete mode 100644 examples/Makefile.am
>  create mode 100644 examples/c/admin/meson.build
>  create mode 100644 examples/c/domain/meson.build
>  create mode 100644 examples/c/meson.build
>  create mode 100644 examples/c/misc/meson.build
>  create mode 100644 examples/meson.build
>  create mode 100644 examples/polkit/meson.build
>  create mode 100644 examples/sh/meson.build
>  create mode 100644 examples/systemtap/meson.build
>  create mode 100644 examples/xml/meson.build
>  create mode 100644 examples/xml/storage/meson.build
>  create mode 100644 examples/xml/test/meson.build
>  delete mode 100644 include/libvirt/Makefile.am
>  create mode 100644 include/libvirt/meson.build
>  create mode 100644 include/meson.build
>  delete mode 100644 m4/virt-acl.m4
>  delete mode 100644 m4/virt-apparmor.m4
>  delete mode 100644 m4/virt-arg.m4
>  delete mode 100644 m4/virt-attr.m4
>  delete mode 100644 m4/virt-audit.m4
>  delete mode 100644 m4/virt-bash-completion.m4
>  delete mode 100644 m4/virt-blkid.m4
>  delete mode 100644 m4/virt-capng.m4
>  delete mode 100644 m4/virt-chrdev-lock-files.m4
>  delete mode 100644 m4/virt-compile-pie.m4
>  delete mode 100644 m4/virt-compile-warnings.m4
>  delete mode 100644 m4/virt-curl.m4
>  delete mode 100644 m4/virt-dbus.m4
>  delete mode 100644 m4/virt-debug.m4
>  delete mode 100644 m4/virt-default-editor.m4
>  delete mode 100644 m4/virt-devmapper.m4
>  delete mode 100644 m4/virt-dlopen.m4
>  delete mode 100644 m4/virt-driver-bhyve.m4
>  delete mode 100644 m4/virt-driver-esx.m4
>  delete mode 100644 m4/virt-driver-hyperv.m4
>  delete mode 100644 m4/virt-driver-interface.m4
>  delete mode 100644 m4/virt-driver-libvirtd.m4
>  delete mode 100644 m4/virt-driver-libxl.m4
>  delete mode 100644 m4/virt-driver-lxc.m4
>  delete mode 100644 m4/virt-driver-modules.m4
>  delete mode 100644 m4/virt-driver-network.m4
>  delete mode 100644 m4/virt-driver-openvz.m4
>  delete mode 100644 m4/virt-driver-qemu.m4
>  delete mode 100644 m4/virt-driver-remote.m4
>  delete mode 100644 m4/virt-driver-test.m4
>  delete mode 100644 m4/virt-driver-vbox.m4
>  delete mode 100644 m4/virt-driver-vmware.m4
>  delete mode 100644 m4/virt-driver-vz.m4
>  delete mode 100644 m4/virt-dtrace.m4
>  delete mode 100644 m4/virt-external-programs.m4
>  delete mode 100644 m4/virt-firewalld-zone.m4
>  delete mode 100644 m4/virt-firewalld.m4
>  delete mode 100644 m4/virt-fuse.m4
>  delete mode 100644 m4/virt-glib.m4
>  delete mode 100644 m4/virt-gluster.m4
>  delete mode 100644 m4/virt-gnutls.m4
>  delete mode 100644 m4/virt-hal.m4
>  delete mode 100644 m4/virt-host-validate.m4
>  delete mode 100644 m4/virt-init-script.m4
>  delete mode 100644 m4/virt-lib.m4
>  delete mode 100644 m4/virt-libiscsi.m4
>  delete mode 100644 m4/virt-libnl.m4
>  delete mode 100644 m4/virt-libpcap.m4
>  delete mode 100644 m4/virt-libssh.m4
>  delete mode 100644 m4/virt-libxml.m4
>  delete mode 100644 m4/virt-linker-no-indirect.m4
>  delete mode 100644 m4/virt-linker-no-undefined.m4
>  delete mode 100644 m4/virt-linker-relro.m4
>  delete mode 100644 m4/virt-loader-nvram.m4
>  delete mode 100644 m4/virt-login-shell.m4
>  delete mode 100644 m4/virt-macvtap.m4
>  delete mode 100644 m4/virt-manywarnings.m4
>  delete mode 100644 m4/virt-netcf.m4
>  delete mode 100644 m4/virt-nls.m4
>  delete mode 100644 m4/virt-nss.m4
>  delete mode 100644 m4/virt-numactl.m4
>  delete mode 100644 m4/virt-numad.m4
>  delete mode 100644 m4/virt-nwfilter.m4
>  delete mode 100644 m4/virt-openwsman.m4
>  delete mode 100644 m4/virt-parted.m4
>  delete mode 100644 m4/virt-pciaccess.m4
>  delete mode 100644 m4/virt-pm-utils.m4
>  delete mode 100644 m4/virt-polkit.m4
>  delete mode 100644 m4/virt-pthread.m4
>  delete mode 100644 m4/virt-readline.m4
>  delete mode 100644 m4/virt-result.m4
>  delete mode 100644 m4/virt-sanlock.m4
>  delete mode 100644 m4/virt-sasl.m4
>  delete mode 100644 m4/virt-secdriver-apparmor.m4
>  delete mode 100644 m4/virt-secdriver-selinux.m4
>  delete mode 100644 m4/virt-selinux.m4
>  delete mode 100644 m4/virt-ssh2.m4
>  delete mode 100644 m4/virt-storage-dir.m4
>  delete mode 100644 m4/virt-storage-disk.m4
>  delete mode 100644 m4/virt-storage-fs.m4
>  delete mode 100644 m4/virt-storage-gluster.m4
>  delete mode 100644 m4/virt-storage-iscsi-direct.m4
>  delete mode 100644 m4/virt-storage-iscsi.m4
>  delete mode 100644 m4/virt-storage-lvm.m4
>  delete mode 100644 m4/virt-storage-mpath.m4
>  delete mode 100644 m4/virt-storage-rbd.m4
>  delete mode 100644 m4/virt-storage-scsi.m4
>  delete mode 100644 m4/virt-storage-sheepdog.m4
>  delete mode 100644 m4/virt-storage-vstorage.m4
>  delete mode 100644 m4/virt-storage-zfs.m4
>  delete mode 100644 m4/virt-sysctl.m4
>  delete mode 100644 m4/virt-tls-priority.m4
>  delete mode 100644 m4/virt-udev.m4
>  delete mode 100644 m4/virt-virtualport.m4
>  delete mode 100644 m4/virt-warnings.m4
>  delete mode 100644 m4/virt-win-common.m4
>  delete mode 100644 m4/virt-win-mingw.m4
>  delete mode 100644 m4/virt-win-symbols.m4
>  delete mode 100644 m4/virt-win-windres.m4
>  delete mode 100644 m4/virt-wireshark.m4
>  delete mode 100644 m4/virt-xdr.m4
>  delete mode 100644 m4/virt-yajl.m4
>  create mode 100644 meson.build
>  create mode 100644 meson_options.txt
>  delete mode 100644 po/Makefile.am
>  create mode 100644 po/meson.build
>  create mode 100644 scripts/check-augeas.sh
>  create mode 100755 scripts/gen-def-files.sh
>  create mode 100755 scripts/gen-sym-files.sh
>  create mode 100644 scripts/install-dirs.sh
>  create mode 100644 scripts/install-symlink.sh
>  create mode 100644 scripts/meson-change-perms.sh
>  create mode 100755 scripts/meson-dist.sh
>  create mode 100755 scripts/meson-gen-authors.sh
>  create mode 100755 scripts/meson-html-gen.py
>  create mode 100755 scripts/meson-install-web.py
>  create mode 100755 scripts/meson-python.sh
>  create mode 100755 scripts/meson-timestamp.sh
>  create mode 100644 scripts/meson.build
>  delete mode 100644 src/Makefile.am
>  delete mode 100644 src/access/Makefile.inc.am
>  create mode 100644 src/access/meson.build
>  delete mode 100644 src/admin/Makefile.inc.am
>  create mode 100644 src/admin/meson.build
>  delete mode 100644 src/bhyve/Makefile.inc.am
>  create mode 100644 src/bhyve/meson.build
>  delete mode 100644 src/conf/Makefile.inc.am
>  create mode 100644 src/conf/meson.build
>  delete mode 100644 src/cpu/Makefile.inc.am
>  create mode 100644 src/cpu/meson.build
>  delete mode 100644 src/cpu_map/Makefile.inc.am
>  create mode 100644 src/cpu_map/meson.build
>  delete mode 100644 src/esx/Makefile.inc.am
>  create mode 100644 src/esx/meson.build
>  delete mode 100644 src/hyperv/Makefile.inc.am
>  create mode 100644 src/hyperv/meson.build
>  delete mode 100644 src/hypervisor/Makefile.inc.am
>  create mode 100644 src/hypervisor/meson.build
>  delete mode 100644 src/interface/Makefile.inc.am
>  create mode 100644 src/interface/meson.build
>  delete mode 100644 src/libxl/Makefile.inc.am
>  create mode 100644 src/libxl/meson.build
>  delete mode 100644 src/locking/Makefile.inc.am
>  create mode 100644 src/locking/meson.build
>  delete mode 100644 src/logging/Makefile.inc.am
>  create mode 100644 src/logging/meson.build
>  delete mode 100644 src/lxc/Makefile.inc.am
>  create mode 100644 src/lxc/meson.build
>  create mode 100644 src/meson.build
>  delete mode 100644 src/network/Makefile.inc.am
>  rename src/network/{default.xml => default.xml.in} (100%)
>  create mode 100644 src/network/meson.build
>  delete mode 100644 src/node_device/Makefile.inc.am
>  create mode 100644 src/node_device/meson.build
>  delete mode 100644 src/nwfilter/Makefile.inc.am
>  create mode 100644 src/nwfilter/meson.build
>  create mode 100644 src/nwfilter/xml/meson.build
>  delete mode 100644 src/openvz/Makefile.inc.am
>  create mode 100644 src/openvz/meson.build
>  delete mode 100644 src/qemu/Makefile.inc.am
>  rename src/{ => qemu}/libvirt_qemu_probes.d (100%)
>  create mode 100644 src/qemu/meson.build
>  delete mode 100644 src/remote/Makefile.inc.am
>  create mode 100644 src/remote/meson.build
>  rename src/remote/{virt-guest-shutdown.target.in => virt-guest-shutdown.target} (100%)
>  delete mode 100644 src/rpc/Makefile.inc.am
>  create mode 100644 src/rpc/meson.build
>  delete mode 100644 src/secret/Makefile.inc.am
>  create mode 100644 src/secret/meson.build
>  delete mode 100644 src/security/Makefile.inc.am
>  create mode 100644 src/security/apparmor/meson.build
>  create mode 100644 src/security/apparmor/usr.lib.libvirt.virt-aa-helper.local
>  create mode 100644 src/security/meson.build
>  delete mode 100644 src/storage/Makefile.inc.am
>  create mode 100644 src/storage/meson.build
>  delete mode 100644 src/test/Makefile.inc.am
>  create mode 100644 src/test/meson.build
>  delete mode 100644 src/util/Makefile.inc.am
>  create mode 100644 src/util/meson.build
>  delete mode 100644 src/vbox/Makefile.inc.am
>  create mode 100644 src/vbox/meson.build
>  delete mode 100644 src/vmware/Makefile.inc.am
>  create mode 100644 src/vmware/meson.build
>  delete mode 100644 src/vmx/Makefile.inc.am
>  create mode 100644 src/vmx/meson.build
>  delete mode 100644 src/vz/Makefile.inc.am
>  create mode 100644 src/vz/meson.build
>  delete mode 100644 tests/Makefile.am
>  create mode 100644 tests/meson.build
>  delete mode 100644 tools/Makefile.am
>  create mode 100644 tools/bash-completion/meson.build
>  create mode 100644 tools/meson.build
>  create mode 100644 tools/nss/meson.build
>  create mode 100644 tools/wireshark/meson.build
>  create mode 100644 tools/wireshark/src/libvirt/meson.build
>  create mode 100644 tools/wireshark/src/meson.build
> 
> -- 
> 2.26.2
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Thu, Jul 16, 2020 at 01:59:00PM +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.
> 
> Can you clarify a bit more what the expected behaviour is for the
> intermediate patches in the series ? eg if I was to "git bisect"
> across this series, how much will work vs break ?  I'm not fussed
> if stuff like "make dist" breaks, but does the basic "make" and
> "make check" (or meson equivalent) work ?  I'm also not fussed if
> the intermediate stages require running *both* make and meson
> as separate commands in order to full build.

The way how the patches are done will mean that autotools will not work
or randomly fail and things like that. I was not basically paying any
attention to not breaking autotools. Some of the bits removed from
autotools throughout the series will definitely break even simple make
invocation.

Running both to fully build libvirt would be IMHO insane and complicated
so I was not even considering that option.

I tried it and the current state is that make will break with patch

    [PATCH 002/351] meson: remove automake specific directives

it complains a lot about incompatible endif reminder where deleted the
else branch of the if-else-endif structure.

Invoking meson will work since patch:

    [PATCH 010/351] meson: introduce meson build files

But it will not do any actual build until patch:

    [PATCH 129/351] meson: src: build dtrace files

I also tried running git rebase with:

    --exec='git clean -dfx && meson build && ninja -C build'

and discovered that I would have to move patch

    [PATCH 080/351] meson: add driver_remote build option

before patch that requires 'driver_remote' option:

    [PATCH 058/351] meson: add libssh build dependency

otherwise running meson between patches 58 and 80 will fail.

> Personally I'd really like to avoid squashing them, because splitting
> up big patches is not merely to benefit the initial pre-merge review,
> but to also benefit people who need to debug stuff that's already
> merged and understand the scope of the intended change. So being able
> to look back at the changes in isolation after commit is still a big
> plus point.

I would like to avoid squashing the patches as well and in most cases I
would object to it as well. I only suggested that to not break git
bisect.

If we don't care about git bisect and the fact that we would not be able
to build libvirt correctly within these patches I'm OK with pushing it
without squashing.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > Personally I'd really like to avoid squashing them, because splitting
> > up big patches is not merely to benefit the initial pre-merge review,
> > but to also benefit people who need to debug stuff that's already
> > merged and understand the scope of the intended change. So being able
> > to look back at the changes in isolation after commit is still a big
> > plus point.
> 
> I would like to avoid squashing the patches as well and in most cases I
> would object to it as well. I only suggested that to not break git
> bisect.
> 
> If we don't care about git bisect and the fact that we would not be able
> to build libvirt correctly within these patches I'm OK with pushing it
> without squashing.

git bisect reliabity is key, so I reluctantly think we'll need to
squash. I don't want to hit a pathc in this series with a bisect
and be unable to continue the bisect due to inability to build the
code.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > Personally I'd really like to avoid squashing them, because splitting
> > > up big patches is not merely to benefit the initial pre-merge review,
> > > but to also benefit people who need to debug stuff that's already
> > > merged and understand the scope of the intended change. So being able
> > > to look back at the changes in isolation after commit is still a big
> > > plus point.
> > 
> > I would like to avoid squashing the patches as well and in most cases I
> > would object to it as well. I only suggested that to not break git
> > bisect.
> > 
> > If we don't care about git bisect and the fact that we would not be able
> > to build libvirt correctly within these patches I'm OK with pushing it
> > without squashing.
> 
> git bisect reliabity is key, so I reluctantly think we'll need to
> squash. I don't want to hit a pathc in this series with a bisect
> and be unable to continue the bisect due to inability to build the
> code.

I can try to rearrange the patches to not break git bisect. It will
still require some script to be used for git bisect to detect if it
should run autotools or Meson.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Fri, Jul 17, 2020 at 04:10:01PM +0200, Pavel Hrdina wrote:
> On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
> > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > Personally I'd really like to avoid squashing them, because splitting
> > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > but to also benefit people who need to debug stuff that's already
> > > > merged and understand the scope of the intended change. So being able
> > > > to look back at the changes in isolation after commit is still a big
> > > > plus point.
> > > 
> > > I would like to avoid squashing the patches as well and in most cases I
> > > would object to it as well. I only suggested that to not break git
> > > bisect.
> > > 
> > > If we don't care about git bisect and the fact that we would not be able
> > > to build libvirt correctly within these patches I'm OK with pushing it
> > > without squashing.
> > 
> > git bisect reliabity is key, so I reluctantly think we'll need to
> > squash. I don't want to hit a pathc in this series with a bisect
> > and be unable to continue the bisect due to inability to build the
> > code.
> 
> I can try to rearrange the patches to not break git bisect. It will
> still require some script to be used for git bisect to detect if it
> should run autotools or Meson.

Maybe there's a reasonable tradeoff - instead of a 350 patch series,
just a 10-20 patch series. 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Martin Kletzander 3 years, 9 months ago
On Fri, Jul 17, 2020 at 03:12:00PM +0100, Daniel P. Berrangé wrote:
>On Fri, Jul 17, 2020 at 04:10:01PM +0200, Pavel Hrdina wrote:
>> On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
>> > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
>> > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
>> > > > Personally I'd really like to avoid squashing them, because splitting
>> > > > up big patches is not merely to benefit the initial pre-merge review,
>> > > > but to also benefit people who need to debug stuff that's already
>> > > > merged and understand the scope of the intended change. So being able
>> > > > to look back at the changes in isolation after commit is still a big
>> > > > plus point.
>> > >
>> > > I would like to avoid squashing the patches as well and in most cases I
>> > > would object to it as well. I only suggested that to not break git
>> > > bisect.
>> > >
>> > > If we don't care about git bisect and the fact that we would not be able
>> > > to build libvirt correctly within these patches I'm OK with pushing it
>> > > without squashing.
>> >
>> > git bisect reliabity is key, so I reluctantly think we'll need to
>> > squash. I don't want to hit a pathc in this series with a bisect
>> > and be unable to continue the bisect due to inability to build the
>> > code.
>>
>> I can try to rearrange the patches to not break git bisect. It will
>> still require some script to be used for git bisect to detect if it
>> should run autotools or Meson.
>
>Maybe there's a reasonable tradeoff - instead of a 350 patch series,
>just a 10-20 patch series.
>

One other option would be a semi-linear merge. bisect would try the commit
before the rewrite and after, if both of them worked or both were broken then it
will not try the commits in the middle.  If it does, then you know it was
because of the autotools=>meson rewrite.  You will not break git-bisect and
you'll keep the history of the commits.

>Regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 8 months ago
On Fri, Jul 17, 2020 at 07:27:50PM +0200, Martin Kletzander wrote:
> On Fri, Jul 17, 2020 at 03:12:00PM +0100, Daniel P. Berrangé wrote:
> > On Fri, Jul 17, 2020 at 04:10:01PM +0200, Pavel Hrdina wrote:
> > > On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
> > > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > > > Personally I'd really like to avoid squashing them, because splitting
> > > > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > > > but to also benefit people who need to debug stuff that's already
> > > > > > merged and understand the scope of the intended change. So being able
> > > > > > to look back at the changes in isolation after commit is still a big
> > > > > > plus point.
> > > > >
> > > > > I would like to avoid squashing the patches as well and in most cases I
> > > > > would object to it as well. I only suggested that to not break git
> > > > > bisect.
> > > > >
> > > > > If we don't care about git bisect and the fact that we would not be able
> > > > > to build libvirt correctly within these patches I'm OK with pushing it
> > > > > without squashing.
> > > >
> > > > git bisect reliabity is key, so I reluctantly think we'll need to
> > > > squash. I don't want to hit a pathc in this series with a bisect
> > > > and be unable to continue the bisect due to inability to build the
> > > > code.
> > > 
> > > I can try to rearrange the patches to not break git bisect. It will
> > > still require some script to be used for git bisect to detect if it
> > > should run autotools or Meson.
> > 
> > Maybe there's a reasonable tradeoff - instead of a 350 patch series,
> > just a 10-20 patch series.
> > 
> 
> One other option would be a semi-linear merge. bisect would try the commit
> before the rewrite and after, if both of them worked or both were broken then it
> will not try the commits in the middle.  If it does, then you know it was
> because of the autotools=>meson rewrite.  You will not break git-bisect and
> you'll keep the history of the commits.

I'm not sure I follow exactly what you are saying here, so let me try to
illustrate what I think you mean and you can correct me.

Consider that

  - The current repo has commits A, B and C
  - The Meson series has commits R, S, T and U
  - After meson, we add commits H, I and J

IIUC, by "semi-linear merge" you mean a graph that looks
like this:

  A----B----C---------------------------H----I----J
            |                           |
            +-----R-----S----T-----U----+


Now we notice a regression at J and know the last good commit was B.

IIUC you're saying that when "git bisect" runs it will stop on
commits 'C' and 'H', and only bisect into R, S, T, & U, if
the results of C & H show the problem is in the meson series.

That would certainly be nice, but I can't find any documentation
that clearly says this is what git bisect will do.

The docs I see merely say that bisect will look for a commit half way
between the current good & bad markers, but doesn't clarify what
"half way" means when there are two possible paths to follow in
the graph. You seem to be saying it will choose the shorter of the
two paths, but I don't see that mentioned anywhere. I could easily
see it deciding the "S" was the first half-way points to try, not
C or H.

If someone can point me to credible docs explaining what git does
wrt merges I'd be interested if I'm right or wrong.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Martin Kletzander 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:46:07AM +0100, Daniel P. Berrangé wrote:
>On Fri, Jul 17, 2020 at 07:27:50PM +0200, Martin Kletzander wrote:
>> On Fri, Jul 17, 2020 at 03:12:00PM +0100, Daniel P. Berrangé wrote:
>> > On Fri, Jul 17, 2020 at 04:10:01PM +0200, Pavel Hrdina wrote:
>> > > On Fri, Jul 17, 2020 at 03:02:10PM +0100, Daniel P. Berrangé wrote:
>> > > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
>> > > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
>> > > > > > Personally I'd really like to avoid squashing them, because splitting
>> > > > > > up big patches is not merely to benefit the initial pre-merge review,
>> > > > > > but to also benefit people who need to debug stuff that's already
>> > > > > > merged and understand the scope of the intended change. So being able
>> > > > > > to look back at the changes in isolation after commit is still a big
>> > > > > > plus point.
>> > > > >
>> > > > > I would like to avoid squashing the patches as well and in most cases I
>> > > > > would object to it as well. I only suggested that to not break git
>> > > > > bisect.
>> > > > >
>> > > > > If we don't care about git bisect and the fact that we would not be able
>> > > > > to build libvirt correctly within these patches I'm OK with pushing it
>> > > > > without squashing.
>> > > >
>> > > > git bisect reliabity is key, so I reluctantly think we'll need to
>> > > > squash. I don't want to hit a pathc in this series with a bisect
>> > > > and be unable to continue the bisect due to inability to build the
>> > > > code.
>> > >
>> > > I can try to rearrange the patches to not break git bisect. It will
>> > > still require some script to be used for git bisect to detect if it
>> > > should run autotools or Meson.
>> >
>> > Maybe there's a reasonable tradeoff - instead of a 350 patch series,
>> > just a 10-20 patch series.
>> >
>>
>> One other option would be a semi-linear merge. bisect would try the commit
>> before the rewrite and after, if both of them worked or both were broken then it
>> will not try the commits in the middle.  If it does, then you know it was
>> because of the autotools=>meson rewrite.  You will not break git-bisect and
>> you'll keep the history of the commits.
>
>I'm not sure I follow exactly what you are saying here, so let me try to
>illustrate what I think you mean and you can correct me.
>
>Consider that
>
>  - The current repo has commits A, B and C
>  - The Meson series has commits R, S, T and U
>  - After meson, we add commits H, I and J
>
>IIUC, by "semi-linear merge" you mean a graph that looks
>like this:
>
>  A----B----C---------------------------H----I----J
>            |                           |
>            +-----R-----S----T-----U----+
>
>
>Now we notice a regression at J and know the last good commit was B.
>
>IIUC you're saying that when "git bisect" runs it will stop on
>commits 'C' and 'H', and only bisect into R, S, T, & U, if
>the results of C & H show the problem is in the meson series.
>
>That would certainly be nice, but I can't find any documentation
>that clearly says this is what git bisect will do.
>
>The docs I see merely say that bisect will look for a commit half way
>between the current good & bad markers, but doesn't clarify what
>"half way" means when there are two possible paths to follow in
>the graph. You seem to be saying it will choose the shorter of the
>two paths, but I don't see that mentioned anywhere. I could easily
>see it deciding the "S" was the first half-way points to try, not
>C or H.
>
>If someone can point me to credible docs explaining what git does
>wrt merges I'd be interested if I'm right or wrong.
>

Thank you for correcting me.  I genuinely believed that this was happening in
another project that I was bisecting, but I should've checked more.

I spent some more time looking at the workarounds and there are ways how to
achieve what I described.  Unfortunately it is not built in the bisect command
itself and there is nowhere to supply your own bisect helper or list of skipped
commits per-repo (which would be pretty easy and helpful, actually).  Anyway,
whatever does not work automatically with the unmodified `git bisect` command is
not going to be helpful, no matter how much we'd document it.

One other idea would be to have a Makefile (or some other mean) that just tells
you what to do if you got to any of the commits in the middle a bisect.  But
maybe I'm overthinking it.

Sorry, let's leave this, I guess.  I do not have any time to look at adding the
feature in git :)

>Regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 8 months ago
On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > Personally I'd really like to avoid squashing them, because splitting
> > > up big patches is not merely to benefit the initial pre-merge review,
> > > but to also benefit people who need to debug stuff that's already
> > > merged and understand the scope of the intended change. So being able
> > > to look back at the changes in isolation after commit is still a big
> > > plus point.
> > 
> > I would like to avoid squashing the patches as well and in most cases I
> > would object to it as well. I only suggested that to not break git
> > bisect.
> > 
> > If we don't care about git bisect and the fact that we would not be able
> > to build libvirt correctly within these patches I'm OK with pushing it
> > without squashing.
> 
> git bisect reliabity is key, so I reluctantly think we'll need to
> squash. I don't want to hit a pathc in this series with a bisect
> and be unable to continue the bisect due to inability to build the
> code.

I agree. It's definitely necessary that the build is complete at any
point in time.

I'm reluctantly willing to accept that the build fails with an
appropriate error message until the build system is able to build
everything if we opt for commiting a patchset for simplicity. What's
off-limits is if build "succeeds", but is incomplete due to missing
steps in the implementation. I'm not going to want to guess which part
is already built or which isn't.

Given that the rewrite is a singularity anyways it doesn't really matter
that we will not be able to bisect problems caused by the build system
across the boundary.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Neal Gompa 3 years, 8 months ago
On Mon, Jul 27, 2020 at 12:11 PM Peter Krempa <pkrempa@redhat.com> wrote:
>
> On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > Personally I'd really like to avoid squashing them, because splitting
> > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > but to also benefit people who need to debug stuff that's already
> > > > merged and understand the scope of the intended change. So being able
> > > > to look back at the changes in isolation after commit is still a big
> > > > plus point.
> > >
> > > I would like to avoid squashing the patches as well and in most cases I
> > > would object to it as well. I only suggested that to not break git
> > > bisect.
> > >
> > > If we don't care about git bisect and the fact that we would not be able
> > > to build libvirt correctly within these patches I'm OK with pushing it
> > > without squashing.
> >
> > git bisect reliabity is key, so I reluctantly think we'll need to
> > squash. I don't want to hit a pathc in this series with a bisect
> > and be unable to continue the bisect due to inability to build the
> > code.
>
> I agree. It's definitely necessary that the build is complete at any
> point in time.
>
> I'm reluctantly willing to accept that the build fails with an
> appropriate error message until the build system is able to build
> everything if we opt for commiting a patchset for simplicity. What's
> off-limits is if build "succeeds", but is incomplete due to missing
> steps in the implementation. I'm not going to want to guess which part
> is already built or which isn't.
>
> Given that the rewrite is a singularity anyways it doesn't really matter
> that we will not be able to bisect problems caused by the build system
> across the boundary.
>

Unfortunately, this is where email based workflows completely fall
apart. If this was represented as a merge request, it'd be
straightforward to look at it from either the "changeset view" (the
delta from upstream main branch and the branch containing the changes)
or the "per-change view" (the delta across a commit). I literally
could not figure out how to review this entire change set (despite my
best efforts) because pulling down this 351-patch changeset is quite
difficult for me. At least, not until I realized the cover letter
pointed to a GitLab repository with the commits present. 😅

But email is the workflow we have, not the one we deserve, so I'd
rather see this re-sent as a single patch. That patch will be too big
to send as an email, though, so it will likely need to be sent as an
attachment. Or maybe this could be the inaugural change merged in
through a merge request in GitLab.com?

One could only hope...


-- 
真実はいつも一つ!/ Always, there's only one truth!


Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 8 months ago
On Mon, Jul 27, 2020 at 20:43:05 -0400, Neal Gompa wrote:
> On Mon, Jul 27, 2020 at 12:11 PM Peter Krempa <pkrempa@redhat.com> wrote:
> > On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:

[...]

> > I agree. It's definitely necessary that the build is complete at any
> > point in time.
> >
> > I'm reluctantly willing to accept that the build fails with an
> > appropriate error message until the build system is able to build
> > everything if we opt for commiting a patchset for simplicity. What's
> > off-limits is if build "succeeds", but is incomplete due to missing
> > steps in the implementation. I'm not going to want to guess which part
> > is already built or which isn't.
> >
> > Given that the rewrite is a singularity anyways it doesn't really matter
> > that we will not be able to bisect problems caused by the build system
> > across the boundary.
> >
> 
> Unfortunately, this is where email based workflows completely fall
> apart. If this was represented as a merge request, it'd be
> straightforward to look at it from either the "changeset view" (the
> delta from upstream main branch and the branch containing the changes)
> or the "per-change view" (the delta across a commit). I literally

You can do the same once you apply the patches on your local repository.

In the end a the merge request is just that. A repo with the patches
applied and the "cover letter" is represented as the merge request
"justification".

The only difference is how you get those ...

> could not figure out how to review this entire change set (despite my
> best efforts) because pulling down this 351-patch changeset is quite
> difficult for me. At least, not until I realized the cover letter
> pointed to a GitLab repository with the commits present.

... and Pavel provided both views in case your e-mail client doesn't
enable you to extract a patchset quickly.

Please note that in my reply I was specifically refering only to the
state once it's commited to the main repository and not in any way
refering to review. Once the patchset is comitted it's same situation
for everybody.

> But email is the workflow we have, not the one we deserve, so I'd
> rather see this re-sent as a single patch. That patch will be too big
> to send as an email, though, so it will likely need to be sent as an
> attachment.

The resulting squashed mail is 880K. We had bigger ones e.g. when Daniel
changed the translation systems which had 1.0M and 1.2M emails and they
went through just fine.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 8 months ago
On Mon, Jul 27, 2020 at 06:11:11PM +0200, Peter Krempa wrote:
> On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > Personally I'd really like to avoid squashing them, because splitting
> > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > but to also benefit people who need to debug stuff that's already
> > > > merged and understand the scope of the intended change. So being able
> > > > to look back at the changes in isolation after commit is still a big
> > > > plus point.
> > > 
> > > I would like to avoid squashing the patches as well and in most cases I
> > > would object to it as well. I only suggested that to not break git
> > > bisect.
> > > 
> > > If we don't care about git bisect and the fact that we would not be able
> > > to build libvirt correctly within these patches I'm OK with pushing it
> > > without squashing.
> > 
> > git bisect reliabity is key, so I reluctantly think we'll need to
> > squash. I don't want to hit a pathc in this series with a bisect
> > and be unable to continue the bisect due to inability to build the
> > code.
> 
> I agree. It's definitely necessary that the build is complete at any
> point in time.
> 
> I'm reluctantly willing to accept that the build fails with an
> appropriate error message until the build system is able to build
> everything if we opt for commiting a patchset for simplicity. What's
> off-limits is if build "succeeds", but is incomplete due to missing
> steps in the implementation. I'm not going to want to guess which part
> is already built or which isn't.
> 
> Given that the rewrite is a singularity anyways it doesn't really matter
> that we will not be able to bisect problems caused by the build system
> across the boundary.

So based on all the comments we have these options for pushing this
series:

    1) Squash it into single commit.

       Pros: - no issues with git bisect

       Cons: - we will not have the history of changes

    2) Keep the patches as they are and running meson build & ninja will
       not fail.

       Pros: - full history of changes where each commit removes the
               relevant bits from autotools

             - git bisect is not broken as compilation will not fail

       Cons: - meson build && ninja will not produce complete libvirt
               binaries and there is no autogen.sh

             - script used for git bisect will have to detect if tested
               binaries are compiled or use git bisect skip

    3) Keep the patches as they are but error out in meson until the
       conversion is complete. The error can be used to detect if git
       bisect is withing the meson rewrite.

       Pros: - full history of changes where each commit removes the     
               relevant bits from autotools

             - git bisect is not broken if failed compilation is not an
               issue and marked as git bisect skip

       Cons: - meson build will fail and there is no autogen.sh so no
               way how to compile libvirt even partially

             - script used for git bisect will have to skip failed
               compilation with an option to check for specific error

    4) Rework the series to have patches adding meson bits without
       removing anything from autotools and drop the autotools files in
       a single commit once the meson rewrite is complete

       Pros: - full history of changes

             - git bisect not broken because autogen.sh && make will
               work the whole time until meson build && ninja is ready

       Cons: - no reference of the meson changes to autotools code

             - additional work for me to redo the patches


There is a possible workaround as Martin suggested that when running git
bisect the script/developer would test libvirt before meson rewrite and
right after it to figure out if the issue is caused by meson rewrite or
not and then continue purely with meson or autotools to look for the
broken commit. This would make sense for option 2) and 3).

Looking forward to your ideas and comments or suggestion with other
options.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:00:20 +0200, Pavel Hrdina wrote:
> On Mon, Jul 27, 2020 at 06:11:11PM +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > > Personally I'd really like to avoid squashing them, because splitting
> > > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > > but to also benefit people who need to debug stuff that's already
> > > > > merged and understand the scope of the intended change. So being able
> > > > > to look back at the changes in isolation after commit is still a big
> > > > > plus point.
> > > > 
> > > > I would like to avoid squashing the patches as well and in most cases I
> > > > would object to it as well. I only suggested that to not break git
> > > > bisect.
> > > > 
> > > > If we don't care about git bisect and the fact that we would not be able
> > > > to build libvirt correctly within these patches I'm OK with pushing it
> > > > without squashing.
> > > 
> > > git bisect reliabity is key, so I reluctantly think we'll need to
> > > squash. I don't want to hit a pathc in this series with a bisect
> > > and be unable to continue the bisect due to inability to build the
> > > code.
> > 
> > I agree. It's definitely necessary that the build is complete at any
> > point in time.
> > 
> > I'm reluctantly willing to accept that the build fails with an
> > appropriate error message until the build system is able to build
> > everything if we opt for commiting a patchset for simplicity. What's
> > off-limits is if build "succeeds", but is incomplete due to missing
> > steps in the implementation. I'm not going to want to guess which part
> > is already built or which isn't.
> > 
> > Given that the rewrite is a singularity anyways it doesn't really matter
> > that we will not be able to bisect problems caused by the build system
> > across the boundary.
> 
> So based on all the comments we have these options for pushing this
> series:
> 
>     1) Squash it into single commit.
> 
>        Pros: - no issues with git bisect
> 
>        Cons: - we will not have the history of changes
> 
>     2) Keep the patches as they are and running meson build & ninja will
>        not fail.
> 
>        Pros: - full history of changes where each commit removes the
>                relevant bits from autotools
> 
>              - git bisect is not broken as compilation will not fail

You can't claim that 'git bisect' is not broken if "compilation does not
fail". That is plainly and utterly misleading ...


>        Cons: - meson build && ninja will not produce complete libvirt
>                binaries and there is no autogen.sh

... as bisect is used to figure out when some code broke. If you don't
compile the code, then bisect _IS_ broken.

Not breaking bisect means that everything must compile.

>              - script used for git bisect will have to detect if tested
>                binaries are compiled or use git bisect skip

No. Just no.

As I've pointed out earlier, you won't use bisect to find when build
system change broke things, because the complete rewrite invalidates
everything anyways.

Build system can be bisected only prior to the change and only after the
change but nothing between.

Option 4 is the winner usability wise and change-insight wise. 1 follows
with just usability benefits. Option 3 is acceptable. Option 2 is not at
all.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:09:42AM +0200, Peter Krempa wrote:
> On Tue, Jul 28, 2020 at 10:00:20 +0200, Pavel Hrdina wrote:
> > On Mon, Jul 27, 2020 at 06:11:11PM +0200, Peter Krempa wrote:
> > > On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > > > Personally I'd really like to avoid squashing them, because splitting
> > > > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > > > but to also benefit people who need to debug stuff that's already
> > > > > > merged and understand the scope of the intended change. So being able
> > > > > > to look back at the changes in isolation after commit is still a big
> > > > > > plus point.
> > > > > 
> > > > > I would like to avoid squashing the patches as well and in most cases I
> > > > > would object to it as well. I only suggested that to not break git
> > > > > bisect.
> > > > > 
> > > > > If we don't care about git bisect and the fact that we would not be able
> > > > > to build libvirt correctly within these patches I'm OK with pushing it
> > > > > without squashing.
> > > > 
> > > > git bisect reliabity is key, so I reluctantly think we'll need to
> > > > squash. I don't want to hit a pathc in this series with a bisect
> > > > and be unable to continue the bisect due to inability to build the
> > > > code.
> > > 
> > > I agree. It's definitely necessary that the build is complete at any
> > > point in time.
> > > 
> > > I'm reluctantly willing to accept that the build fails with an
> > > appropriate error message until the build system is able to build
> > > everything if we opt for commiting a patchset for simplicity. What's
> > > off-limits is if build "succeeds", but is incomplete due to missing
> > > steps in the implementation. I'm not going to want to guess which part
> > > is already built or which isn't.
> > > 
> > > Given that the rewrite is a singularity anyways it doesn't really matter
> > > that we will not be able to bisect problems caused by the build system
> > > across the boundary.
> > 
> > So based on all the comments we have these options for pushing this
> > series:
> > 
> >     1) Squash it into single commit.
> > 
> >        Pros: - no issues with git bisect
> > 
> >        Cons: - we will not have the history of changes
> > 
> >     2) Keep the patches as they are and running meson build & ninja will
> >        not fail.
> > 
> >        Pros: - full history of changes where each commit removes the
> >                relevant bits from autotools
> > 
> >              - git bisect is not broken as compilation will not fail
> 
> You can't claim that 'git bisect' is not broken if "compilation does not
> fail". That is plainly and utterly misleading ...

The wording should have been:

git bisect is not broken if successful compilation that may not build
all binaries is not an issue and marked as git bisect skip

to match the wording for option 3 which was:

git bisect is not broken if failed compilation is not an issue and
marked as git bisect skip

>
> >        Cons: - meson build && ninja will not produce complete libvirt
> >                binaries and there is no autogen.sh
> 
> ... as bisect is used to figure out when some code broke. If you don't
> compile the code, then bisect _IS_ broken.
> 
> Not breaking bisect means that everything must compile.

Here I disagree, it also means that compilation should not fail. We do
comments all the time to patch series that every single commit should
compile correctly on it's own within the series.

To me personally both option 2) and option 3) are similar. In both cases
you will have to end up with the workaround mentioned by Martin and
basically skip the whole meson rewrite when doing git bisect.

> >              - script used for git bisect will have to detect if tested
> >                binaries are compiled or use git bisect skip
> 
> No. Just no.
> 
> As I've pointed out earlier, you won't use bisect to find when build
> system change broke things, because the complete rewrite invalidates
> everything anyways.
> 
> Build system can be bisected only prior to the change and only after the
> change but nothing between.
> 
> Option 4 is the winner usability wise and change-insight wise. 1 follows
> with just usability benefits. Option 3 is acceptable. Option 2 is not at
> all.
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:33:52 +0200, Pavel Hrdina wrote:
> On Tue, Jul 28, 2020 at 10:09:42AM +0200, Peter Krempa wrote:

[...]

> 
> Here I disagree, it also means that compilation should not fail. We do
> comments all the time to patch series that every single commit should
> compile correctly on it's own within the series.

Doing a 'return 0' is not compiling code correctly. The idea of
requirements to bulild cleanly is that you can test the code.

In this case we need to observe it from a different angle though.

In reality an incomplete build is a failed build regardless of what the
return value of the build system is. And that is important here. The
main reason for the build system is to build everything so the only
success is when everything is built.

If you don't have the resulting binary it's impossible to test the code
or do anything else.

What would be even worse is to get a compiled binary that e.g. doesn't
have the dependencies installed (such as RNG schemas, cpu XML docs and
such) and fails in magic ways. At that point you can't be sure whether
it's the bug you are trying to locate or just plainly broken build
which the build system lied to you that it's complete.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 8 months ago
On Tue, Jul 28, 2020 at 12:15:25PM +0200, Peter Krempa wrote:
> On Tue, Jul 28, 2020 at 10:33:52 +0200, Pavel Hrdina wrote:
> > On Tue, Jul 28, 2020 at 10:09:42AM +0200, Peter Krempa wrote:
> 
> [...]
> 
> > 
> > Here I disagree, it also means that compilation should not fail. We do
> > comments all the time to patch series that every single commit should
> > compile correctly on it's own within the series.
> 
> Doing a 'return 0' is not compiling code correctly. The idea of
> requirements to bulild cleanly is that you can test the code.
> 
> In this case we need to observe it from a different angle though.
> 
> In reality an incomplete build is a failed build regardless of what the
> return value of the build system is. And that is important here. The
> main reason for the build system is to build everything so the only
> success is when everything is built.
> 
> If you don't have the resulting binary it's impossible to test the code
> or do anything else.
> 
> What would be even worse is to get a compiled binary that e.g. doesn't
> have the dependencies installed (such as RNG schemas, cpu XML docs and
> such) and fails in magic ways. At that point you can't be sure whether
> it's the bug you are trying to locate or just plainly broken build
> which the build system lied to you that it's complete.

Obviously this would be a big issue if it would randomly fail because of
some missing files that are not yet compiled. I have no objection here.

If your only use-case is to run binaries during git bisect then yes
having not-complete build when build system returns 0 is not correct.

I'm just saying there might be some other use-cases for git bisect
where having incomplete build is not an issue and we should not dismiss
these use-case.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Andrea Bolognani 3 years, 8 months ago
On Tue, 2020-07-28 at 10:00 +0200, Pavel Hrdina wrote:
> So based on all the comments we have these options for pushing this
> series:
> 
>     1) Squash it into single commit.
> 
>     2) Keep the patches as they are and running meson build & ninja will
>        not fail.
> 
>     3) Keep the patches as they are but error out in meson until the
>        conversion is complete. The error can be used to detect if git
>        bisect is withing the meson rewrite.
> 
>     4) Rework the series to have patches adding meson bits without
>        removing anything from autotools and drop the autotools files in
>        a single commit once the meson rewrite is complete

I suggest going for option 1, with the caveat that before pushing you
you should post a fully-reviewed and fixed vN to the mailing list and
include a link to it in the message for the squashed commit. This
will allow us to look back at the original reasoning behind a change
in the same way the reviewer could, without affecting bisectability.

Options 4 would be acceptable as well, but it requires more work on
your side and still requires hitting the mailing list archives to get
the full picture of the rewrite, so I don't think is worth it.

Options 2 and 3 result in a partially-built libvirt over a pretty big
range of commits, which I feel is actually worse than breaking
bisectability.

-- 
Andrea Bolognani / Red Hat / Virtualization

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:00:20AM +0200, Pavel Hrdina wrote:
> On Mon, Jul 27, 2020 at 06:11:11PM +0200, Peter Krempa wrote:
> > On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > > Personally I'd really like to avoid squashing them, because splitting
> > > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > > but to also benefit people who need to debug stuff that's already
> > > > > merged and understand the scope of the intended change. So being able
> > > > > to look back at the changes in isolation after commit is still a big
> > > > > plus point.
> > > > 
> > > > I would like to avoid squashing the patches as well and in most cases I
> > > > would object to it as well. I only suggested that to not break git
> > > > bisect.
> > > > 
> > > > If we don't care about git bisect and the fact that we would not be able
> > > > to build libvirt correctly within these patches I'm OK with pushing it
> > > > without squashing.
> > > 
> > > git bisect reliabity is key, so I reluctantly think we'll need to
> > > squash. I don't want to hit a pathc in this series with a bisect
> > > and be unable to continue the bisect due to inability to build the
> > > code.
> > 
> > I agree. It's definitely necessary that the build is complete at any
> > point in time.
> > 
> > I'm reluctantly willing to accept that the build fails with an
> > appropriate error message until the build system is able to build
> > everything if we opt for commiting a patchset for simplicity. What's
> > off-limits is if build "succeeds", but is incomplete due to missing
> > steps in the implementation. I'm not going to want to guess which part
> > is already built or which isn't.
> > 
> > Given that the rewrite is a singularity anyways it doesn't really matter
> > that we will not be able to bisect problems caused by the build system
> > across the boundary.
> 
> So based on all the comments we have these options for pushing this
> series:
> 
>     1) Squash it into single commit.
> 
>        Pros: - no issues with git bisect
> 
>        Cons: - we will not have the history of changes
> 
>     2) Keep the patches as they are and running meson build & ninja will
>        not fail.
> 
>        Pros: - full history of changes where each commit removes the
>                relevant bits from autotools
> 
>              - git bisect is not broken as compilation will not fail
> 
>        Cons: - meson build && ninja will not produce complete libvirt
>                binaries and there is no autogen.sh
> 
>              - script used for git bisect will have to detect if tested
>                binaries are compiled or use git bisect skip

So basically any time git bisect lands on one of the meson conversion
patches, we'll need to use "git bisect skip". You might have todo that
multiple times. It'll make bisect less efficient, but assuming the
problem was not part of the meson series, git will eventually show
you the broken commit.

The problem here is remembering which commits are ones which need
to be skipped.....

>     3) Keep the patches as they are but error out in meson until the
>        conversion is complete. The error can be used to detect if git
>        bisect is withing the meson rewrite.
> 
>        Pros: - full history of changes where each commit removes the     
>                relevant bits from autotools
> 
>              - git bisect is not broken if failed compilation is not an
>                issue and marked as git bisect skip


> 
>        Cons: - meson build will fail and there is no autogen.sh so no
>                way how to compile libvirt even partially
> 
>              - script used for git bisect will have to skip failed
>                compilation with an option to check for specific error

..So explicitly failing the meson build is a significant improvement.

We could have

 - Meson build is forced to fail out of the box
 - An option "force_incomplete_build" to turn off the fail
 - When failing prints an error message

       "This commit is part of the meson conversion and does not
        build a complete libvirt. If bisecting, use "git bisect skip"
        to continue, or "-Dforce_incomplete_build=true" to perform a
        partial build"

So with that we would have full history, and git bisect would be able
to identify problems in ANY commit that is NOT part of the meson
series, except the single commit that is immediately either side of
the meson series. That should be viable I think.

>     4) Rework the series to have patches adding meson bits without
>        removing anything from autotools and drop the autotools files in
>        a single commit once the meson rewrite is complete
> 
>        Pros: - full history of changes
> 
>              - git bisect not broken because autogen.sh && make will
>                work the whole time until meson build && ninja is ready
> 
>        Cons: - no reference of the meson changes to autotools code
> 
>              - additional work for me to redo the patches


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 8 months ago
On Tue, Jul 28, 2020 at 10:58:03AM +0100, Daniel P. Berrangé wrote:
> On Tue, Jul 28, 2020 at 10:00:20AM +0200, Pavel Hrdina wrote:
> > On Mon, Jul 27, 2020 at 06:11:11PM +0200, Peter Krempa wrote:
> > > On Fri, Jul 17, 2020 at 15:02:10 +0100, Daniel Berrange wrote:
> > > > On Thu, Jul 16, 2020 at 03:44:25PM +0200, Pavel Hrdina wrote:
> > > > > On Thu, Jul 16, 2020 at 01:59:00PM +0100, Daniel P. Berrangé wrote:
> > > > > > Personally I'd really like to avoid squashing them, because splitting
> > > > > > up big patches is not merely to benefit the initial pre-merge review,
> > > > > > but to also benefit people who need to debug stuff that's already
> > > > > > merged and understand the scope of the intended change. So being able
> > > > > > to look back at the changes in isolation after commit is still a big
> > > > > > plus point.
> > > > > 
> > > > > I would like to avoid squashing the patches as well and in most cases I
> > > > > would object to it as well. I only suggested that to not break git
> > > > > bisect.
> > > > > 
> > > > > If we don't care about git bisect and the fact that we would not be able
> > > > > to build libvirt correctly within these patches I'm OK with pushing it
> > > > > without squashing.
> > > > 
> > > > git bisect reliabity is key, so I reluctantly think we'll need to
> > > > squash. I don't want to hit a pathc in this series with a bisect
> > > > and be unable to continue the bisect due to inability to build the
> > > > code.
> > > 
> > > I agree. It's definitely necessary that the build is complete at any
> > > point in time.
> > > 
> > > I'm reluctantly willing to accept that the build fails with an
> > > appropriate error message until the build system is able to build
> > > everything if we opt for commiting a patchset for simplicity. What's
> > > off-limits is if build "succeeds", but is incomplete due to missing
> > > steps in the implementation. I'm not going to want to guess which part
> > > is already built or which isn't.
> > > 
> > > Given that the rewrite is a singularity anyways it doesn't really matter
> > > that we will not be able to bisect problems caused by the build system
> > > across the boundary.
> > 
> > So based on all the comments we have these options for pushing this
> > series:
> > 
> >     1) Squash it into single commit.
> > 
> >        Pros: - no issues with git bisect
> > 
> >        Cons: - we will not have the history of changes
> > 
> >     2) Keep the patches as they are and running meson build & ninja will
> >        not fail.
> > 
> >        Pros: - full history of changes where each commit removes the
> >                relevant bits from autotools
> > 
> >              - git bisect is not broken as compilation will not fail
> > 
> >        Cons: - meson build && ninja will not produce complete libvirt
> >                binaries and there is no autogen.sh
> > 
> >              - script used for git bisect will have to detect if tested
> >                binaries are compiled or use git bisect skip
> 
> So basically any time git bisect lands on one of the meson conversion
> patches, we'll need to use "git bisect skip". You might have todo that
> multiple times. It'll make bisect less efficient, but assuming the
> problem was not part of the meson series, git will eventually show
> you the broken commit.
> 
> The problem here is remembering which commits are ones which need
> to be skipped.....
> 
> >     3) Keep the patches as they are but error out in meson until the
> >        conversion is complete. The error can be used to detect if git
> >        bisect is withing the meson rewrite.
> > 
> >        Pros: - full history of changes where each commit removes the     
> >                relevant bits from autotools
> > 
> >              - git bisect is not broken if failed compilation is not an
> >                issue and marked as git bisect skip
> 
> 
> > 
> >        Cons: - meson build will fail and there is no autogen.sh so no
> >                way how to compile libvirt even partially
> > 
> >              - script used for git bisect will have to skip failed
> >                compilation with an option to check for specific error
> 
> ..So explicitly failing the meson build is a significant improvement.
> 
> We could have
> 
>  - Meson build is forced to fail out of the box
>  - An option "force_incomplete_build" to turn off the fail
>  - When failing prints an error message
> 
>        "This commit is part of the meson conversion and does not
>         build a complete libvirt. If bisecting, use "git bisect skip"
>         to continue, or "-Dforce_incomplete_build=true" to perform a
>         partial build"
> 
> So with that we would have full history, and git bisect would be able
> to identify problems in ANY commit that is NOT part of the meson
> series, except the single commit that is immediately either side of
> the meson series. That should be viable I think.

I like the extra option which would be removed once we remove the error
message as well. It makes nice compromise between options 2) and 3).

Peter suggested using the error message in a private conversation that
we had and this improves it a bit more so if we can agree on this
I'll go with it.

Thanks

Pavel

> 
> >     4) Rework the series to have patches adding meson bits without
> >        removing anything from autotools and drop the autotools files in
> >        a single commit once the meson rewrite is complete
> > 
> >        Pros: - full history of changes
> > 
> >              - git bisect not broken because autogen.sh && make will
> >                work the whole time until meson build && ninja is ready
> > 
> >        Cons: - no reference of the meson changes to autotools code
> > 
> >              - additional work for me to redo the patches
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Peter Krempa 3 years, 8 months ago
On Tue, Jul 28, 2020 at 12:08:17 +0200, Pavel Hrdina wrote:
> On Tue, Jul 28, 2020 at 10:58:03AM +0100, Daniel P. Berrangé wrote:
> > On Tue, Jul 28, 2020 at 10:00:20AM +0200, Pavel Hrdina wrote:

[...]

> >  - Meson build is forced to fail out of the box
> >  - An option "force_incomplete_build" to turn off the fail
> >  - When failing prints an error message
> > 
> >        "This commit is part of the meson conversion and does not
> >         build a complete libvirt. If bisecting, use "git bisect skip"
> >         to continue, or "-Dforce_incomplete_build=true" to perform a
> >         partial build"
> > 
> > So with that we would have full history, and git bisect would be able
> > to identify problems in ANY commit that is NOT part of the meson
> > series, except the single commit that is immediately either side of
> > the meson series. That should be viable I think.
> 
> I like the extra option which would be removed once we remove the error
> message as well. It makes nice compromise between options 2) and 3).
> 
> Peter suggested using the error message in a private conversation that
> we had and this improves it a bit more so if we can agree on this
> I'll go with it.

I reckon that doing a build at any point partway in the series is
generally not useful, but sure option 3 is my minimum requirement, so if
that is what happens by default I don't mind if you add the extra
option.

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Ján Tomko 3 years, 8 months ago
On a Tuesday in 2020, Daniel P. Berrangé wrote:
>On Tue, Jul 28, 2020 at 10:00:20AM +0200, Pavel Hrdina wrote:
>>     3) Keep the patches as they are but error out in meson until the
>>        conversion is complete. The error can be used to detect if git
>>        bisect is withing the meson rewrite.
>>
>>        Pros: - full history of changes where each commit removes the
>>                relevant bits from autotools
>>
>>              - git bisect is not broken if failed compilation is not an
>>                issue and marked as git bisect skip
>
>
>>
>>        Cons: - meson build will fail and there is no autogen.sh so no
>>                way how to compile libvirt even partially
>>
>>              - script used for git bisect will have to skip failed
>>                compilation with an option to check for specific error
>
>..So explicitly failing the meson build is a significant improvement.
>
>We could have
>
> - Meson build is forced to fail out of the box
> - An option "force_incomplete_build" to turn off the fail
> - When failing prints an error message
>
>       "This commit is part of the meson conversion and does not
>        build a complete libvirt. If bisecting, use "git bisect skip"
>        to continue, or "-Dforce_incomplete_build=true" to perform a
>        partial build"
>

For unattended bisects, it would be nice to return 125 which is the
magic value meaning 'skip' to 'git bisect run'.

Jano

>So with that we would have full history, and git bisect would be able
>to identify problems in ANY commit that is NOT part of the meson
>series, except the single commit that is immediately either side of
>the meson series. That should be viable I think.
>
>>     4) Rework the series to have patches adding meson bits without
>>        removing anything from autotools and drop the autotools files in
>>        a single commit once the meson rewrite is complete
>>
>>        Pros: - full history of changes
>>
>>              - git bisect not broken because autogen.sh && make will
>>                work the whole time until meson build && ninja is ready
>>
>>        Cons: - no reference of the meson changes to autotools code
>>
>>              - additional work for me to redo the patches
>
>
>Regards,
>Daniel
>-- 
>|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
>|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
>|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|
>
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 8 months ago
On Tue, Jul 28, 2020 at 12:24:56PM +0200, Ján Tomko wrote:
> On a Tuesday in 2020, Daniel P. Berrangé wrote:
> > On Tue, Jul 28, 2020 at 10:00:20AM +0200, Pavel Hrdina wrote:
> > >     3) Keep the patches as they are but error out in meson until the
> > >        conversion is complete. The error can be used to detect if git
> > >        bisect is withing the meson rewrite.
> > > 
> > >        Pros: - full history of changes where each commit removes the
> > >                relevant bits from autotools
> > > 
> > >              - git bisect is not broken if failed compilation is not an
> > >                issue and marked as git bisect skip
> > 
> > 
> > > 
> > >        Cons: - meson build will fail and there is no autogen.sh so no
> > >                way how to compile libvirt even partially
> > > 
> > >              - script used for git bisect will have to skip failed
> > >                compilation with an option to check for specific error
> > 
> > ..So explicitly failing the meson build is a significant improvement.
> > 
> > We could have
> > 
> > - Meson build is forced to fail out of the box
> > - An option "force_incomplete_build" to turn off the fail
> > - When failing prints an error message
> > 
> >       "This commit is part of the meson conversion and does not
> >        build a complete libvirt. If bisecting, use "git bisect skip"
> >        to continue, or "-Dforce_incomplete_build=true" to perform a
> >        partial build"
> > 
> 
> For unattended bisects, it would be nice to return 125 which is the
> magic value meaning 'skip' to 'git bisect run'.

I don't think its possible to force the ninja/meson exit status
upon failure. I think at best uou could have a wrapper script
"mymeson" that looks for this error message and returns 125.




Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Ján Tomko 3 years, 8 months ago
On a Tuesday in 2020, Daniel P. Berrangé wrote:
>On Tue, Jul 28, 2020 at 12:24:56PM +0200, Ján Tomko wrote:
>> For unattended bisects, it would be nice to return 125 which is the
>> magic value meaning 'skip' to 'git bisect run'.
>
>I don't think its possible to force the ninja/meson exit status
>upon failure. I think at best uou could have a wrapper script
>"mymeson" that looks for this error message and returns 125.
>

   meson test

returns 125 on a build failure, that might be helpful.

Jano
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Daniel P. Berrangé 3 years, 9 months ago
On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> Patches are available in my Gitlab repo as well:
> 
>     git clone -b meson https://gitlab.com/phrdina/libvirt.git
> 
> and link to Giltab pipeline:
> 
>     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> 
> The pipeline is not for the latest version is I tweaked some commit
> messages.

BTW, assuming we do positively review this, we need to consider when
is a good time to merge. Having positive CI builds is good, but that
only tells us that a build succeeded, it doesn't tell us that all the
right features are enabled. I think it is inevitable that we are going
to break stuff and miss it in review.  So the prudent approach would
be to merge this series immediately after a release, so that we have
as much of a full month available as possible for debugging post-merge.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Thu, Jul 16, 2020 at 02:01:34PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> > Patches are available in my Gitlab repo as well:
> > 
> >     git clone -b meson https://gitlab.com/phrdina/libvirt.git
> > 
> > and link to Giltab pipeline:
> > 
> >     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> > 
> > The pipeline is not for the latest version is I tweaked some commit
> > messages.
> 
> BTW, assuming we do positively review this, we need to consider when
> is a good time to merge. Having positive CI builds is good, but that
> only tells us that a build succeeded, it doesn't tell us that all the
> right features are enabled. I think it is inevitable that we are going
> to break stuff and miss it in review.  So the prudent approach would
> be to merge this series immediately after a release, so that we have
> as much of a full month available as possible for debugging post-merge.

Completely agree here. I wanted to post the patches with some time
before next release so the review can catch the main and obvious issues
or suggest different approach to some parts of the new build system.

There were also privet suggestions to push it even without review right
after release is done and deal with the issues before next release.

All of the above works for me and would be probably the most reasonable
thing to do.

Pavel
Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Jiri Denemark 3 years, 9 months ago
On Thu, Jul 16, 2020 at 15:47:48 +0200, Pavel Hrdina wrote:
> On Thu, Jul 16, 2020 at 02:01:34PM +0100, Daniel P. Berrangé wrote:
> > On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> > > Patches are available in my Gitlab repo as well:
> > > 
> > >     git clone -b meson https://gitlab.com/phrdina/libvirt.git
> > > 
> > > and link to Giltab pipeline:
> > > 
> > >     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> > > 
> > > The pipeline is not for the latest version is I tweaked some commit
> > > messages.
> > 
> > BTW, assuming we do positively review this, we need to consider when
> > is a good time to merge. Having positive CI builds is good, but that
> > only tells us that a build succeeded, it doesn't tell us that all the
> > right features are enabled. I think it is inevitable that we are going
> > to break stuff and miss it in review.  So the prudent approach would
> > be to merge this series immediately after a release, so that we have
> > as much of a full month available as possible for debugging post-merge.
> 
> Completely agree here. I wanted to post the patches with some time
> before next release so the review can catch the main and obvious issues
> or suggest different approach to some parts of the new build system.
> 
> There were also privet suggestions to push it even without review right
> after release is done and deal with the issues before next release.

This was more a joke than a serious suggestion. But I basically wanted
to express what Daniel said already. We will face bugs that won't be
caught by any review and it will take time to find and fix them. I agree
with the plan to push this after the release.

Jirka

Re: [libvirt PATCH 000/351] port libvirt to Meson build system
Posted by Pavel Hrdina 3 years, 9 months ago
On Thu, Jul 16, 2020 at 08:36:42PM +0200, Jiri Denemark wrote:
> On Thu, Jul 16, 2020 at 15:47:48 +0200, Pavel Hrdina wrote:
> > On Thu, Jul 16, 2020 at 02:01:34PM +0100, Daniel P. Berrangé wrote:
> > > On Thu, Jul 16, 2020 at 11:53:56AM +0200, Pavel Hrdina wrote:
> > > > Patches are available in my Gitlab repo as well:
> > > > 
> > > >     git clone -b meson https://gitlab.com/phrdina/libvirt.git
> > > > 
> > > > and link to Giltab pipeline:
> > > > 
> > > >     https://gitlab.com/phrdina/libvirt/-/pipelines/167276632
> > > > 
> > > > The pipeline is not for the latest version is I tweaked some commit
> > > > messages.
> > > 
> > > BTW, assuming we do positively review this, we need to consider when
> > > is a good time to merge. Having positive CI builds is good, but that
> > > only tells us that a build succeeded, it doesn't tell us that all the
> > > right features are enabled. I think it is inevitable that we are going
> > > to break stuff and miss it in review.  So the prudent approach would
> > > be to merge this series immediately after a release, so that we have
> > > as much of a full month available as possible for debugging post-merge.
> > 
> > Completely agree here. I wanted to post the patches with some time
> > before next release so the review can catch the main and obvious issues
> > or suggest different approach to some parts of the new build system.
> > 
> > There were also privet suggestions to push it even without review right
> > after release is done and deal with the issues before next release.
> 
> This was more a joke than a serious suggestion. But I basically wanted
> to express what Daniel said already. We will face bugs that won't be
> caught by any review and it will take time to find and fix them. I agree
> with the plan to push this after the release.

You were not the only one :) obviously it was a joke. There should be
review at least of the main constructs and design of the patches to make
sure we are on the same page. But doing review of every single line
would take ages.

Pavel