[PATCH libvirt-dbus 1/2] meson: generate systemd unit file for libvirt-dbus
Pavel Hrdina
phrdina at redhat.com
Mon Aug 31 09:02:48 UTC 2020
On Mon, Aug 31, 2020 at 09:45:15AM +0200, Katerina Koukiou wrote:
> Signed-off-by: Katerina Koukiou <kkoukiou at redhat.com>
> ---
> data/system/libvirt-dbus.service.in | 21 +++++++++++++++
> data/system/meson.build | 30 +++++++++++++++++-----
> data/system/org.libvirt-systemd.service.in | 5 ++++
> libvirt-dbus.spec.in | 4 ++-
> meson.build | 12 +++++++++
> meson_options.txt | 1 +
> 6 files changed, 66 insertions(+), 7 deletions(-)
> create mode 100644 data/system/libvirt-dbus.service.in
> create mode 100644 data/system/org.libvirt-systemd.service.in
>
> diff --git data/system/libvirt-dbus.service.in data/system/libvirt-dbus.service.in
> new file mode 100644
> index 0000000..862a366
> --- /dev/null
> +++ data/system/libvirt-dbus.service.in
> @@ -0,0 +1,21 @@
> +# SPDX-License-Identifier: LGPL-2.1+
> +#
> +# This file is part of systemd.
> +#
> +# systemd is free software; you can redistribute it and/or modify it
> +# under the terms of the GNU Lesser General Public License as published by
> +# the Free Software Foundation; either version 2.1 of the License, or
> +# (at your option) any later version.
This doesn't look correct as you are contributing to libvirt-dbus, not
systemd.
> +
> +[Unit]
> +Description=Libvirt DBus Service
> +
> +[Service]
> +BusName=org.libvirt
> +DynamicUser=yes
> +User=@SYSTEM_USER@
> +Group=@SYSTEM_USER@
> +ExecStart=@sbindir@/libvirt-dbus --system
> +
> +[Install]
> +Alias=org.libvirt.service
> diff --git data/system/meson.build data/system/meson.build
> index 74f1949..67657d4 100644
> --- data/system/meson.build
> +++ data/system/meson.build
> @@ -1,9 +1,18 @@
> -configure_file(
> - configuration: conf,
> - input: 'org.libvirt.service.in',
> - output: 'org.libvirt.service',
> - install_dir: dbus_system_services_dir,
> -)
> +if init_script == 'systemd'
> + configure_file(
> + configuration: conf,
> + input: 'org.libvirt-systemd.service.in',
> + output: 'org.libvirt.service',
> + install_dir: dbus_system_services_dir,
> + )
> +else
> + configure_file(
> + configuration: conf,
> + input: 'org.libvirt.service.in',
> + output: 'org.libvirt.service',
> + install_dir: dbus_system_services_dir,
> + )
> +endif
Here you can use this to reduce code duplication:
if init_script == 'systemd'
dbus_service_in = 'org.libvirt-systemd.service.in'
else
dbus_service_in = 'org.libvirt.service.in'
endif
configure_file(
configuration: conf,
input: dbus_service_in,
output: 'org.libvirt.service',
install_dir: dbus_system_services_dir,
)
> configure_file(
> configuration: conf,
> input: 'org.libvirt.conf.in',
> @@ -16,3 +25,12 @@ configure_file(
> output: 'libvirt-dbus.rules',
> install_dir: polkit_rules_dir,
> )
> +if init_script == 'systemd'
> + systemd_system_unit_dir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
> + configure_file(
> + configuration: conf,
> + input: 'libvirt-dbus.service.in',
> + output: 'libvirt-dbus.service',
> + install_dir: systemd_system_unit_dir,
> + )
> +endif
> diff --git data/system/org.libvirt-systemd.service.in data/system/org.libvirt-systemd.service.in
> new file mode 100644
> index 0000000..ba260b2
> --- /dev/null
> +++ data/system/org.libvirt-systemd.service.in
> @@ -0,0 +1,5 @@
> +[D-BUS Service]
> +Name=org.libvirt
> +Exec=/bin/false
> +User=@SYSTEM_USER@
> +SystemdService=libvirt-dbus.service
> diff --git libvirt-dbus.spec.in libvirt-dbus.spec.in
> index 4e6ff85..8286609 100644
> --- libvirt-dbus.spec.in
> +++ libvirt-dbus.spec.in
> @@ -40,7 +40,8 @@ This package provides D-Bus API for libvirt
> %autosetup
>
> %build
> -%meson
> +%meson \
> + -Dinit_script=systemd
I would say 4 spaces are good enough as indentation.
> %meson_build
>
> %install
> @@ -57,6 +58,7 @@ exit 0
> %doc AUTHORS.rst NEWS.rst
> %license COPYING
> %{_sbindir}/libvirt-dbus
> +%{_unitdir}/libvirt-dbus.service
> %{_datadir}/dbus-1/services/org.libvirt.service
> %{_datadir}/dbus-1/system-services/org.libvirt.service
> %{_datadir}/dbus-1/system.d/org.libvirt.conf
> diff --git meson.build meson.build
> index e765ed6..c34c07d 100644
> --- meson.build
> +++ meson.build
> @@ -12,6 +12,18 @@ project(
> prefix = get_option('prefix')
> datadir = prefix / get_option('datadir')
> sbindir = prefix / get_option('sbindir')
> +if get_option('init_script') == 'check'
> + if find_program('systemctl', required: false).found()
> + init_script = 'systemd'
> + else
> + init_script = 'other'
> + endif
> +else
> + init_script = get_option('init_script')
> +endif
Inconsistent indentation, in libvirt-dbus we use 4 spaces.
> +if init_script == 'systemd'
> + systemd_dep = dependency('systemd')
> +endif
>
> opt_dirs = [
> 'dbus_interfaces',
> diff --git meson_options.txt meson_options.txt
> index 36e8065..41d348f 100644
> --- meson_options.txt
> +++ meson_options.txt
> @@ -4,3 +4,4 @@ option('dbus_system_policies', type: 'string', value: 'dbus-1/system.d', descrip
> 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')
> +option('init_script', type: 'combo', choices: ['systemd', 'other', 'check'], value: 'check', description: 'Style of init script to install')
> --
> 2.26.2
>
Overall looks good.
One note though, libvirt-dbus switched to gitlab and uses merge request
workflow. So would you please create a merge request here:
https://gitlab.com/libvirt/libvirt-dbus
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/20200831/96a16d4e/attachment-0001.sig>
More information about the libvir-list
mailing list