[libvirt] [dbus PATCH v2] build: convert to Meson/Ninja build system
Pavel Hrdina
phrdina at redhat.com
Fri Sep 20 09:36:53 UTC 2019
On Fri, Sep 20, 2019 at 10:14:00AM +0100, Daniel P. Berrangé wrote:
> On Fri, Sep 20, 2019 at 11:03:42AM +0200, Pavel Hrdina 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
> > - 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
> > - 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/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}
>
> Should this add a '%check' section to run '%meson_test' as sanity
> check for the build.
I would rather do it as a followup patch where we wound have to add
more build dependencies into our spec file (python3, python3-pytest,
python3-dbus and python3-flake8).
Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190920/aa7078c2/attachment-0001.sig>
More information about the libvir-list
mailing list