]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
meson: src: add support for installing libvirt conf and augeas files
authorPavel Hrdina <phrdina@redhat.com>
Mon, 27 Jul 2020 06:51:29 +0000 (08:51 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 3 Aug 2020 07:27:05 +0000 (09:27 +0200)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
src/Makefile.am
src/meson.build
src/remote/meson.build

index ac799296a281786c3e43e155eebe07ef8cae9ea3..4f0b3cf8684bdb97b4d9eea87b66ecd6eb3c8a89 100644 (file)
@@ -70,15 +70,10 @@ include storage/Makefile.inc.am
 include remote/Makefile.inc.am
 
 
-confdir = $(sysconfdir)/libvirt
 conf_DATA += libvirt.conf
 
 BUILT_SOURCES += $(nodist_conf_DATA)
 
-augeasdir = $(datadir)/augeas/lenses
-
-augeastestdir = $(datadir)/augeas/lenses/tests
-
 # .libs/libvirt.so is built by libtool as a side-effect of the Makefile
 # rule for libvirt.la.  However, checking symbols relies on Linux ELF layout
 if WITH_LINUX
index b7679557b3f22ffbc947ad3a96e1c0c640c83a36..781a228da3714911894cf491c4e5796513957e1f 100644 (file)
@@ -158,6 +158,31 @@ virt_daemons = []
 #   * install_dir - installation directory (optional, libexecdir)
 virt_helpers = []
 
+# virt_conf_files:
+#   libvirt conf files
+virt_conf_files = []
+
+# virt_aug_files:
+#   libvirt aug files
+virt_aug_files = []
+
+# virt_test_aug_files:
+#   generate libvirt augeas test files
+#   * name - augeas test file name (required)
+#   * aug - augeas test file source (required)
+#   * conf - conf file (required)
+virt_test_aug_files = []
+
+# virt_daemon_confs:
+#   generation libvirt daemon conf files
+#   each entry is a dictionary with following items:
+#   * name - daemon name (required)
+#   * with_ip - only for libvirtd and virtproxyd (optional, default false)
+virt_daemon_confs = []
+
+virt_aug_dir = datadir / 'augeas' / 'lenses'
+virt_test_aug_dir = datadir / 'augeas' / 'lenses' / 'tests'
+
 
 # list subdirectories
 
@@ -566,3 +591,88 @@ foreach helper : virt_helpers
     install_rpath: libdir,
   )
 endforeach
+
+
+# Generate daemon config, augeas and augeas test files
+
+install_data(virt_conf_files, install_dir: confdir)
+install_data(virt_aug_files, install_dir: virt_aug_dir)
+
+foreach data : virt_test_aug_files
+  custom_target(
+    data['name'],
+    input: [ data['conf'], data['aug'] ],
+    output: data['name'],
+    command: [
+      meson_python_prog, python3_prog.path(), augeas_gentest_prog.path(),
+      '@INPUT@',
+    ],
+    capture: true,
+    install: true,
+    install_dir: virt_test_aug_dir,
+  )
+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).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 data.get('with_ip', false)
+    conf_in = libvirtd_conf_tmp
+  else
+    conf_in = virtd_conf_tmp
+  endif
+  conf_out = configure_file(
+    input: conf_in,
+    output: '@0@.conf'.format(data['name']),
+    configuration: daemon_conf,
+    install: true,
+    install_dir: confdir,
+  )
+
+  if data.get('with_ip', false)
+    aug_in = libvirtd_aug_tmp
+  else
+    aug_in = virtd_aug_tmp
+  endif
+  configure_file(
+    input: aug_in,
+    output: '@0@.aug'.format(data['name']),
+    configuration: daemon_conf,
+    install: true,
+    install_dir: virt_aug_dir,
+  )
+
+  if data.get('with_ip', false)
+    test_aug_in = test_libvirtd_aug_tmp
+  else
+    test_aug_in = test_virtd_aug_tmp
+  endif
+  test_aug_tmp = configure_file(
+    input: test_aug_in,
+    output: 'test_@0@.aug.tmp'.format(data['name']),
+    configuration: daemon_conf,
+  )
+
+  test_aug_out = 'test_@0@.aug'.format(data['name'])
+  custom_target(
+    test_aug_out,
+    input: [ conf_out, test_aug_tmp ],
+    output: test_aug_out,
+    command: [
+      meson_python_prog, python3_prog.path(), augeas_gentest_prog.path(),
+      '@INPUT@',
+    ],
+    capture: true,
+    install: true,
+    install_dir: virt_test_aug_dir,
+  )
+endforeach
index ee38364868e9a721bc3a6728fb6b49060dc0dade..763c72a9ee99b3b70ef877509d2f315ff384956b 100644 (file)
@@ -63,6 +63,51 @@ foreach name : [ 'remote', 'qemu', 'lxc' ]
   )
 endforeach
 
+# libvirt_conf_files:
+#   Generate libvirtd and virtd template files that are used to generate
+#   daemon configuration files.
+#   Each entry is a dictionary with following items:
+#   * input: source config file (required)
+#   * libvirtd: libvirtd config output template file (required)
+#   * virtd: virtd config output template file (required)
+libvirt_conf_files = [
+  {
+    'input':'libvirtd.conf.in',
+    'libvirtd':'libvirtd.conf.tmp',
+    'virtd':'virtd.conf.tmp',
+  },
+  {
+    'input':'libvirtd.aug.in',
+    'libvirtd':'libvirtd.aug.tmp',
+    'virtd':'virtd.aug.tmp',
+  },
+  {
+    'input':'test_libvirtd.aug.in',
+    'libvirtd':'test_libvirtd.aug.tmp',
+    'virtd':'test_virtd.aug.tmp',
+  },
+]
+
+foreach name : libvirt_conf_files
+  tmp = configure_file(
+    input: name['input'],
+    output: name['libvirtd'],
+    command: [ 'sed', '-e', '/[@]CUT_ENABLE_IP[@]/d', '-e', '/[@]END[@]/d', '@INPUT@' ],
+    capture: true,
+  )
+  set_variable(name['libvirtd'].underscorify(), tmp)
+endforeach
+
+foreach name : libvirt_conf_files
+  tmp = configure_file(
+    input: name['input'],
+    output: name['virtd'],
+    command: [ 'sed', '-e', '/[@]CUT_ENABLE_IP[@]/,/[@]END[@]/d', '@INPUT@' ],
+    capture: true,
+  )
+  set_variable(name['virtd'].underscorify(), tmp)
+endforeach
+
 if conf.has('WITH_REMOTE')
   remote_driver_lib = static_library(
     'virt_remote_driver',