On Fedora 20, with wireshark-devel installed, 'make rpm' failed
due to installed but unpackaged files related to wireshark. As
F20 is already released without wireshark, I chose to add a new
sub-package that is enabled only for F21 and later. Furthermore,
all existing wireshark plugins belong to the wireshark package,
so I got to invent behavior of how the first third-part wireshark
module will behave.
* libvirt.spec.in (with_wireshark): Add new conditional.
* configure.ac (ws-plugindir): Improve wording.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
I was tempted to push this as a build-breaker fix for 'make rpm',
but rpms are close enough to black magic that I decided a review
is safer, after all. Tested with both F20 (not built) and F21
(new subpackage built just fine), using normal build of all
subpackages and also a build with '%client_only 1' in ~/.rpmmacros
to ensure that it indeed works in a client-only setup.
configure.ac | 4 ++--
libvirt.spec.in | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/configure.ac b/configure.ac
index 884e0e4..23e2201 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2578,8 +2578,8 @@ AM_CONDITIONAL([WITH_WIRESHARK_DISSECTOR], [test
"$with_wireshark_dissector" = "
AC_ARG_WITH([ws-plugindir],
[AS_HELP_STRING([--with-ws-plugindir],
- [wireshark plugins directory that plugin will installed])],
- [ ws_plugindir=$withval ])
+ [wireshark plugins directory for use when installing wireshark plugin])],
+ [ws_plugindir=$withval])
if test "$with_wireshark_dissector" != "no" && test -z
"$ws_plugindir"; then
ws_version=`$WIRESHARK -v | head -1 | cut -f 2 -d' '`
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 5229ece..e006f2b 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -129,6 +129,7 @@
%define with_numad 0%{!?_without_numad:0}
%define with_firewalld 0%{!?_without_firewalld:0}
%define with_libssh2 0%{!?_without_libssh2:0}
+%define with_wireshark 0%{!?_without_wireshark:0}
# Non-server/HV driver defaults which are always enabled
%define with_sasl 0%{!?_without_sasl:1}
@@ -269,6 +270,11 @@
%define with_libssh2 0%{!?_without_libssh2:1}
%endif
+# Enable wireshark plugins for all distros shipping libvirt 1.2.2 or newer
+%if 0%{?fedora} >= 21
+ %define with_wireshark 0%{!?_without_wireshark:1}
+%endif
+
# Disable some drivers when building without libvirt daemon.
# The logic is the same as in configure.ac
%if ! %{with_libvirtd}
@@ -631,6 +637,10 @@ BuildRequires: scrub
BuildRequires: numad
%endif
+%if %{with_wireshark}
+BuildRequires: wireshark-devel
+%endif
+
Provides: bundled(gnulib)
%description
@@ -1115,6 +1125,17 @@ Requires: cyrus-sasl-md5
Shared libraries and client binaries needed to access to the
virtualization capabilities of recent versions of Linux (and other OSes).
+%if %{with_wireshark}
+%package wireshark
+Summary: Wireshark dissector plugin for libvirt RPC transactions
+Group: Development/Libraries
+Requires: wireshark
+Requires: %{name}-client = %{version}-%{release}
+
+%description wireshark
+Wireshark dissector plugin for better analysis of libvirt RPC traffic.
+%endif
+
%if %{with_lxc}
%package login-shell
Summary: Login shell for connecting users to an LXC container
@@ -1340,6 +1361,10 @@ driver
%define _with_firewalld --with-firewalld
%endif
+%if ! %{with_wireshark}
+ %define _without_wireshark --without-wireshark-dissector
+%endif
+
%define when %(date +"%%F-%%T")
%define where %(hostname)
%define who %{?packager}%{!?packager:Unknown}
@@ -1412,6 +1437,7 @@ driver
%{?_without_dtrace} \
%{?_without_driver_modules} \
%{?_with_firewalld} \
+ %{?_without_wireshark} \
%{with_packager} \
%{with_packager_version} \
--with-qemu-user=%{qemu_user} \
@@ -1442,6 +1468,9 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/lock-driver/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/libvirt/connection-driver/*.a
%endif
+%if %{with_wireshark}
+rm -f $RPM_BUILD_ROOT%{_libdir}/wireshark/plugins/*/libvirt.la
+%endif
%if %{with_network}
install -d -m 0755 $RPM_BUILD_ROOT%{_datadir}/lib/libvirt/dnsmasq/
@@ -2117,6 +2146,11 @@ exit 0
%config(noreplace) %{_sysconfdir}/sasl2/libvirt.conf
%endif
+%if %{with_wireshark}
+%files wireshark
+%{_libdir}/wireshark/plugins/*/libvirt.so
+%endif
+
%if %{with_lxc}
%files login-shell
%attr(4750, root, virtlogin) %{_bindir}/virt-login-shell
--
1.8.5.3