[libvirt] [dbus PATCH v2] build: convert to Meson/Ninja build system
Fabiano Fidêncio
fidencio at redhat.com
Fri Sep 20 11:28:28 UTC 2019
On Fri, Sep 20, 2019 at 11:05 AM Pavel Hrdina <phrdina at redhat.com> wrote:
>
> Meson build system is simple and quick compared to Autotools and it's
> able to fully replace our Autotools usage. There are few drawbacks as
> it's a fairly new build system, it requires Python 3.5 and Ninja 1.5.0,
> it's still evolving and the user base is not that large and there were
> some tweaks required to achieve the same functionality.
>
> However, there are benefits, the configure and build time is way shorter
> and build definition files are more readable and easier to maintain.
>
> There are some major changes with Meson build system:
>
> - there is no syntax-check target, the syntax-check is part of Meson
> test suite but it's still possible to run it separately,
>
> - Meson forces separation between source and build directories
>
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> Tested-by: Ján Tomko <jtomko at redhat.com>
> ---
>
> Notes:
> changes in v2:
>
> - add -Werror if we are building from git
> - fixed -Wframe-larger-than
> - removed unrelated fix
> - added comment for flake8 ignore warning
> - added 'suite' labels 'syntax' and 'unit' for tests
> - AUTHORS and libvirt-dbus.spec are generated only when building from git
Why? Not opposed to this decision, just want to understand the reason for that.
> - run.in is no longer executable, there is a helper script to fix permissions
> for the generated run script
> - fixed include_directories for test executable, direct paths can be used
> since meson 0.50.0
By using 0.50.0 you're dropping support on:
- Debian 10;
- Ubuntu 19.04;
Personally, I would stick to 0.49.0.
> - flake8 is optional as it was with autotools
> - added meson version into spec file
>
> .gitignore | 1 +
> AUTHORS.in | 2 +-
> HACKING.md | 24 ++--
> Makefile.am | 51 -------
> README.md | 12 +-
> autogen.sh | 52 -------
> configure.ac | 87 -----------
> data/Makefile.am | 83 -----------
> data/meson.build | 15 ++
> data/session/meson.build | 6 +
> data/system/meson.build | 18 +++
> docs/Makefile.am | 21 ---
> docs/meson.build | 8 ++
> libvirt-dbus.spec.in | 9 +-
> m4/manywarnings.m4 | 276 -----------------------------------
> m4/virt-arg.m4 | 154 --------------------
> m4/virt-compile-pie.m4 | 35 -----
> m4/virt-compile-warnings.m4 | 203 --------------------------
> m4/virt-linker-relro.m4 | 35 -----
> m4/warnings.m4 | 79 ----------
> meson.build | 279 ++++++++++++++++++++++++++++++++++++
> meson_options.txt | 6 +
> run.in | 4 +-
> src/Makefile.am | 66 ---------
> src/meson.build | 42 ++++++
> tests/Makefile.am | 57 --------
> tests/meson.build | 52 +++++++
> tools/fix-perm.sh | 3 +
> tools/gen-authors.sh | 4 +
> 29 files changed, 463 insertions(+), 1221 deletions(-)
> delete mode 100644 Makefile.am
> delete mode 100755 autogen.sh
> delete mode 100644 configure.ac
> delete mode 100644 data/Makefile.am
> create mode 100644 data/meson.build
> create mode 100644 data/session/meson.build
> create mode 100644 data/system/meson.build
> delete mode 100644 docs/Makefile.am
> create mode 100644 docs/meson.build
> delete mode 100644 m4/manywarnings.m4
> delete mode 100644 m4/virt-arg.m4
> delete mode 100644 m4/virt-compile-pie.m4
> delete mode 100644 m4/virt-compile-warnings.m4
> delete mode 100644 m4/virt-linker-relro.m4
> delete mode 100644 m4/warnings.m4
> create mode 100644 meson.build
> create mode 100644 meson_options.txt
> delete mode 100644 src/Makefile.am
> create mode 100644 src/meson.build
> delete mode 100644 tests/Makefile.am
> create mode 100644 tests/meson.build
> create mode 100755 tools/fix-perm.sh
> create mode 100755 tools/gen-authors.sh
>
> diff --git a/.gitignore b/.gitignore
> index b4abf66..7ed7554 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -19,6 +19,7 @@ vgcore.*
> /aclocal.m4
> /autom4te.cache/
> /build-aux/
> +/build/
> /config.h
> /config.h.in
> /config.log
> diff --git a/AUTHORS.in b/AUTHORS.in
> index 52202ea..d5a486e 100644
> --- a/AUTHORS.in
> +++ b/AUTHORS.in
> @@ -13,4 +13,4 @@ The primary maintainers of libvirt-dbus are:
>
> Patches have been received from:
>
> -#contributorslist#
> + at contributorslist@
> diff --git a/HACKING.md b/HACKING.md
> index 8903408..e90f136 100644
> --- a/HACKING.md
> +++ b/HACKING.md
> @@ -16,32 +16,40 @@ Alternatively you can use one of the mirrors:
> Running from git repository
> ---------------------------
>
> - * The first step is to run autoreconf to create configure script:
> + * The first step is to run meson to create build directory:
>
> ```
> - ./autogen.sh
> + meson build
> ```
>
> Now you can compile libvirt-dbus:
>
> ```
> - make
> + ninja -C build
> ```
>
>
> - * Before posting a patch, you should run tests and perform syntax-checking:
> + * Before posting a patch, you should run tests:
>
> ```
> - make check
> + ninja -C build test
> ```
>
> - The test tool requires python3, python3-pytest and python3-dbus.
> + The test tool requires python3, python3-pytest, python3-dbus and flake8.
> +
> + It is possible to run only specific test using:
> +
> + ```
> + meson test -C build $test-name
> + ```
> +
> + or a group of tests:
>
> ```
> - make syntax-check
> + meson test -C build --suite $label
> ```
>
> - To run this flake8 package is required.
> + For more information see [https://mesonbuild.com/Unit-tests.html#testing-tool](https://mesonbuild.com/Unit-tests.html#testing-tool).
>
>
> * To run libvirt-dbus directly from the build dir without installing it
> diff --git a/Makefile.am b/Makefile.am
> deleted file mode 100644
> index 0914449..0000000
> --- a/Makefile.am
> +++ /dev/null
> @@ -1,51 +0,0 @@
> -SUBDIRS = \
> - data \
> - docs \
> - src \
> - tests \
> - $(NULL)
> -
> -ACLOCAL_AMFLAGS = -I m4
> -
> -EXTRA_DIST = \
> - $(PACKAGE).spec \
> - $(PACKAGE).spec.in \
> - AUTHORS.in \
> - HACKING.md \
> - README.md \
> - $(NULL)
> -
> -DISTCLEAN_FILES = \
> - $(PACKAGE).spec \
> - $(NULL)
> -
> -rpm: clean
> - @(unset CDPATH ; $(MAKE) dist && rpmbuild -ta $(distdir).tar.xz)
> -
> -dist-hook: gen-AUTHORS
> -
> -# Generate the AUTHORS file (with all entries since the switch to git)
> -# and insert it into the directory we're about to use to create a tarball.
> -.PHONY: gen-AUTHORS
> -gen-AUTHORS:
> - $(AM_V_GEN)\
> - if test -d $(srcdir)/.git; then \
> - ( \
> - cd $(srcdir) && \
> - git log --pretty=format:' %aN <%aE>' | sort -u \
> - ) > all.list && \
> - sort -u $(srcdir)/AUTHORS.in > maint.list && \
> - comm -23 all.list maint.list > contrib.list && \
> - contrib="`cat contrib.list`" && \
> - perl -p -e "s/#contributorslist#// and print '$$contrib'" \
> - < $(srcdir)/AUTHORS.in > $(distdir)/AUTHORS-tmp && \
> - mv -f $(distdir)/AUTHORS-tmp $(distdir)/AUTHORS && \
> - rm -f all.list maint.list contrib.list; \
> - fi
> -
> -# E501: (line too long) warning is ignored.
> -.PHONY: flake8
> -flake8:
> - $(FLAKE8) --show-source --ignore=E501 $(srcdir)
> -
> -syntax-check: flake8
> diff --git a/README.md b/README.md
> index 66aa6f6..e365650 100644
> --- a/README.md
> +++ b/README.md
> @@ -32,21 +32,19 @@ The packages required to build libvirt-dbus are
> Installation
> ------------
>
> -libvirt-dbus uses GNU Autotools build system, so the build & install
> +libvirt-dbus uses Meson build system, so the build & install
> process is fairly simple. For example, to install as root user:
>
> ```
> -# ./configure --prefix=/usr --sysconfigdir=/etc --localstatedir=/var
> -# make
> -# make install
> +# meson build --prefix=/usr --sysconfigdir=/etc --localstatedir=/var
> +# ninja -C build install
> ```
>
> or to install as unprivileged user:
>
> ```
> -$ ./configure --prefix=$HOME/usr
> -$ make
> -$ make install
> +$ meson build --prefix=$HOME/usr
> +$ ninja -C build install
> ```
>
>
> diff --git a/autogen.sh b/autogen.sh
> deleted file mode 100755
> index 6f29899..0000000
> --- a/autogen.sh
> +++ /dev/null
> @@ -1,52 +0,0 @@
> -#!/bin/sh
> -# Run this to generate all the initial makefiles, etc.
> -
> -set -e
> -srcdir=`dirname $0`
> -test -z "$srcdir" && srcdir=.
> -
> -THEDIR=`pwd`
> -cd $srcdir
> -
> -DIE=0
> -
> -for prog in autoreconf automake autoconf libtoolize
> -do
> - ($prog --version) < /dev/null > /dev/null 2>&1 || {
> - echo
> - echo "You must have $prog installed to compile libvirt-dbus."
> - DIE=1
> - }
> -done
> -
> -if test "$DIE" -eq 1; then
> - exit 1
> -fi
> -
> -if test -z "$*"; then
> - echo "I am going to run ./configure with no args - if you "
> - echo "wish to pass any extra arguments to it, please specify them on "
> - echo "the $0 command line."
> -fi
> -
> -mkdir -p build-aux
> -autoreconf -if
> -
> -cd $THEDIR
> -
> -if test "x$1" = "x--system"; then
> - shift
> - prefix=/usr
> - libdir=$prefix/lib
> - sysconfdir=/etc
> - localstatedir=/var
> - if [ -d /usr/lib64 ]; then
> - libdir=$prefix/lib64
> - fi
> - EXTRA_ARGS="--prefix=$prefix --sysconfdir=$sysconfdir --localstatedir=$localstatedir --libdir=$libdir"
> -fi
--system ended up being remove here but never added back.
AFAIU that's a pattern followed by libvirt* projects and, if that's
the case, may be worth to adding it back.
> -
> -$srcdir/configure $EXTRA_ARGS "$@" && {
> - echo
> - echo "Now type 'make' to compile libvirt-dbus."
> -}
> diff --git a/configure.ac b/configure.ac
> deleted file mode 100644
> index 24ebb26..0000000
> --- a/configure.ac
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -AC_INIT([libvirt-dbus], [1.4.0], [libvir-list at redhat.com], [], [https://libvirt.org])
> -
> -AC_CONFIG_SRCDIR([src/main.c])
> -AC_CONFIG_AUX_DIR([build-aux])
> -AC_CONFIG_HEADERS([config.h])
> -AC_CONFIG_MACRO_DIR([m4])
> -dnl Make automake keep quiet about wildcards & other GNUmake-isms
> -AM_INIT_AUTOMAKE([foreign -Wno-portability -Wno-obsolete subdir-objects tar-pax no-dist-gzip dist-xz])
> -AC_CANONICAL_HOST
> -AC_USE_SYSTEM_EXTENSIONS
> -
> -AM_SILENT_RULES([yes])
> -
> -GLIB2_REQUIRED=2.44.0
> -LIBVIRT_REQUIRED=3.0.0
> -LIBVIRT_GLIB_REQUIRED=0.0.7
> -AC_SUBST([GLIB2_REQUIRED]) dnl used in the .spec file
> -AC_SUBST([LIBVIRT_REQUIRED]) dnl used in the .spec file
> -AC_SUBST([LIBVIRT_GLIB_REQUIRED]) dnl used in the .spec file
> -
> -LIBVIRT_DBUS_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'`
> -LIBVIRT_DBUS_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'`
> -LIBVIRT_DBUS_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'`
> -LIBVIRT_DBUS_VERSION=$LIBVIRT_DBUS_MAJOR_VERSION.$LIBVIRT_DBUS_MINOR_VERSION.$LIBVIRT_DBUS_MICRO_VERSION$LIBVIRT_DBUS_MICRO_VERSION_SUFFIX
> -LIBVIRT_DBUS_VERSION_NUMBER=`expr $LIBVIRT_DBUS_MAJOR_VERSION \* 1000000 + $LIBVIRT_dbus_MINOR_VERSION \* 1000 + $LIBVIRT_DBUS_MICRO_VERSION`
> -
> -AC_SUBST([LIBVIRT_DBUS_MAJOR_VERSION])
> -AC_SUBST([LIBVIRT_DBUS_MINOR_VERSION])
> -AC_SUBST([LIBVIRT_DBUS_MICRO_VERSION])
> -AC_SUBST([LIBVIRT_DBUS_VERSION])
> -AC_SUBST([LIBVIRT_DBUS_VERSION_INFO])
> -AC_SUBST([LIBVIRT_DBUS_VERSION_NUMBER])
> -
> -AC_PROG_CC
> -AC_PROG_MKDIR_P
> -AM_PROG_CC_C_O
> -AC_PROG_CC_STDC
> -AC_PROG_LIBTOOL
> -AC_PATH_PROGS([FLAKE8], [flake8 flake8-3.6])
> -
> -PKG_CHECK_MODULES([GIO2], [gio-unix-2.0 >= $GLIB2_REQUIRED])
> -PKG_CHECK_MODULES([GLIB2], [glib-2.0 >= $GLIB2_REQUIRED])
> -PKG_CHECK_MODULES([LIBVIRT], [libvirt >= $LIBVIRT_REQUIRED])
> -PKG_CHECK_MODULES([LIBVIRT_GLIB], [libvirt-glib-1.0 >= $LIBVIRT_GLIB_REQUIRED])
> -
> -LIBVIRT_COMPILE_WARNINGS
> -LIBVIRT_LINKER_RELRO
> -LIBVIRT_COMPILE_PIE
> -
> -LIBVIRT_ARG_WITH([DBUS_SERVICES], [where D-Bus session services direcotry is],
> - ['$(datadir)/dbus-1/services'])
> -DBUS_SERVICES_DIR="$with_dbus_services"
> -AC_SUBST([DBUS_SERVICES_DIR])
> -
> -LIBVIRT_ARG_WITH([DBUS_SYSTEM_SERVICES], [where D-Bus system services directory is],
> - ['$(datadir)/dbus-1/system-services'])
> -DBUS_SYSTEM_SERVICES_DIR="$with_dbus_system_services"
> -AC_SUBST([DBUS_SYSTEM_SERVICES_DIR])
> -
> -LIBVIRT_ARG_WITH([DBUS_SYSTEM_POLICIES], [where D-Bus system policies directory is],
> - ['$(datadir)/dbus-1/system.d'])
> -DBUS_SYSTEM_POLICIES_DIR="$with_dbus_system_policies"
> -AC_SUBST([DBUS_SYSTEM_POLICIES_DIR])
> -
> -LIBVIRT_ARG_WITH([DBUS_INTERFACES], [where D-Bus interfaces directory is],
> - ['$(datadir)/dbus-1/interfaces'])
> -DBUS_INTERFACES_DIR="$with_dbus_interfaces"
> -AC_SUBST([DBUS_INTERFACES_DIR])
> -
> -LIBVIRT_ARG_WITH([POLKIT_RULES], [directory for polkit rules],
> - ['$(datadir)/polkit-1/rules.d'])
> -POLKIT_RULES_DIR="$with_polkit_rules"
> -AC_SUBST([POLKIT_RULES_DIR])
> -
> -LIBVIRT_ARG_WITH([SYSTEM_USER], [username to run system instance as],
> - ['libvirtdbus'])
> -SYSTEM_USER=$with_system_user
> -AC_SUBST([SYSTEM_USER])
> -
> -AC_CONFIG_FILES([run],
> - [chmod +x,-w run])
> -AC_OUTPUT([Makefile
> - data/Makefile
> - docs/Makefile
> - src/Makefile
> - tests/Makefile
> - libvirt-dbus.spec])
> diff --git a/data/Makefile.am b/data/Makefile.am
> deleted file mode 100644
> index f8311bd..0000000
> --- a/data/Makefile.am
> +++ /dev/null
> @@ -1,83 +0,0 @@
> -service_in_files = \
> - session/org.libvirt.service.in \
> - $(NULL)
> -servicedir = $(DBUS_SERVICES_DIR)
> -service_DATA = \
> - $(service_in_files:.service.in=.service) \
> - $(NULL)
> -
> -system_service_in_files = \
> - system/org.libvirt.service.in \
> - $(NULL)
> -system_servicedir = $(DBUS_SYSTEM_SERVICES_DIR)
> -system_service_DATA = \
> - $(system_service_in_files:.service.in=.service) \
> - $(NULL)
> -
> -system_policy_in_files = \
> - system/org.libvirt.conf.in \
> - $(NULL)
> -system_policydir = $(DBUS_SYSTEM_POLICIES_DIR)
> -system_policy_DATA = \
> - $(system_policy_in_files:.conf.in=.conf) \
> - $(NULL)
> -
> -polkit_in_files = \
> - system/libvirt-dbus.rules.in \
> - $(NULL)
> -polkitdir = $(POLKIT_RULES_DIR)
> -polkit_DATA = \
> - $(polkit_in_files:.rules.in=.rules) \
> - $(NULL)
> -
> -interfaces_files = \
> - org.libvirt.Connect.xml \
> - org.libvirt.Domain.xml \
> - org.libvirt.Interface.xml \
> - org.libvirt.Network.xml \
> - org.libvirt.NodeDevice.xml \
> - org.libvirt.NWFilter.xml \
> - org.libvirt.Secret.xml \
> - org.libvirt.StoragePool.xml \
> - org.libvirt.StorageVol.xml \
> - $(NULL)
> -interfacesdir = $(DBUS_INTERFACES_DIR)
> -interfaces_DATA = \
> - $(interfaces_files) \
> - $(NULL)
> -
> -EXTRA_DIST = \
> - $(service_in_files) \
> - $(system_service_in_files) \
> - $(system_policy_in_files) \
> - $(polkit_in_files) \
> - $(interfaces_files) \
> - $(NULL)
> -
> -CLEANFILES = \
> - $(service_DATA) \
> - $(system_service_DATA) \
> - $(system_policy_DATA) \
> - $(polkit_DATA) \
> - $(NULL)
> -
> -session/org.libvirt.service: session/org.libvirt.service.in
> - $(AM_V_GEN)$(MKDIR_P) session && \
> - sed -e 's|[@]sbindir[@]|$(sbindir)|g' < $< > $@-t && \
> - mv $@-t $@
> -
> -system/org.libvirt.service: system/org.libvirt.service.in
> - $(AM_V_GEN)$(MKDIR_P) system && \
> - sed -e 's|[@]sbindir[@]|$(sbindir)|g' \
> - -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
> - < $< > $@-t && mv $@-t $@
> -
> -system/org.libvirt.conf: system/org.libvirt.conf.in
> - $(AM_V_GEN)$(MKDIR_P) system && \
> - sed -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
> - < $< > $@-t && mv $@-t $@
> -
> -system/libvirt-dbus.rules: system/libvirt-dbus.rules.in
> - $(AM_V_GEN)$(MKDIR_P) system && \
> - sed -e 's|[@]SYSTEM_USER[@]|$(SYSTEM_USER)|' \
> - < $< > $@-t && mv $@-t $@
> diff --git a/data/meson.build b/data/meson.build
> new file mode 100644
> index 0000000..42a6799
> --- /dev/null
> +++ b/data/meson.build
> @@ -0,0 +1,15 @@
> +install_data(
> + 'org.libvirt.Connect.xml',
> + 'org.libvirt.Domain.xml',
> + 'org.libvirt.Interface.xml',
> + 'org.libvirt.Network.xml',
> + 'org.libvirt.NodeDevice.xml',
> + 'org.libvirt.NWFilter.xml',
> + 'org.libvirt.Secret.xml',
> + 'org.libvirt.StoragePool.xml',
> + 'org.libvirt.StorageVol.xml',
> + install_dir: dbus_interfaces_dir,
> +)
> +
> +subdir('session')
> +subdir('system')
> diff --git a/data/session/meson.build b/data/session/meson.build
> new file mode 100644
> index 0000000..240fcef
> --- /dev/null
> +++ b/data/session/meson.build
> @@ -0,0 +1,6 @@
> +configure_file(
> + configuration: conf,
> + input: 'org.libvirt.service.in',
> + output: 'org.libvirt.service',
> + install_dir: dbus_services_dir,
> +)
> diff --git a/data/system/meson.build b/data/system/meson.build
> new file mode 100644
> index 0000000..74f1949
> --- /dev/null
> +++ b/data/system/meson.build
> @@ -0,0 +1,18 @@
> +configure_file(
> + configuration: conf,
> + input: 'org.libvirt.service.in',
> + output: 'org.libvirt.service',
> + install_dir: dbus_system_services_dir,
> +)
> +configure_file(
> + configuration: conf,
> + input: 'org.libvirt.conf.in',
> + output: 'org.libvirt.conf',
> + install_dir: dbus_system_policies_dir,
> +)
> +configure_file(
> + configuration: conf,
> + input: 'libvirt-dbus.rules.in',
> + output: 'libvirt-dbus.rules',
> + install_dir: polkit_rules_dir,
> +)
> diff --git a/docs/Makefile.am b/docs/Makefile.am
> deleted file mode 100644
> index fe8ca1c..0000000
> --- a/docs/Makefile.am
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -POD2MAN = pod2man -c "Virtualization Support" -r "$(PACKAGE)-$(VERSION)"
> -
> -PODFILES = \
> - libvirt-dbus.pod \
> - $(NULL)
> -
> -%.8: %.pod
> - $(AM_V_GEN)$(POD2MAN) -s 8 $< $@ \
> - && if grep 'POD ERROR' $@; then rm $@; exit 1; fi
> -
> -man8_MANS = \
> - libvirt-dbus.8 \
> - $(NULL)
> -
> -EXTRA_DIST = \
> - $(PODFILES) \
> - $(NULL)
> -
> -CLEANFILES = \
> - $(man8_MANS) \
> - $(NULL)
> diff --git a/docs/meson.build b/docs/meson.build
> new file mode 100644
> index 0000000..e62e71a
> --- /dev/null
> +++ b/docs/meson.build
> @@ -0,0 +1,8 @@
> +prog_pod2man = find_program('pod2man')
> +
> +configure_file(
> + command: [prog_pod2man.path(), '-s 8', '@INPUT@', '@OUTPUT@'],
> + input: 'libvirt-dbus.pod',
> + output: 'libvirt-dbus.8',
> + install_dir: join_paths (get_option('mandir'), 'man8'),
> +)
> diff --git a/libvirt-dbus.spec.in b/libvirt-dbus.spec.in
> index 626e2da..3425e9e 100644
> --- a/libvirt-dbus.spec.in
> +++ b/libvirt-dbus.spec.in
> @@ -1,5 +1,6 @@
> # -*- rpm-spec -*-
>
> +%global meson_version @MESON_VERSION@
> %global glib2_version @GLIB2_REQUIRED@
> %global libvirt_version @LIBVIRT_REQUIRED@
> %global libvirt_glib_version @LIBVIRT_GLIB_REQUIRED@
> @@ -14,7 +15,7 @@ URL: https://libvirt.org/
> Source0: https://libvirt.org/sources/dbus/%{name}-%{version}.tar.xz
>
> BuildRequires: gcc
> -BuildRequires: libtool
> +BuildRequires: meson >= %{meson_version}
> BuildRequires: glib2-devel >= %{glib2_version}
> BuildRequires: libvirt-devel >= %{libvirt_version}
> BuildRequires: libvirt-glib-devel >= %{libvirt_glib_version}
> @@ -35,11 +36,11 @@ This package provides D-Bus API for libvirt
> %autosetup
>
> %build
> -%configure
> -%make_build
> +%meson
> +%meson_build
>
> %install
> -%make_install
> +%meson_install
>
> %pre
> getent group %{system_user} >/dev/null || groupadd -r %{system_user}
> diff --git a/m4/manywarnings.m4 b/m4/manywarnings.m4
> deleted file mode 100644
> index 0f06ade..0000000
> --- a/m4/manywarnings.m4
> +++ /dev/null
> @@ -1,276 +0,0 @@
> -# manywarnings.m4 serial 8
> -dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
> -dnl This file is free software; the Free Software Foundation
> -dnl gives unlimited permission to copy and/or distribute it,
> -dnl with or without modifications, as long as this notice is preserved.
> -
> -dnl From Simon Josefsson
> -
> -# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
> -# --------------------------------------------------
> -# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
> -# Elements separated by whitespace. In set logic terms, the function
> -# does OUTVAR = LISTVAR \ REMOVEVAR.
> -AC_DEFUN([gl_MANYWARN_COMPLEMENT],
> -[
> - gl_warn_set=
> - set x $2; shift
> - for gl_warn_item
> - do
> - case " $3 " in
> - *" $gl_warn_item "*)
> - ;;
> - *)
> - gl_warn_set="$gl_warn_set $gl_warn_item"
> - ;;
> - esac
> - done
> - $1=$gl_warn_set
> -])
> -
> -# gl_MANYWARN_ALL_GCC(VARIABLE)
> -# -----------------------------
> -# Add all documented GCC warning parameters to variable VARIABLE.
> -# Note that you need to test them using gl_WARN_ADD if you want to
> -# make sure your gcc understands it.
> -AC_DEFUN([gl_MANYWARN_ALL_GCC],
> -[
> - dnl First, check for some issues that only occur when combining multiple
> - dnl gcc warning categories.
> - AC_REQUIRE([AC_PROG_CC])
> - if test -n "$GCC"; then
> -
> - dnl Check if -W -Werror -Wno-missing-field-initializers is supported
> - dnl with the current $CC $CFLAGS $CPPFLAGS.
> - AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
> - AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
> - gl_save_CFLAGS="$CFLAGS"
> - CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
> - AC_COMPILE_IFELSE(
> - [AC_LANG_PROGRAM([[]], [[]])],
> - [gl_cv_cc_nomfi_supported=yes],
> - [gl_cv_cc_nomfi_supported=no])
> - CFLAGS="$gl_save_CFLAGS"])
> - AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
> -
> - if test "$gl_cv_cc_nomfi_supported" = yes; then
> - dnl Now check whether -Wno-missing-field-initializers is needed
> - dnl for the { 0, } construct.
> - AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
> - AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
> - gl_save_CFLAGS="$CFLAGS"
> - CFLAGS="$CFLAGS -W -Werror"
> - AC_COMPILE_IFELSE(
> - [AC_LANG_PROGRAM(
> - [[int f (void)
> - {
> - typedef struct { int a; int b; } s_t;
> - s_t s1 = { 0, };
> - return s1.b;
> - }
> - ]],
> - [[]])],
> - [gl_cv_cc_nomfi_needed=no],
> - [gl_cv_cc_nomfi_needed=yes])
> - CFLAGS="$gl_save_CFLAGS"
> - ])
> - AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
> - fi
> -
> - dnl Next, check if -Werror -Wuninitialized is useful with the
> - dnl user's choice of $CFLAGS; some versions of gcc warn that it
> - dnl has no effect if -O is not also used
> - AC_MSG_CHECKING([whether -Wuninitialized is supported])
> - AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
> - gl_save_CFLAGS="$CFLAGS"
> - CFLAGS="$CFLAGS -Werror -Wuninitialized"
> - AC_COMPILE_IFELSE(
> - [AC_LANG_PROGRAM([[]], [[]])],
> - [gl_cv_cc_uninitialized_supported=yes],
> - [gl_cv_cc_uninitialized_supported=no])
> - CFLAGS="$gl_save_CFLAGS"])
> - AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
> -
> - fi
> -
> - # List all gcc warning categories.
> - # To compare this list to your installed GCC's, run this Bash command:
> - #
> - # comm -3 \
> - # <(sed -n 's/^ *\(-[^ ]*\) .*/\1/p' manywarnings.m4 | sort) \
> - # <(gcc --help=warnings | sed -n 's/^ \(-[^ ]*\) .*/\1/p' | sort |
> - # grep -v -x -f <(
> - # awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec))
> -
> - gl_manywarn_set=
> - for gl_manywarn_item in \
> - -fno-common \
> - -W \
> - -Wabi \
> - -Waddress \
> - -Waggressive-loop-optimizations \
> - -Wall \
> - -Wattributes \
> - -Wbad-function-cast \
> - -Wbool-compare \
> - -Wbuiltin-macro-redefined \
> - -Wcast-align \
> - -Wchar-subscripts \
> - -Wchkp \
> - -Wclobbered \
> - -Wcomment \
> - -Wcomments \
> - -Wcoverage-mismatch \
> - -Wcpp \
> - -Wdate-time \
> - -Wdeprecated \
> - -Wdeprecated-declarations \
> - -Wdesignated-init \
> - -Wdisabled-optimization \
> - -Wdiscarded-array-qualifiers \
> - -Wdiscarded-qualifiers \
> - -Wdiv-by-zero \
> - -Wdouble-promotion \
> - -Wduplicated-cond \
> - -Wempty-body \
> - -Wendif-labels \
> - -Wenum-compare \
> - -Wextra \
> - -Wformat-contains-nul \
> - -Wformat-extra-args \
> - -Wformat-nonliteral \
> - -Wformat-security \
> - -Wformat-signedness \
> - -Wformat-y2k \
> - -Wformat-zero-length \
> - -Wframe-address \
> - -Wfree-nonheap-object \
> - -Whsa \
> - -Wignored-attributes \
> - -Wignored-qualifiers \
> - -Wimplicit \
> - -Wimplicit-function-declaration \
> - -Wimplicit-int \
> - -Wincompatible-pointer-types \
> - -Winit-self \
> - -Winline \
> - -Wint-conversion \
> - -Wint-to-pointer-cast \
> - -Winvalid-memory-model \
> - -Winvalid-pch \
> - -Wjump-misses-init \
> - -Wlogical-not-parentheses \
> - -Wlogical-op \
> - -Wmain \
> - -Wmaybe-uninitialized \
> - -Wmemset-transposed-args \
> - -Wmisleading-indentation \
> - -Wmissing-braces \
> - -Wmissing-declarations \
> - -Wmissing-field-initializers \
> - -Wmissing-include-dirs \
> - -Wmissing-parameter-type \
> - -Wmissing-prototypes \
> - -Wmultichar \
> - -Wnarrowing \
> - -Wnested-externs \
> - -Wnonnull \
> - -Wnonnull-compare \
> - -Wnull-dereference \
> - -Wodr \
> - -Wold-style-declaration \
> - -Wold-style-definition \
> - -Wopenmp-simd \
> - -Woverflow \
> - -Woverlength-strings \
> - -Woverride-init \
> - -Wpacked \
> - -Wpacked-bitfield-compat \
> - -Wparentheses \
> - -Wpointer-arith \
> - -Wpointer-sign \
> - -Wpointer-to-int-cast \
> - -Wpragmas \
> - -Wreturn-local-addr \
> - -Wreturn-type \
> - -Wscalar-storage-order \
> - -Wsequence-point \
> - -Wshadow \
> - -Wshift-count-negative \
> - -Wshift-count-overflow \
> - -Wshift-negative-value \
> - -Wsizeof-array-argument \
> - -Wsizeof-pointer-memaccess \
> - -Wstack-protector \
> - -Wstrict-aliasing \
> - -Wstrict-overflow \
> - -Wstrict-prototypes \
> - -Wsuggest-attribute=const \
> - -Wsuggest-attribute=format \
> - -Wsuggest-attribute=noreturn \
> - -Wsuggest-attribute=pure \
> - -Wsuggest-final-methods \
> - -Wsuggest-final-types \
> - -Wswitch \
> - -Wswitch-bool \
> - -Wswitch-default \
> - -Wsync-nand \
> - -Wsystem-headers \
> - -Wtautological-compare \
> - -Wtrampolines \
> - -Wtrigraphs \
> - -Wtype-limits \
> - -Wuninitialized \
> - -Wunknown-pragmas \
> - -Wunsafe-loop-optimizations \
> - -Wunused \
> - -Wunused-but-set-parameter \
> - -Wunused-but-set-variable \
> - -Wunused-function \
> - -Wunused-label \
> - -Wunused-local-typedefs \
> - -Wunused-macros \
> - -Wunused-parameter \
> - -Wunused-result \
> - -Wunused-value \
> - -Wunused-variable \
> - -Wvarargs \
> - -Wvariadic-macros \
> - -Wvector-operation-performance \
> - -Wvla \
> - -Wvolatile-register-var \
> - -Wwrite-strings \
> - \
> - ; do
> - gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
> - done
> -
> - # gcc --help=warnings outputs an unusual form for these options; list
> - # them here so that the above 'comm' command doesn't report a false match.
> - gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
> - gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
> - gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
> - gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
> -
> - # These are needed for older GCC versions.
> - if test -n "$GCC"; then
> - case `($CC --version) 2>/dev/null` in
> - 'gcc (GCC) '[[0-3]].* | \
> - 'gcc (GCC) '4.[[0-7]].*)
> - gl_manywarn_set="$gl_manywarn_set -fdiagnostics-show-option"
> - gl_manywarn_set="$gl_manywarn_set -funit-at-a-time"
> - ;;
> - esac
> - fi
> -
> - # Disable specific options as needed.
> - if test "$gl_cv_cc_nomfi_needed" = yes; then
> - gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
> - fi
> -
> - if test "$gl_cv_cc_uninitialized_supported" = no; then
> - gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
> - fi
> -
> - $1=$gl_manywarn_set
> -])
> diff --git a/m4/virt-arg.m4 b/m4/virt-arg.m4
> deleted file mode 100644
> index d626d72..0000000
> --- a/m4/virt-arg.m4
> +++ /dev/null
> @@ -1,154 +0,0 @@
> -dnl
> -dnl virt-arg.m4: Helper macros for adding configure arguments
> -dnl
> -dnl Copyright (C) 2012-2014 Red Hat, Inc.
> -dnl
> -dnl This library is free software; you can redistribute it and/or
> -dnl modify it under the terms of the GNU Lesser General Public
> -dnl License as published by the Free Software Foundation; either
> -dnl version 2.1 of the License, or (at your option) any later version.
> -dnl
> -dnl This library is distributed in the hope that it will be useful,
> -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
> -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> -dnl Lesser General Public License for more details.
> -dnl
> -dnl You should have received a copy of the GNU Lesser General Public
> -dnl License along with this library. If not, see
> -dnl <http://www.gnu.org/licenses/>.
> -dnl
> -
> -
> -dnl
> -dnl To be used instead of AC_ARG_WITH
> -dnl
> -dnl See LIBVIRT_ARG_WITH_FEATURE if the argument you're adding is going to
> -dnl be used for switching a feature on and off.
> -dnl
> -dnl LIBVIRT_ARG_WITH([CHECK_NAME], [HELP_DESC], [DEFAULT_ACTION])
> -dnl
> -dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
> -dnl HELP_DESC: Description that will appear in configure --help
> -dnl DEFAULT_ACTION: Default configure action
> -dnl
> -dnl LIBVIRT_ARG_WITH([PACKAGER], [Extra packager name], [no])
> -dnl LIBVIRT_ARG_WITH([HTML_DIR], [path to base html directory], [$(datadir)/doc])
> -dnl
> -AC_DEFUN([LIBVIRT_ARG_WITH], [
> - m4_pushdef([check_name], [$1])
> - m4_pushdef([help_desc], [[$2]])
> - m4_pushdef([default_action], [$3])
> -
> - m4_pushdef([check_name_lc], m4_tolower(check_name))
> - m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
> -
> - m4_pushdef([arg_var], [with-]check_name_dash)
> - m4_pushdef([with_var], [with_]check_name_lc)
> -
> - m4_divert_text([DEFAULTS], [with_var][[=]][default_action])
> - AC_ARG_WITH([check_name_lc],
> - [AS_HELP_STRING([[--]arg_var],
> - ]m4_dquote(help_desc)[[ @<:@default=]]m4_dquote(default_action)[[@:>@])])
> -
> - m4_popdef([with_var])
> - m4_popdef([arg_var])
> -
> - m4_popdef([check_name_dash])
> - m4_popdef([check_name_lc])
> -
> - m4_popdef([default_action])
> - m4_popdef([help_desc])
> - m4_popdef([check_name])
> -])
> -
> -dnl
> -dnl To be used instead of AC_ARG_WITH
> -dnl
> -dnl The difference between LIBVIRT_ARG_WITH and this macro is that the former
> -dnl is mostly an enhanced drop-in replacement for AC_ARG_WITH, whereas the
> -dnl latter is tailored for adding an argument that is going to be used to
> -dnl switch a feature on and off: as a consequence, it optionally supports
> -dnl specifying the minimum version for libraries the feature depends on and
> -dnl automatically builds a suitable description from the feature name.
> -dnl
> -dnl LIBVIRT_ARG_WITH_FEATURE([CHECK_NAME], [HELP_NAME], [DEFAULT_ACTION], [MIN_VERSION])
> -dnl
> -dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
> -dnl HELP_NAME: Name that will appear in configure --help
> -dnl DEFAULT_ACTION: Default configure action
> -dnl MIN_VERSION: Specify minimal version that will be added to
> -dnl configure --help (optional)
> -dnl
> -dnl LIBVIRT_ARG_WITH_FEATURE([SELINUX], [SeLinux], [check])
> -dnl LIBVIRT_ARG_WITH_FEATURE([GLUSTERFS], [glusterfs], [check], [3.4.1])
> -dnl
> -AC_DEFUN([LIBVIRT_ARG_WITH_FEATURE], [
> - m4_pushdef([check_name], [$1])
> - m4_pushdef([help_name], [[$2]])
> - m4_pushdef([default_action], [$3])
> - m4_pushdef([min_version], [$4])
> -
> - m4_pushdef([check_name_lc], m4_tolower(check_name))
> - m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
> -
> - m4_pushdef([arg_var], [with-]check_name_dash)
> - m4_pushdef([with_var], [with_]check_name_lc)
> -
> - m4_pushdef([version_text], m4_ifnblank(min_version, [[ (>= ]]min_version[[)]]))
> -
> - m4_divert_text([DEFAULTS], [with_var][[=]][default_action])
> - AC_ARG_WITH([check_name_lc],
> - [AS_HELP_STRING([[--]arg_var],
> - [with ]]m4_dquote(help_name)m4_dquote(version_text)[[ support @<:@default=]]m4_dquote(default_action)[[@:>@])])
> -
> - m4_popdef([version_text])
> -
> - m4_popdef([with_var])
> - m4_popdef([arg_var])
> -
> - m4_popdef([check_name_dash])
> - m4_popdef([check_name_lc])
> -
> - m4_popdef([min_version])
> - m4_popdef([default_action])
> - m4_popdef([help_name])
> - m4_popdef([check_name])
> -])
> -
> -dnl
> -dnl To be used instead of AC_ARG_ENABLE
> -dnl
> -dnl LIBVIRT_ARG_ENABLE([CHECK_NAME], [HELP_DESC], [DEFAULT_ACTION])
> -dnl
> -dnl CHECK_NAME: Suffix/prefix used for variables/flags, in uppercase.
> -dnl HELP_DESC: Description that will appear in configure --help
> -dnl DEFAULT_ACTION: Default configure action
> -dnl
> -dnl LIBVIRT_ARG_ENABLE([DEBUG], [enable debugging output], [yes])
> -dnl
> -AC_DEFUN([LIBVIRT_ARG_ENABLE], [
> - m4_pushdef([check_name], [$1])
> - m4_pushdef([help_desc], [[$2]])
> - m4_pushdef([default_action], [$3])
> -
> - m4_pushdef([check_name_lc], m4_tolower(check_name))
> - m4_pushdef([check_name_dash], m4_translit(check_name_lc, [_], [-]))
> -
> - m4_pushdef([arg_var], [enable-]check_name_dash)
> - m4_pushdef([enable_var], [enable_]check_name_lc)
> -
> - m4_divert_text([DEFAULTS], [enable_var][[=]][default_action])
> - AC_ARG_ENABLE([check_name_lc],
> - [AS_HELP_STRING([[--]arg_var],
> - ]m4_dquote(help_desc)[[ @<:@default=]]m4_dquote(default_action)[[@:>@])])
> -
> - m4_popdef([enable_var])
> - m4_popdef([arg_var])
> -
> - m4_popdef([check_name_dash])
> - m4_popdef([check_name_lc])
> -
> - m4_popdef([default_action])
> - m4_popdef([help_desc])
> - m4_popdef([check_name])
> -])
> diff --git a/m4/virt-compile-pie.m4 b/m4/virt-compile-pie.m4
> deleted file mode 100644
> index a2df38e..0000000
> --- a/m4/virt-compile-pie.m4
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -dnl
> -dnl Check for support for position independent executables
> -dnl
> -dnl Copyright (C) 2013 Red Hat, Inc.
> -dnl
> -dnl This library is free software; you can redistribute it and/or
> -dnl modify it under the terms of the GNU Lesser General Public
> -dnl License as published by the Free Software Foundation; either
> -dnl version 2.1 of the License, or (at your option) any later version.
> -dnl
> -dnl This library is distributed in the hope that it will be useful,
> -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
> -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> -dnl Lesser General Public License for more details.
> -dnl
> -dnl You should have received a copy of the GNU Lesser General Public
> -dnl License along with this library. If not, see
> -dnl <http://www.gnu.org/licenses/>.
> -dnl
> -
> -AC_DEFUN([LIBVIRT_COMPILE_PIE],[
> - PIE_CFLAGS=
> - PIE_LDFLAGS=
> - case "$host" in
> - *-*-mingw* | *-*-msvc* | *-*-cygwin* )
> - ;; dnl All code is position independent on Win32 target
> - *)
> - gl_COMPILER_OPTION_IF([-fPIE -DPIE -pie], [
> - PIE_CFLAGS="-fPIE -DPIE"
> - PIE_LDFLAGS="-pie"
> - ])
> - esac
> - AC_SUBST([PIE_CFLAGS])
> - AC_SUBST([PIE_LDFLAGS])
> -])
> diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
> deleted file mode 100644
> index 6ece136..0000000
> --- a/m4/virt-compile-warnings.m4
> +++ /dev/null
> @@ -1,203 +0,0 @@
> -dnl
> -dnl Enable all known GCC compiler warnings, except for those
> -dnl we can't yet cope with
> -dnl
> -AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
> - dnl ******************************
> - dnl More compiler warnings
> - dnl ******************************
> -
> - LIBVIRT_ARG_ENABLE([WERROR], [Use -Werror (if supported)], [check])
> - if test "$enable_werror" = "check"; then
> - if test -d $srcdir/.git; then
> - is_git_version=true
> - enable_werror=yes
> - else
> - enable_werror=no
> - fi
> - fi
> -
> - # List of warnings that are not relevant / wanted
> -
> - # Don't care about C++ compiler compat
> - dontwarn="$dontwarn -Wc++-compat"
> - dontwarn="$dontwarn -Wabi"
> - dontwarn="$dontwarn -Wdeprecated"
> - # Don't care about ancient C standard compat
> - dontwarn="$dontwarn -Wtraditional"
> - # Don't care about ancient C standard compat
> - dontwarn="$dontwarn -Wtraditional-conversion"
> - # Ignore warnings in /usr/include
> - dontwarn="$dontwarn -Wsystem-headers"
> - # Happy for compiler to add struct padding
> - dontwarn="$dontwarn -Wpadded"
> - # GCC very confused with -O2
> - dontwarn="$dontwarn -Wunreachable-code"
> - # Too many to deal with
> - dontwarn="$dontwarn -Wconversion"
> - # Too many to deal with
> - dontwarn="$dontwarn -Wsign-conversion"
> - # We need to use long long in many places
> - dontwarn="$dontwarn -Wlong-long"
> - # We allow manual list of all enum cases without default:
> - dontwarn="$dontwarn -Wswitch-default"
> - # We allow optional default: instead of listing all enum values
> - dontwarn="$dontwarn -Wswitch-enum"
> - # Not a problem since we don't use -fstrict-overflow
> - dontwarn="$dontwarn -Wstrict-overflow"
> - # Not a problem since we don't use -funsafe-loop-optimizations
> - dontwarn="$dontwarn -Wunsafe-loop-optimizations"
> - # gcc 4.4.6 complains this is C++ only; gcc 4.7.0 implies this from -Wall
> - dontwarn="$dontwarn -Wenum-compare"
> - # gcc 5.1 -Wformat-signedness mishandles enums, not ready for prime time
> - dontwarn="$dontwarn -Wformat-signedness"
> - # Several conditionals expand the same on both branches
> - # depending on the particular platform/architecture
> - dontwarn="$dontwarn -Wduplicated-branches"
> - # > This warning does not generally indicate that there is anything wrong
> - # > with your code; it merely indicates that GCC's optimizers are unable
> - # > to handle the code effectively.
> - # Source: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
> - dontwarn="$dontwarn -Wdisabled-optimization"
> -
> - # gcc 4.2 treats attribute(format) as an implicit attribute(nonnull),
> - # which triggers spurious warnings for our usage
> - AC_CACHE_CHECK([whether the C compiler's -Wformat allows NULL strings],
> - [lv_cv_gcc_wformat_null_works], [
> - save_CFLAGS=$CFLAGS
> - CFLAGS='-Wunknown-pragmas -Werror -Wformat'
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - #include <stddef.h>
> - static __attribute__ ((__format__ (__printf__, 1, 2))) int
> - foo (const char *fmt, ...) { return !fmt; }
> - ]], [[
> - return foo(NULL);
> - ]])],
> - [lv_cv_gcc_wformat_null_works=yes],
> - [lv_cv_gcc_wformat_null_works=no])
> - CFLAGS=$save_CFLAGS])
> -
> - AC_CACHE_CHECK([whether gcc gives bogus warnings for -Wlogical-op],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken], [
> - save_CFLAGS="$CFLAGS"
> - CFLAGS="-O2 -Wlogical-op -Werror"
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - #define TEST1 1
> - #define TEST2 TEST1
> - ]], [[
> - int test = 0;
> - return test == TEST1 || test == TEST2;]])],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken=no],
> - [lv_cv_gcc_wlogical_op_equal_expr_broken=yes])
> - CFLAGS="$save_CFLAGS"])
> -
> - AC_CACHE_CHECK([whether clang gives bogus warnings for -Wdouble-promotion],
> - [lv_cv_clang_double_promotion_broken], [
> - save_CFLAGS="$CFLAGS"
> - CFLAGS="-O2 -Wdouble-promotion -Werror"
> - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
> - #include <math.h>
> - ]], [[
> - float f = 0.0;
> - return isnan(f);]])],
> - [lv_cv_clang_double_promotion_broken=no],
> - [lv_cv_clang_double_promotion_broken=yes])
> - CFLAGS="$save_CFLAGS"])
> -
> - if test "$lv_cv_clang_double_promotion_broken" = "yes";
> - then
> - dontwarn="$dontwarn -Wdouble-promotion"
> - fi
> -
> - # Get all possible GCC warnings
> - gl_MANYWARN_ALL_GCC([maybewarn])
> -
> - # Remove the ones we don't want, blacklisted earlier
> - gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
> -
> - # GNULIB expects this to be part of -Wc++-compat, but we turn
> - # that one off, so we need to manually enable this again
> - wantwarn="$wantwarn -Wjump-misses-init"
> -
> - # -Wformat enables this by default, and we should keep it,
> - # but need to rewrite various areas of code first
> - wantwarn="$wantwarn -Wno-format-truncation"
> -
> - # This should be < 256 really. Currently we're down to 4096,
> - # but using 1024 bytes sized buffers (mostly for virStrerror)
> - # stops us from going down further
> - gl_WARN_ADD([-Wframe-larger-than=4096], [STRICT_FRAME_LIMIT_CFLAGS])
> - gl_WARN_ADD([-Wframe-larger-than=25600], [RELAXED_FRAME_LIMIT_CFLAGS])
> -
> - # Extra special flags
> - dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
> - dnl on Mingw32, but fails when actually used
> - case $host in
> - aarch64-*-*)
> - dnl "error: -fstack-protector not supported for this target [-Werror]"
> - ;;
> - *-*-linux*)
> - dnl Prefer -fstack-protector-strong if it's available.
> - dnl There doesn't seem to be great overhead in adding
> - dnl -fstack-protector-all instead of -fstack-protector.
> - dnl
> - dnl We also don't need ssp-buffer-size with -all or -strong,
> - dnl since functions are protected regardless of buffer size.
> - dnl wantwarn="$wantwarn --param=ssp-buffer-size=4"
> - wantwarn="$wantwarn -fstack-protector-strong"
> - ;;
> - *-*-freebsd*)
> - dnl FreeBSD ships old gcc 4.2.1 which doesn't handle
> - dnl -fstack-protector-all well
> - wantwarn="$wantwarn -fstack-protector"
> -
> - wantwarn="$wantwarn -Wno-unused-command-line-argument"
> - ;;
> - esac
> - wantwarn="$wantwarn -fexceptions"
> - wantwarn="$wantwarn -fasynchronous-unwind-tables"
> -
> - # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
> - # fire even without -O.
> - wantwarn="$wantwarn -fipa-pure-const"
> - # We do "bad" function cast to define glib auto cleanup functions
> - wantwarn="$wantwarn -Wno-cast-function-type"
> -
> - if test "$enable_werror" = "yes"
> - then
> - wantwarn="$wantwarn -Werror"
> - fi
> -
> - # Check for $CC support of each warning
> - for w in $wantwarn; do
> - gl_WARN_ADD([$w])
> - done
> -
> - case $host in
> - *-*-linux*)
> - dnl Fall back to -fstack-protector-all if -strong is not available
> - case $WARN_CFLAGS in
> - *-fstack-protector-strong*)
> - ;;
> - *)
> - gl_WARN_ADD([-fstack-protector-all])
> - ;;
> - esac
> - ;;
> - esac
> -
> - case $WARN_CFLAGS in
> - *-Wsuggest-attribute=format*)
> - AC_DEFINE([HAVE_SUGGEST_ATTRIBUTE_FORMAT], [1], [Whether -Wsuggest-attribute=format works])
> - ;;
> - esac
> -
> - # Silence certain warnings in gnulib, and use improved glibc headers
> - AH_VERBATIM([FORTIFY_SOURCE],
> - [/* Enable compile-time and run-time bounds-checking, and some warnings,
> - without upsetting newer glibc. */
> - #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
> - # define _FORTIFY_SOURCE 2
> - #endif
> - ])
> -])
> diff --git a/m4/virt-linker-relro.m4 b/m4/virt-linker-relro.m4
> deleted file mode 100644
> index 7669b23..0000000
> --- a/m4/virt-linker-relro.m4
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -dnl
> -dnl Check for -z now and -z relro linker flags
> -dnl
> -dnl Copyright (C) 2013 Red Hat, Inc.
> -dnl
> -dnl This library is free software; you can redistribute it and/or
> -dnl modify it under the terms of the GNU Lesser General Public
> -dnl License as published by the Free Software Foundation; either
> -dnl version 2.1 of the License, or (at your option) any later version.
> -dnl
> -dnl This library is distributed in the hope that it will be useful,
> -dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
> -dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> -dnl Lesser General Public License for more details.
> -dnl
> -dnl You should have received a copy of the GNU Lesser General Public
> -dnl License along with this library. If not, see
> -dnl <http://www.gnu.org/licenses/>.
> -dnl
> -
> -AC_DEFUN([LIBVIRT_LINKER_RELRO],[
> - AC_MSG_CHECKING([for how to force completely read-only GOT table])
> -
> - RELRO_LDFLAGS=
> - ld_help=`ld --help 2>&1`
> - case $ld_help in
> - *"-z relro"*) RELRO_LDFLAGS="-Wl,-z -Wl,relro" ;;
> - esac
> - case $ld_help in
> - *"-z now"*) RELRO_LDFLAGS="$RELRO_LDFLAGS -Wl,-z -Wl,now" ;;
> - esac
> - AC_SUBST([RELRO_LDFLAGS])
> -
> - AC_MSG_RESULT([$RELRO_LDFLAGS])
> -])
> diff --git a/m4/warnings.m4 b/m4/warnings.m4
> deleted file mode 100644
> index e697174..0000000
> --- a/m4/warnings.m4
> +++ /dev/null
> @@ -1,79 +0,0 @@
> -# warnings.m4 serial 11
> -dnl Copyright (C) 2008-2017 Free Software Foundation, Inc.
> -dnl This file is free software; the Free Software Foundation
> -dnl gives unlimited permission to copy and/or distribute it,
> -dnl with or without modifications, as long as this notice is preserved.
> -
> -dnl From Simon Josefsson
> -
> -# gl_AS_VAR_APPEND(VAR, VALUE)
> -# ----------------------------
> -# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
> -m4_ifdef([AS_VAR_APPEND],
> -[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
> -[m4_define([gl_AS_VAR_APPEND],
> -[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
> -
> -
> -# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
> -# [PROGRAM = AC_LANG_PROGRAM()])
> -# -----------------------------------------------------------------
> -# Check if the compiler supports OPTION when compiling PROGRAM.
> -#
> -# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
> -# 2.64 or newer.
> -AC_DEFUN([gl_COMPILER_OPTION_IF],
> -[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
> -AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
> -AS_LITERAL_IF([$1],
> - [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
> - [gl_positive="$1"
> -case $gl_positive in
> - -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
> -esac
> -m4_pushdef([gl_Positive], [$gl_positive])])dnl
> -AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
> - gl_save_compiler_FLAGS="$gl_Flags"
> - gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
> - [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
> - AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
> - [AS_VAR_SET(gl_Warn, [yes])],
> - [AS_VAR_SET(gl_Warn, [no])])
> - gl_Flags="$gl_save_compiler_FLAGS"
> -])
> -AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
> -m4_popdef([gl_Positive])dnl
> -AS_VAR_POPDEF([gl_Flags])dnl
> -AS_VAR_POPDEF([gl_Warn])dnl
> -])
> -
> -# gl_UNKNOWN_WARNINGS_ARE_ERRORS
> -# ------------------------------
> -# Clang doesn't complain about unknown warning options unless one also
> -# specifies -Wunknown-warning-option -Werror. Detect this.
> -AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
> -[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
> - [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
> - [gl_unknown_warnings_are_errors=])])
> -
> -# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS],
> -# [PROGRAM = AC_LANG_PROGRAM()])
> -# ---------------------------------------------
> -# Adds parameter to WARN_CFLAGS if the compiler supports it when
> -# compiling PROGRAM. For example, gl_WARN_ADD([-Wparentheses]).
> -#
> -# If VARIABLE is a variable name, AC_SUBST it.
> -AC_DEFUN([gl_WARN_ADD],
> -[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS])
> -gl_COMPILER_OPTION_IF([$1],
> - [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])],
> - [],
> - [$3])
> -m4_ifval([$2],
> - [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
> - [AC_SUBST([WARN_CFLAGS])])dnl
> -])
> -
> -# Local Variables:
> -# mode: autoconf
> -# End:
> diff --git a/meson.build b/meson.build
> new file mode 100644
> index 0000000..30eeebe
> --- /dev/null
> +++ b/meson.build
> @@ -0,0 +1,279 @@
> +project(
> + 'libvirt-dbus', 'c',
> + version: '1.4.0',
> + license: 'LGPLv2+',
> + meson_version: '>= 0.49.0',
In case you're really going for 0.50.0, this needs to be bumped ...
> + default_options: [
> + 'buildtype=debugoptimized',
> + 'c_std=gnu99',
> + ],
> +)
> +
> +
> +conf = configuration_data()
> +conf.set('MESON_VERSION', '0.49.0')
... and this one as well ...
> +conf.set('PACKAGE', meson.project_name())
> +conf.set('VERSION', meson.project_version())
> +conf.set('build_root', meson.build_root())
> +conf.set('sbindir', get_option('sbindir'))
> +conf.set('source_root', meson.source_root())
> +
> +# Dependencies
> +
> +glib2_version = '2.44.0'
> +libvirt_version = '3.0.0'
> +libvirt_glib_version = '0.0.7'
> +
> +dep_gio_unix = dependency('gio-unix-2.0', version: '>=' + glib2_version)
> +dep_glib = dependency('glib-2.0', version: '>=' + glib2_version)
> +dep_libvirt = dependency('libvirt', version: '>=' + libvirt_version)
> +dep_libvirt_glib = dependency('libvirt-glib-1.0', version: '>=' + libvirt_glib_version)
> +
> +conf.set('GLIB2_REQUIRED', glib2_version)
> +conf.set('LIBVIRT_REQUIRED', libvirt_version)
> +conf.set('LIBVIRT_GLIB_REQUIRED', libvirt_glib_version)
> +
> +git = run_command('test', '-d', '.git').returncode() == 0
> +
> +
> +# Configure options
> +
> +conf.set('SYSTEM_USER', get_option('system_user'))
> +
> +opt_dirs = [
> + 'dbus_interfaces',
> + 'dbus_services',
> + 'dbus_system_services',
> + 'dbus_system_policies',
> + 'polkit_rules',
> +]
> +
> +foreach opt_dir : opt_dirs
> + value = get_option(opt_dir)
> + varname = '@0 at _dir'.format(opt_dir)
> + if opt_dir.startswith('/')
> + set_variable(varname, value)
> + else
> + set_variable(varname, join_paths(get_option('datadir'), value))
> + endif
> +endforeach
> +
> +
> +# Compile flags
> +
> +common_flags = [
> + '-DVIRT_DBUS_INTERFACES_DIR="@0@"'.format(dbus_interfaces_dir),
> +]
> +
> +cc_flags = [
> + '-W',
> + '-Waddress',
> + '-Waggressive-loop-optimizations',
> + '-Wall',
> + '-Warray-bounds=2',
> + '-Wattributes',
> + '-Wbad-function-cast',
> + '-Wbool-compare',
> + '-Wbuiltin-macro-redefined',
> + '-Wcast-align',
> + '-Wchar-subscripts',
> + '-Wclobbered',
> + '-Wcomment',
> + '-Wcomments',
> + '-Wcoverage-mismatch',
> + '-Wcpp',
> + '-Wdate-time',
> + '-Wdeprecated-declarations',
> + '-Wdesignated-init',
> + '-Wdiscarded-array-qualifiers',
> + '-Wdiscarded-qualifiers',
> + '-Wdiv-by-zero',
> + '-Wdouble-promotion',
> + '-Wduplicated-cond',
> + '-Wempty-body',
> + '-Wendif-labels',
> + '-Wextra',
> + '-Wformat',
> + '-Wformat-contains-nul',
> + '-Wformat-extra-args',
> + '-Wformat-nonliteral',
> + '-Wformat-security',
> + '-Wformat-y2k',
> + '-Wformat-zero-length',
> + '-Wframe-address',
> + '-Wframe-larger-than=1024',
> + '-Wfree-nonheap-object',
> + '-Whsa',
> + '-Wignored-attributes',
> + '-Wignored-qualifiers',
> + '-Wimplicit',
> + '-Wimplicit-function-declaration',
> + '-Wimplicit-int',
> + '-Wincompatible-pointer-types',
> + '-Winit-self',
> + '-Winline',
> + '-Wint-conversion',
> + '-Wint-to-pointer-cast',
> + '-Winvalid-memory-model',
> + '-Winvalid-pch',
> + '-Wjump-misses-init',
> + '-Wlogical-not-parentheses',
> + '-Wlogical-op',
> + '-Wmain',
> + '-Wmaybe-uninitialized',
> + '-Wmemset-transposed-args',
> + '-Wmisleading-indentation',
> + '-Wmissing-braces',
> + '-Wmissing-declarations',
> + '-Wmissing-field-initializers',
> + '-Wmissing-include-dirs',
> + '-Wmissing-parameter-type',
> + '-Wmissing-prototypes',
> + '-Wmultichar',
> + '-Wnarrowing',
> + '-Wnested-externs',
> + '-Wno-cast-function-type',
> + '-Wnonnull',
> + '-Wnonnull-compare',
> + '-Wnormalized=nfc',
> + '-Wnull-dereference',
> + '-Wodr',
> + '-Wold-style-declaration',
> + '-Wold-style-definition',
> + '-Wopenmp-simd',
> + '-Woverflow',
> + '-Woverlength-strings',
> + '-Woverride-init',
> + '-Wpacked',
> + '-Wpacked-bitfield-compat',
> + '-Wparentheses',
> + '-Wpointer-arith',
> + '-Wpointer-sign',
> + '-Wpointer-to-int-cast',
> + '-Wpragmas',
> + '-Wreturn-local-addr',
> + '-Wreturn-type',
> + '-Wscalar-storage-order',
> + '-Wsequence-point',
> + '-Wshadow',
> + '-Wshift-count-negative',
> + '-Wshift-count-overflow',
> + '-Wshift-negative-value',
> + '-Wshift-overflow=2',
> + '-Wsizeof-array-argument',
> + '-Wsizeof-pointer-memaccess',
> + '-Wstack-protector',
> + '-Wstrict-aliasing',
> + '-Wstrict-prototypes',
> + '-Wsuggest-attribute=const',
> + '-Wsuggest-attribute=format',
> + '-Wsuggest-attribute=noreturn',
> + '-Wsuggest-attribute=pure',
> + '-Wsuggest-final-methods',
> + '-Wsuggest-final-types',
> + '-Wswitch',
> + '-Wswitch-bool',
> + '-Wsync-nand',
> + '-Wtautological-compare',
> + '-Wtrampolines',
> + '-Wtrigraphs',
> + '-Wtype-limits',
> + '-Wuninitialized',
> + '-Wunknown-pragmas',
> + '-Wunused',
> + '-Wunused-but-set-parameter',
> + '-Wunused-but-set-variable',
> + '-Wunused-const-variable=2',
> + '-Wunused-function',
> + '-Wunused-label',
> + '-Wunused-local-typedefs',
> + '-Wunused-macros',
> + '-Wunused-parameter',
> + '-Wunused-result',
> + '-Wunused-value',
> + '-Wunused-variable',
> + '-Wvarargs',
> + '-Wvariadic-macros',
> + '-Wvector-operation-performance',
> + '-Wvla',
> + '-Wvolatile-register-var',
> + '-Wwrite-strings',
> + '-fasynchronous-unwind-tables',
> + '-fexceptions',
> + '-fipa-pure-const',
> + '-fno-common',
> +]
> +ld_flags = [
> + '-Wl,-z,now',
> + '-Wl,-z,relro',
> +]
> +
> +if git
> + cc_flags += ['-Werror']
> +endif
> +
> +if host_machine.cpu_family() != 'aarch64'
> + if host_machine.system() == 'linux'
> + cc_flags += ['-fstack-protector-strong']
> + endif
> + if host_machine.system() == 'freebsd'
> + cc_flags += ['-fstack-protector']
> + endif
> +endif
> +
> +if host_machine.system() not in ['cygwin', 'windows']
> + cc_flags += ['-fPIE', '-DPIE']
> + ld_flags += ['-pie']
> +endif
> +
> +cc = meson.get_compiler('c')
> +common_flags += cc.get_supported_arguments(cc_flags)
> +link_flags = cc.get_supported_link_arguments(ld_flags)
> +
> +add_project_arguments(common_flags, language: 'c')
> +add_project_link_arguments(link_flags, language: 'c')
> +
> +
> +# Generate run helper
> +
> +configure_file(
> + input: 'run.in',
> + output: 'run',
> + configuration: conf,
> +)
> +run_command('tools/fix-perm.sh', 'a+x', 'run')
> +
> +
> +# Generate dist files
> +
> +if git
> + configure_file(
> + input: 'libvirt-dbus.spec.in',
> + output: 'libvirt-dbus.spec',
> + configuration: conf,
> + )
> +
> + authors = run_command('tools/gen-authors.sh')
> + configure_file(
> + configuration: { 'contributorslist': authors.stdout() },
> + input: 'AUTHORS.in',
> + output: 'AUTHORS',
> + )
> +
> + foreach file : [ 'libvirt-dbus.spec', 'AUTHORS' ]
> + path = join_paths(meson.build_root(), file)
> + meson.add_dist_script(
> + 'sh',
> + '-c',
> + 'cp "@0@" "$MESON_DIST_ROOT/"'.format(path),
> + )
> + endforeach
You're using scripts everywhere, I'd use one here as well, as
suggested by Andrea during our face-to-face meeting.
> +endif
> +
> +
> +# Include sub-directories
> +
> +subdir('data')
> +subdir('docs')
> +subdir('src')
> +subdir('tests')
> diff --git a/meson_options.txt b/meson_options.txt
> new file mode 100644
> index 0000000..36e8065
> --- /dev/null
> +++ b/meson_options.txt
> @@ -0,0 +1,6 @@
> +option('dbus_services', type: 'string', value: 'dbus-1/services', description: 'D-Bus session services directory')
> +option('dbus_system_services', type: 'string', value: 'dbus-1/system-services', description: 'D-Bus system services directory')
> +option('dbus_system_policies', type: 'string', value: 'dbus-1/system.d', description: 'D-Bus system policies directory')
> +option('dbus_interfaces', type: 'string', value: 'dbus-1/interfaces', description: 'D-Bus interfaces directory')
> +option('polkit_rules', type: 'string', value: 'polkit-1/rules.d', description: 'polkit rules directory')
> +option('system_user', type: 'string', value: 'libvirtdbus', description: 'username to run system instance as')
> diff --git a/run.in b/run.in
> index 0744a80..1b2207e 100644
> --- a/run.in
> +++ b/run.in
> @@ -14,7 +14,7 @@
> # ./run gdb --args ./src/libvirt-dbus [args ...]
> #
>
> -export abs_top_builddir="@abs_top_builddir@"
> -export VIRT_DBUS_INTERFACES_DIR="@abs_top_srcdir@/data"
> +export abs_top_builddir="@build_root@"
> +export VIRT_DBUS_INTERFACES_DIR="@source_root@/data"
>
> exec "$@"
> diff --git a/src/Makefile.am b/src/Makefile.am
> deleted file mode 100644
> index 845696e..0000000
> --- a/src/Makefile.am
> +++ /dev/null
> @@ -1,66 +0,0 @@
> -AM_CPPFLAGS = \
> - -I$(top_srcdir)/src \
> - -DVIRT_DBUS_INTERFACES_DIR=\"$(DBUS_INTERFACES_DIR)\" \
> - $(NULL)
> -AM_CFLAGS = \
> - $(GIO2_CFLAGS) \
> - $(GLIB2_CFLAGS) \
> - $(LIBVIRT_CFLAGS) \
> - $(LIBVIRT_GLIB_CFLAGS) \
> - $(WARN_CFLAGS) \
> - $(PIE_CFLAGS) \
> - $(NULL)
> -AM_LDFLAGS = \
> - $(GIO2_LDFLAGS) \
> - $(GLIB2_LDFLAGS) \
> - $(LIBVIRT_LDFLAGS) \
> - $(LIBVIRT_GLIB_LDFLAGS) \
> - $(RELRO_LDFLAGS) \
> - $(PIE_LDFLAGS) \
> - $(NULL)
> -
> -noinst_LTLIBRARIES = \
> - libutil.la \
> - $(NULL)
> -
> -libutil_la_SOURCES = \
> - util.c \
> - util.h \
> - $(NULL)
> -
> -sbin_PROGRAMS = \
> - libvirt-dbus \
> - $(NULL)
> -
> -libvirt_dbus_SOURCES = \
> - connect.c \
> - connect.h \
> - domain.c \
> - domain.h \
> - events.c \
> - events.h \
> - gdbus.c \
> - gdbus.h \
> - interface.c \
> - interface.h \
> - main.c \
> - network.c \
> - network.h \
> - nodedev.c \
> - nodedev.h \
> - nwfilter.c \
> - nwfilter.h \
> - secret.c \
> - secret.h \
> - storagepool.c \
> - storagepool.h \
> - storagevol.c \
> - storagevol.h \
> - $(NULL)
> -libvirt_dbus_LDADD = \
> - libutil.la \
> - $(GIO2_LIBS) \
> - $(GLIB2_LIBS) \
> - $(LIBVIRT_LIBS) \
> - $(LIBVIRT_GLIB_LIBS) \
> - $(NULL)
> diff --git a/src/meson.build b/src/meson.build
> new file mode 100644
> index 0000000..a848bcd
> --- /dev/null
> +++ b/src/meson.build
> @@ -0,0 +1,42 @@
> +lib_util = static_library(
> + 'libutil',
> + [
> + 'util.c',
> + ],
> + dependencies: [
> + dep_gio_unix,
> + dep_glib,
> + dep_libvirt,
> + dep_libvirt_glib
> + ],
> +)
> +
> +exe_libvirt_dbus = executable(
> + 'libvirt-dbus',
> + [
> + 'connect.c',
> + 'domain.c',
> + 'events.c',
> + 'gdbus.c',
> + 'interface.c',
> + 'main.c',
> + 'network.c',
> + 'nodedev.c',
> + 'nwfilter.c',
> + 'secret.c',
> + 'storagepool.c',
> + 'storagevol.c',
> + ],
> + dependencies: [
> + dep_gio_unix,
> + dep_glib,
> + dep_libvirt,
> + dep_libvirt_glib
> + ],
> + link_with: [
> + lib_util,
> + ],
> + install: true,
> + install_dir: get_option('sbindir'),
> +)
> +
> diff --git a/tests/Makefile.am b/tests/Makefile.am
> deleted file mode 100644
> index cd1fbd7..0000000
> --- a/tests/Makefile.am
> +++ /dev/null
> @@ -1,57 +0,0 @@
> -AM_CPPFLAGS = \
> - -I$(top_srcdir)/src \
> - $(NULL)
> -
> -test_helpers = \
> - xmldata.py \
> - libvirttest.py \
> - conftest.py \
> - $(NULL)
> -
> -test_programs = \
> - test_connect.py \
> - test_domain.py \
> - test_interface.py \
> - test_network.py \
> - test_nodedev.py \
> - test_storage.py \
> - $(NULL)
> -
> -check_PROGRAMS = \
> - test_util \
> - $(NULL)
> -
> -test_util_SOURCES = \
> - test_util.c \
> - $(NULL)
> -test_util_CFLAGS = \
> - $(GIO2_CFLAGS) \
> - $(GLIB2_CFLAGS) \
> - $(LIBVIRT_CFLAGS) \
> - $(NULL)
> -test_util_LDFLAGS = \
> - $(GIO2_LDFLAGS) \
> - $(GLIB2_LDFLAGS) \
> - $(LIBVIRT_LDFLAGS) \
> - $(NULL)
> -test_util_LDADD = \
> - $(top_builddir)/src/libutil.la \
> - $(GIO2_LIBS) \
> - $(GLIB2_LIBS) \
> - $(LIBVIRT_LIBS) \
> - $(NULL)
> -
> -EXTRA_DIST = \
> - $(test_helpers) \
> - $(test_programs) \
> - travis-run \
> - $(NULL)
> -
> -TESTS = \
> - $(check_PROGRAMS) \
> - $(test_programs) \
> - $(NULL)
> -
> -AM_TESTS_ENVIRONMENT = \
> - export abs_top_builddir="$(abs_top_builddir)"; \
> - export VIRT_DBUS_INTERFACES_DIR="$(abs_top_srcdir)/data";
> diff --git a/tests/meson.build b/tests/meson.build
> new file mode 100644
> index 0000000..6617d4c
> --- /dev/null
> +++ b/tests/meson.build
> @@ -0,0 +1,52 @@
> +src_include = include_directories('../src')
> +
> +test_exec = executable(
> + 'test_util',
> + [
> + 'test_util.c',
> + ],
> + dependencies: [
> + dep_gio_unix,
> + dep_glib,
> + dep_libvirt,
> + dep_libvirt_glib
> + ],
> + link_with: [
> + lib_util,
> + ],
> + include_directories: src_include,
> +)
> +
> +test('test_util', test_exec, suite: 'unit')
> +
> +python_tests = [
> + 'test_connect.py',
> + 'test_domain.py',
> + 'test_interface.py',
> + 'test_network.py',
> + 'test_nodedev.py',
> + 'test_storage.py',
> +]
> +
> +python_env = [
> + 'abs_top_builddir=' + meson.build_root(),
> + 'VIRT_DBUS_INTERFACES_DIR=' + meson.source_root() + '/data'
> +]
> +
> +foreach name : python_tests
> + prog = find_program(name)
> + test(name, prog, env: python_env, suite: 'unit')
> +endforeach
> +
> +flake8 = find_program('flake8', 'flake8-3', required: false)
> +if flake8.found()
> + test(
> + 'flake8', flake8,
> + args: [
> + '--show-source',
> + '--ignore=E501', # E501: (line too long) warning is ignored.
> + meson.source_root(),
> + ],
> + suite: 'syntax',
> + )
> +endif
> diff --git a/tools/fix-perm.sh b/tools/fix-perm.sh
> new file mode 100755
> index 0000000..ed444d4
> --- /dev/null
> +++ b/tools/fix-perm.sh
> @@ -0,0 +1,3 @@
> +#!/bin/sh
> +
> +chmod $1 $MESON_BUILD_ROOT/$2
> diff --git a/tools/gen-authors.sh b/tools/gen-authors.sh
> new file mode 100755
> index 0000000..eb39215
> --- /dev/null
> +++ b/tools/gen-authors.sh
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +
> +cd $MESON_SOURCE_ROOT
> +git log --pretty=format:' %aN <%aE>' | sort -u
> --
> 2.21.0
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
In general, it looks good and works as expected.
I will add my "Reviewed-by: " after we discuss the points raised.
Another thing, please, let's sync to have the libvirt-jenkins-ci work
done and merged before this one gets merged.
Best Regards,
--
Fabiano Fidêncio
More information about the libvir-list
mailing list