[libvirt] [dbus PATCH v2] build: convert to Meson/Ninja build system

Pavel Hrdina phrdina at redhat.com
Mon Sep 23 08:18:32 UTC 2019


On Mon, Sep 23, 2019 at 10:07:59AM +0200, Ján Tomko 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>
> 
> Still true.
> 
> > ---
> > 
> > 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(-)
> 
> [...]
> 
> > 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
> 
> In meson, the parameter is called --sysconfdir
> 
>  $ meson build --prefix=/usr --sysconfigdir=/etc --localstatedir=/var
>  usage: meson [-h] {setup,configure,install,introspect,init,test,wrap,subprojects,help,rewrite} ...
>  meson: error: unrecognized arguments: --sysconfigdir=/etc

Nice catch, I'll fix that.

> > +# 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/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'),
> > +)
> > +
> 
> Whitespace at EOL (git am complains about this)

Thanks, I'll fix that too.

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/20190923/2b506678/attachment-0001.sig>


More information about the libvir-list mailing list