[PATCH 0/3] Unify handling of directories used for loadable modules

This solves the same problem as 7a8c2319acf2 but in a different, more generic fashion. Andrea Bolognani (3): meson: Unify handling of directories used for loadable modules rpm: Add missing Requires rpm: Unify handling of directories used for loadable modules libvirt.spec.in | 7 ++++--- meson.build | 5 +++++ src/locking/meson.build | 6 ++---- src/meson.build | 13 +++++++++++-- src/storage/meson.build | 2 -- src/storage_file/meson.build | 2 -- 6 files changed, 22 insertions(+), 13 deletions(-) -- 2.48.1

Currently the directories that are searched for each possible kind of loadable module are created as a side effect of installing the corresponding module, which means that their availability depends on the exact list of features that have been enabled. Create them explicitly ahead of time instead, ensuring consistency. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- meson.build | 5 +++++ src/locking/meson.build | 6 ++---- src/meson.build | 13 +++++++++++-- src/storage/meson.build | 2 -- src/storage_file/meson.build | 2 -- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index 1b0b717901..0bcab73ed8 100644 --- a/meson.build +++ b/meson.build @@ -134,6 +134,11 @@ if sshconfdir == '' sshconfdir = sysconfdir / 'ssh' / 'ssh_config.d' endif +connection_driver_install_dir = libdir / 'libvirt' / 'connection-driver' +storage_backend_install_dir = libdir / 'libvirt' / 'storage-backend' +storage_file_install_dir = libdir / 'libvirt' / 'storage-file' +lock_driver_install_dir = libdir / 'libvirt' / 'lock-driver' + # generate configmake.h header diff --git a/src/locking/meson.build b/src/locking/meson.build index c3dfcf2961..934e47593b 100644 --- a/src/locking/meson.build +++ b/src/locking/meson.build @@ -99,8 +99,6 @@ if conf.has('WITH_LIBVIRTD') 'lib': lockd_lib_impl, } - lockdriver_dir = libdir / 'libvirt' / 'lock-driver' - virt_modules += { 'name': 'lockd', 'name_prefix': '', @@ -113,7 +111,7 @@ if conf.has('WITH_LIBVIRTD') 'link_args': [ libvirt_no_undefined, ], - 'install_dir': lockdriver_dir, + 'install_dir': lock_driver_install_dir, } if conf.has('WITH_SANLOCK') @@ -129,7 +127,7 @@ if conf.has('WITH_LIBVIRTD') 'link_args': [ libvirt_no_undefined, ], - 'install_dir': lockdriver_dir, + 'install_dir': lock_driver_install_dir, } endif diff --git a/src/meson.build b/src/meson.build index cce89fac27..9413192a55 100644 --- a/src/meson.build +++ b/src/meson.build @@ -145,7 +145,7 @@ libvirt_libs = [] # * link_with - static libraries to link with (optional, default []) # * link_whole - static libraries to include (optional, default []) # * link_args - arguments for linker (optional, default []) -# * install_dir - installation directory (optional, default libdir / 'libvirt' / 'connection-driver' +# * install_dir - installation directory (optional, default connection_driver_install_dir) virt_modules = [] # virt_daemons: @@ -611,7 +611,7 @@ foreach module : virt_modules module.get('link_args', []), ], install: true, - install_dir: module.get('install_dir', libdir / 'libvirt' / 'connection-driver'), + install_dir: module.get('install_dir', connection_driver_install_dir), install_rpath: libvirt_rpath, ) set_variable('@0@_module'.format(module['name'].underscorify()), mod) @@ -955,6 +955,15 @@ virt_install_dirs += [ localstatedir / 'lib' / 'libvirt' / 'boot', ] +if conf.has('WITH_LIBVIRTD') + virt_install_dirs += [ + connection_driver_install_dir, + storage_backend_install_dir, + storage_file_install_dir, + lock_driver_install_dir, + ] +endif + meson.add_install_script( meson_python_prog.full_path(), python3_prog.full_path(), meson_install_dirs_prog.full_path(), virt_install_dirs, diff --git a/src/storage/meson.build b/src/storage/meson.build index 404d6a6941..f6f28757ef 100644 --- a/src/storage/meson.build +++ b/src/storage/meson.build @@ -59,8 +59,6 @@ storage_backend_zfs_sources = [ 'storage_backend_zfs.c', ] -storage_backend_install_dir = libdir / 'libvirt' / 'storage-backend' - if conf.has('WITH_STORAGE') storage_driver_impl_lib = static_library( 'virt_storage_driver_impl', diff --git a/src/storage_file/meson.build b/src/storage_file/meson.build index 27c4e5a432..501ac99d75 100644 --- a/src/storage_file/meson.build +++ b/src/storage_file/meson.build @@ -10,8 +10,6 @@ storage_file_gluster_sources = [ 'storage_file_backend_gluster.c', ] -storage_file_install_dir = libdir / 'libvirt' / 'storage-file' - virt_storage_file_lib = static_library( 'virt_storage_file', [ -- 2.48.1

All loadable modules should depend on the daemon-common package. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libvirt.spec.in b/libvirt.spec.in index f397b95b79..555ba6b7c6 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -563,6 +563,7 @@ resources %package daemon-plugin-lockd Summary: lockd client plugin for virtlockd Requires: libvirt-libs = %{version}-%{release} +Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-lock = %{version}-%{release} %description daemon-plugin-lockd @@ -1116,6 +1117,7 @@ Requires: sanlock >= 2.4 #for virt-sanlock-cleanup require augeas Requires: augeas Requires: libvirt-libs = %{version}-%{release} +Requires: libvirt-daemon-common = %{version}-%{release} Obsoletes: libvirt-lock-sanlock < 9.1.0 Provides: libvirt-lock-sanlock = %{version}-%{release} -- 2.48.1

Now that meson ensures these directories always exist, we can move them to the daemon-common package where they belong. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 555ba6b7c6..0483baddbe 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -2105,6 +2105,8 @@ exit 0 %dir %attr(0755, root, root) %{_libdir}/libvirt/ %dir %attr(0755, root, root) %{_libdir}/libvirt/connection-driver/ %dir %attr(0755, root, root) %{_libdir}/libvirt/storage-backend/ +%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-file/ +%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ %{_datadir}/polkit-1/actions/org.libvirt.unix.policy %{_datadir}/polkit-1/actions/org.libvirt.api.policy %{_datadir}/polkit-1/rules.d/50-libvirt.rules @@ -2135,7 +2137,6 @@ exit 0 %{_mandir}/man8/virtlockd.8* %files daemon-plugin-lockd -%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/lockd.so %files daemon-log @@ -2299,7 +2300,6 @@ exit 0 %if %{with_storage_gluster} %files daemon-driver-storage-gluster %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_gluster.so -%dir %attr(0755, root, root) %{_libdir}/libvirt/storage-file/ %{_libdir}/libvirt/storage-file/libvirt_storage_file_gluster.so %endif @@ -2450,7 +2450,6 @@ exit 0 %if %{with_libxl} %config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf %endif -%dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so %{_datadir}/augeas/lenses/libvirt_sanlock.aug %{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug -- 2.48.1

On 1/21/25 15:10, Andrea Bolognani wrote:
This solves the same problem as 7a8c2319acf2 but in a different, more generic fashion.
Andrea Bolognani (3): meson: Unify handling of directories used for loadable modules rpm: Add missing Requires rpm: Unify handling of directories used for loadable modules
libvirt.spec.in | 7 ++++--- meson.build | 5 +++++ src/locking/meson.build | 6 ++---- src/meson.build | 13 +++++++++++-- src/storage/meson.build | 2 -- src/storage_file/meson.build | 2 -- 6 files changed, 22 insertions(+), 13 deletions(-)
Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Andrea Bolognani
-
Michal Prívozník