[libvirt PATCH] meson: Use dicts to initialize cfg_data objects

Andrea Bolognani posted 1 patch 2 years, 1 month ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20220330112635.911521-1-abologna@redhat.com
build-aux/meson.build             | 18 ++++-----
docs/manpages/meson.build         |  9 +++--
meson.build                       | 35 ++++++++++-------
po/meson.build                    |  7 ++--
src/meson.build                   | 65 ++++++++++++++++++-------------
src/remote/meson.build            |  5 ++-
src/security/apparmor/meson.build | 11 +++---
tools/bash-completion/meson.build |  5 ++-
tools/meson.build                 | 21 +++++-----
9 files changed, 98 insertions(+), 78 deletions(-)
[libvirt PATCH] meson: Use dicts to initialize cfg_data objects
Posted by Andrea Bolognani 2 years, 1 month ago
Instead of creating an empty object and then setting keys one
at a time, it is possible to pass a dict object to
configuration_data(). This is nicer because it doesn't require
repeating the name of the cfg_data object over and over.

There is one exception: the 'conf' object, where we store values
that are used directly by C code. In that case, using a dict
object is not feasible for two reasons: first of all, replacing
the set_quoted() calls would result in awkward code with a lot
of calls to format(); moreover, since code that modifies it is
sprinkled all over the place, refactoring it would probably
make things more complicated rather than simpler.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 build-aux/meson.build             | 18 ++++-----
 docs/manpages/meson.build         |  9 +++--
 meson.build                       | 35 ++++++++++-------
 po/meson.build                    |  7 ++--
 src/meson.build                   | 65 ++++++++++++++++++-------------
 src/remote/meson.build            |  5 ++-
 src/security/apparmor/meson.build | 11 +++---
 tools/bash-completion/meson.build |  5 ++-
 tools/meson.build                 | 21 +++++-----
 9 files changed, 98 insertions(+), 78 deletions(-)

diff --git a/build-aux/meson.build b/build-aux/meson.build
index f4d0130e3b..bbfa27c4c6 100644
--- a/build-aux/meson.build
+++ b/build-aux/meson.build
@@ -1,14 +1,7 @@
-syntax_check_conf = configuration_data()
-syntax_check_conf.set('top_srcdir', meson.source_root())
-syntax_check_conf.set('top_builddir', meson.build_root())
-
 flake8_path = ''
 if flake8_prog.found()
   flake8_path = flake8_prog.path()
 endif
-syntax_check_conf.set('flake8_path', flake8_path)
-syntax_check_conf.set('runutf8', ' '.join(runutf8))
-syntax_check_conf.set('PYTHON3', python3_prog.path())
 
 if host_machine.system() == 'freebsd' or host_machine.system() == 'darwin'
   make_prog = find_program('gmake')
@@ -33,8 +26,15 @@ else
   grep_prog = find_program('grep')
 endif
 
-syntax_check_conf.set('GREP', grep_prog.path())
-syntax_check_conf.set('SED', sed_prog.path())
+syntax_check_conf = configuration_data({
+  'top_srcdir': meson.source_root(),
+  'top_builddir': meson.build_root(),
+  'flake8_path': flake8_path,
+  'runutf8': ' '.join(runutf8),
+  'PYTHON3': python3_prog.path(),
+  'GREP': grep_prog.path(),
+  'SED': sed_prog.path(),
+})
 
 configure_file(
   input: 'Makefile.in',
diff --git a/docs/manpages/meson.build b/docs/manpages/meson.build
index bad9b62a2e..d9fcb6b057 100644
--- a/docs/manpages/meson.build
+++ b/docs/manpages/meson.build
@@ -84,10 +84,11 @@ foreach name : keyname_list
   }
 endforeach
 
-docs_man_conf = configuration_data()
-docs_man_conf.set('SYSCONFDIR', sysconfdir)
-docs_man_conf.set('RUNSTATEDIR', runstatedir)
-docs_man_conf.set('VERSION', meson.project_version())
+docs_man_conf = configuration_data({
+  'SYSCONFDIR': sysconfdir,
+  'RUNSTATEDIR': runstatedir,
+  'VERSION': meson.project_version(),
+})
 
 foreach data : docs_man_files
   rst_in_file = '@0@.rst'.format(data['name'])
diff --git a/meson.build b/meson.build
index 27c21d1d67..50b996cbd4 100644
--- a/meson.build
+++ b/meson.build
@@ -2135,14 +2135,15 @@ pkgconfig_files = [
   'libvirt-admin.pc.in',
 ]
 
-pkgconfig_conf = configuration_data()
-pkgconfig_conf.set('VERSION', meson.project_version())
-pkgconfig_conf.set('datadir', datadir)
-pkgconfig_conf.set('datarootdir', datadir)
-pkgconfig_conf.set('exec_prefix', prefix)
-pkgconfig_conf.set('includedir', includedir)
-pkgconfig_conf.set('libdir', libdir)
-pkgconfig_conf.set('prefix', prefix)
+pkgconfig_conf = configuration_data({
+  'VERSION': meson.project_version(),
+  'datadir': datadir,
+  'datarootdir': datadir,
+  'exec_prefix': prefix,
+  'includedir': includedir,
+  'libdir': libdir,
+  'prefix': prefix,
+})
 
 pkgconfig_dir = libdir / 'pkgconfig'
 
@@ -2165,8 +2166,9 @@ if git
     'mingw-libvirt.spec.in',
   ]
 
-  spec_conf = configuration_data()
-  spec_conf.set('VERSION', meson.project_version())
+  spec_conf = configuration_data({
+    'VERSION': meson.project_version(),
+  })
 
   foreach file : spec_files
     configure_file(
@@ -2180,8 +2182,9 @@ if git
                         env: runutf8, check: true)
   authors_file = 'AUTHORS.rst.in'
 
-  authors_conf = configuration_data()
-  authors_conf.set('contributorslist', authors.stdout())
+  authors_conf = configuration_data({
+    'contributorslist': authors.stdout(),
+  })
 
   configure_file(
     input: authors_file,
@@ -2209,9 +2212,11 @@ configure_file(output: 'meson-config.h', configuration: conf)
 
 
 # generate run helper
-run_conf = configuration_data()
-run_conf.set('abs_builddir', meson.build_root())
-run_conf.set('abs_top_builddir', meson.build_root())
+run_conf = configuration_data({
+  'abs_builddir': meson.build_root(),
+  'abs_top_builddir': meson.build_root(),
+})
+
 configure_file(
   input: 'run.in',
   output: '@BASENAME@',
diff --git a/po/meson.build b/po/meson.build
index 69d8be726a..f4d95f97fe 100644
--- a/po/meson.build
+++ b/po/meson.build
@@ -1,8 +1,9 @@
 i18n = import('i18n')
 
-potfiles_conf = configuration_data()
-potfiles_conf.set('SRCDIR', '')
-potfiles_conf.set('BUILDDIR', '')
+potfiles_conf = configuration_data({
+  'SRCDIR': '',
+  'BUILDDIR': '',
+})
 
 potfiles = configure_file(
   input: 'POTFILES.in',
diff --git a/src/meson.build b/src/meson.build
index b2d951d36c..10165ba5ac 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -698,20 +698,23 @@ endforeach
 foreach data : virt_daemon_confs
   capitalize_args = [ '-c', 'print("@0@".capitalize())'.format(data['name']) ]
   name_uc = run_command(python3_prog, capitalize_args, check: true, env: runutf8).stdout().strip()
-  daemon_conf = configuration_data()
-  daemon_conf.set('runstatedir', runstatedir)
-  daemon_conf.set('sbindir', sbindir)
-  daemon_conf.set('sysconfdir', sysconfdir)
-  daemon_conf.set('DAEMON_NAME', data['name'])
-  daemon_conf.set('DAEMON_NAME_UC', name_uc)
-  # to silence meson warning about missing 'CONFIG' in the configuration_data
-  daemon_conf.set('CONFIG', '@CONFIG@')
+
   if conf.has('WITH_POLKIT')
-    daemon_conf.set('default_auth', 'polkit')
+    default_auth = 'polkit'
   else
-    daemon_conf.set('default_auth', 'none')
+    default_auth = 'none'
   endif
 
+  daemon_conf = configuration_data({
+    'runstatedir': runstatedir,
+    'sbindir': sbindir,
+    'sysconfdir': sysconfdir,
+    'DAEMON_NAME': data['name'],
+    'DAEMON_NAME_UC': name_uc,
+    'default_auth': default_auth,
+    # to silence meson warning about missing 'CONFIG' in the configuration_data
+    'CONFIG': '@CONFIG@',
+  })
 
   if data.get('with_ip', false)
     conf_in = libvirtd_conf_tmp
@@ -783,20 +786,23 @@ if conf.has('WITH_LIBVIRTD')
     )
 
     foreach unit : virt_daemon_units
-      unit_conf = configuration_data()
-      unit_conf.set('runstatedir', runstatedir)
-      unit_conf.set('sbindir', sbindir)
-      unit_conf.set('sysconfdir', sysconfdir)
-      unit_conf.set('name', unit['name'])
-      unit_conf.set('service', unit['service'])
-      unit_conf.set('sockprefix', unit['sockprefix'])
-      unit_conf.set('deps', unit.get('deps', ''))
       if conf.has('WITH_POLKIT')
-        unit_conf.set('mode', '0666')
+        mode = '0666'
       else
-        unit_conf.set('mode', '0600')
+        mode = '0600'
       endif
 
+      unit_conf = configuration_data({
+        'runstatedir': runstatedir,
+        'sbindir': sbindir,
+        'sysconfdir': sysconfdir,
+        'name': unit['name'],
+        'service': unit['service'],
+        'sockprefix': unit['sockprefix'],
+        'deps': unit.get('deps', ''),
+        'mode': mode,
+      })
+
       configure_file(
         input: unit['service_in'],
         output: '@0@.service'.format(unit['service']),
@@ -829,15 +835,17 @@ if conf.has('WITH_LIBVIRTD')
   # Generate openrc init files
   if init_script == 'openrc'
     foreach init : openrc_init_files
-      init_conf = configuration_data()
-      init_conf.set('sbindir', sbindir)
-      init_conf.set('runstatedir', runstatedir)
       if conf.has('WITH_FIREWALLD')
         need_firewalld = 'need firewalld'
       else
         need_firewalld = ''
       endif
-      init_conf.set('NEED_FIREWALLD', need_firewalld)
+
+      init_conf = configuration_data({
+        'sbindir': sbindir,
+        'runstatedir': runstatedir,
+        'NEED_FIREWALLD': need_firewalld,
+      })
 
       init_file = configure_file(
         input: init['in_file'],
@@ -1010,10 +1018,11 @@ run_pkg_config_files = [
   'libvirt.pc.in',
 ]
 
-run_pkg_config_conf = configuration_data()
-run_pkg_config_conf.set('VERSION', meson.project_version())
-run_pkg_config_conf.set('abs_top_builddir', meson.build_root())
-run_pkg_config_conf.set('abs_top_srcdir', meson.source_root())
+run_pkg_config_conf = configuration_data({
+  'VERSION': meson.project_version(),
+  'abs_top_builddir': meson.build_root(),
+  'abs_top_srcdir': meson.source_root(),
+})
 
 foreach file : run_pkg_config_files
   configure_file(
diff --git a/src/remote/meson.build b/src/remote/meson.build
index b2aafe6320..eb4f7a0068 100644
--- a/src/remote/meson.build
+++ b/src/remote/meson.build
@@ -240,8 +240,9 @@ if conf.has('WITH_REMOTE')
       runstatedir / 'libvirt' / 'common',
     ]
 
-    logrotate_conf = configuration_data()
-    logrotate_conf.set('localstatedir', localstatedir)
+    logrotate_conf = configuration_data({
+      'localstatedir': localstatedir,
+    })
 
     foreach name : logrotate_files
       log_file = configure_file(
diff --git a/src/security/apparmor/meson.build b/src/security/apparmor/meson.build
index 990f00b4f3..58b4024b85 100644
--- a/src/security/apparmor/meson.build
+++ b/src/security/apparmor/meson.build
@@ -5,11 +5,12 @@ apparmor_gen_profiles = [
   'usr.sbin.virtxend',
 ]
 
-apparmor_gen_profiles_conf = configuration_data()
-apparmor_gen_profiles_conf.set('sysconfdir', sysconfdir)
-apparmor_gen_profiles_conf.set('sbindir', sbindir)
-apparmor_gen_profiles_conf.set('runstatedir', runstatedir)
-apparmor_gen_profiles_conf.set('libexecdir', libexecdir)
+apparmor_gen_profiles_conf = configuration_data({
+  'sysconfdir': sysconfdir,
+  'sbindir': sbindir,
+  'runstatedir': runstatedir,
+  'libexecdir': libexecdir,
+})
 
 apparmor_dir = sysconfdir / 'apparmor.d'
 
diff --git a/tools/bash-completion/meson.build b/tools/bash-completion/meson.build
index deda7c4f46..2ce1c47602 100644
--- a/tools/bash-completion/meson.build
+++ b/tools/bash-completion/meson.build
@@ -4,8 +4,9 @@ completion_commands = [
 ]
 
 foreach command : completion_commands
-  completion_conf = configuration_data()
-  completion_conf.set('command', command)
+  completion_conf = configuration_data({
+    'command': command,
+  })
   completion = configure_file(
     input: 'vsh.in',
     output: command,
diff --git a/tools/meson.build b/tools/meson.build
index ac714e6425..bb28a904dc 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -231,16 +231,17 @@ if conf.has('WITH_REMOTE')
   )
 endif
 
-tools_conf = configuration_data()
-tools_conf.set('PACKAGE', meson.project_name())
-tools_conf.set('VERSION', meson.project_version())
-tools_conf.set('bindir', bindir)
-tools_conf.set('libexecdir', libexecdir)
-tools_conf.set('localedir', localedir)
-tools_conf.set('localstatedir', localstatedir)
-tools_conf.set('sbindir', sbindir)
-tools_conf.set('schemadir', pkgdatadir / 'schemas')
-tools_conf.set('sysconfdir', sysconfdir)
+tools_conf = configuration_data({
+  'PACKAGE': meson.project_name(),
+  'VERSION': meson.project_version(),
+  'bindir': bindir,
+  'libexecdir': libexecdir,
+  'localedir': localedir,
+  'localstatedir': localstatedir,
+  'sbindir': sbindir,
+  'schemadir': pkgdatadir / 'schemas',
+  'sysconfdir': sysconfdir,
+})
 
 configure_file(
   input: 'virt-xml-validate.in',
-- 
2.35.1