Hi there! Continuing the packaging of the latest OpenVPN-linux for NixOS, I would like to propose the following addition to the build system.
What it does is it allows you to customize the installation paths for DBus and systemd services and adds the option to disable the generation of `openvpn3_statedir / 'configs'` directory (which is not always desired, e.g. when the OS takes this responsibility). ~ Petr Portnov
From 848cc46d05c203de393d75434a3f571d78687f50 Mon Sep 17 00:00:00 2001 From: Petr Portnov <mrjarviscr...@gmail.com> Date: Sun, 22 Sep 2024 13:16:02 +0300 Subject: [PATCH] build: allow installation directories' customization This allows to configure the installation directories for systemd and D-Bus files. Signed-off-by: Petr Portnov <mrjarviscr...@gmail.com> --- distro/systemd/meson.build | 9 +++++++-- meson.build | 12 ++++++++++-- meson_options.txt | 12 ++++++++++++ src/configmgr/meson.build | 10 ++++++---- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/distro/systemd/meson.build b/distro/systemd/meson.build index 36d556c..9c636b6 100644 --- a/distro/systemd/meson.build +++ b/distro/systemd/meson.build @@ -15,12 +15,17 @@ systemd_cfg = configuration_data({ systemd_service_cfg = dependency('systemd') +systemd_system_unit_dir = get_option('systemd_system_unit_dir') +if systemd_system_unit_dir == '' + systemd_system_unit_dir = systemd_service_cfg.get_variable('systemdsystemunitdir') +endif + configure_file( input: 'openvpn3-autoload.service.in', output: 'openvpn3-autoload.service', configuration: systemd_cfg, install: true, - install_dir: systemd_service_cfg.get_variable('systemdsystemunitdir'), + install_dir: systemd_system_unit_dir, ) configure_file( @@ -28,7 +33,7 @@ configure_file( output: 'openvpn3-session@.service', configuration: systemd_cfg, install: true, - install_dir: systemd_service_cfg.get_variable('systemdsystemunitdir'), + install_dir: systemd_system_unit_dir, ) custom_target('openvpn3-systemd', diff --git a/meson.build b/meson.build index 586c72a..ba41440 100644 --- a/meson.build +++ b/meson.build @@ -203,8 +203,16 @@ message('OpenVPN 3 Linux service binary directory: ' + get_option('prefix') / li # # D-Bus configuration -dbus_policy_dir = dep_dbus.get_variable('datadir') / 'dbus-1' / 'system.d' -dbus_service_dir = dep_dbus.get_variable('system_bus_services_dir') +dbus_policy_dir = get_option('dbus_policy_dir') +if dbus_policy_dir == '' + dbus_policy_dir = dep_dbus.get_variable('datadir') / 'dbus-1' / 'system.d' +endif + +dbus_service_dir = get_option('dbus_system_service_dir') +if dbus_service_dir == '' + dbus_service_dir = dep_dbus.get_variable('system_bus_services_dir') +endif + dbus_config = { 'OPENVPN_USERNAME': get_option('openvpn_username'), 'LIBEXEC_PATH': get_option('prefix') / libexec_dir, diff --git a/meson_options.txt b/meson_options.txt index 43e301e..04809df 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -93,6 +93,18 @@ option('use-legacy-polkit-pkla', type: 'feature', value: 'disabled', option('polkit_pkla_rulesdir', type: 'string', value: '', description: 'Override PolicyKit PKLA rules directory') +# +# Installation +# +option('dbus_policy_dir', type: 'string', + description: 'D-Bus policy directory') +option('dbus_system_service_dir', type: 'string', + description: 'D-Bus system service directory') +option('systemd_system_unit_dir', type: 'string', + description: 'Path to systemd system unit directory') +option('create_statedir', type: 'feature', value: 'enabled', + description: 'Create directory for OpenVPN 3 state during install phase') + # # Testing tools # diff --git a/src/configmgr/meson.build b/src/configmgr/meson.build index 5d0a649..6f788b7 100644 --- a/src/configmgr/meson.build +++ b/src/configmgr/meson.build @@ -52,7 +52,9 @@ configure_file( install_dir: dbus_service_dir, ) -# Create the configs directory for persistent configuration profiles -# NOTE: Can be replaced with install_emptydir() when Meson 0.60 or newer -# is available on all supported distros -meson.add_install_script('sh','-c', 'mkdir -p $DESTDIR@0@'.format(openvpn3_statedir / 'configs')) +if get_option('create_statedir').enabled() + # Create the configs directory for persistent configuration profiles + # NOTE: Can be replaced with install_emptydir() when Meson 0.60 or newer + # is available on all supported distros + meson.add_install_script('sh','-c', 'mkdir -p $DESTDIR@0@'.format(openvpn3_statedir / 'configs')) +endif -- 2.45.2
_______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel