XenServer has the concept of a "supplemental pack", which is just a collection of RPMs rolled into an ISO image for installation as a unit, either during XenServer installation or later as an update.
The script used to build supplemental packs requires that a single RPM not mix kernel and userspace components. It also enforces a particular naming scheme for kernel module RPMs. This commit modifies the OVS RPM spec file to create separate RPMs in accordance with these conventions. We had intended to make the userspace RPM depend upon the kernel RPM to ensure that a compatible kernel module is installed, but that turns out to be impractical since the kernel module package name includes the full kernel version string it was built against. That would require needless rebuilding and upgrading of the userspace RPM when kernel updates are built and installed. --- xenserver/openvswitch-xen.spec | 33 +++++++++++++++++++++++++++------ 1 files changed, 27 insertions(+), 6 deletions(-) diff --git a/xenserver/openvswitch-xen.spec b/xenserver/openvswitch-xen.spec index 25e8a96..5930ced 100644 --- a/xenserver/openvswitch-xen.spec +++ b/xenserver/openvswitch-xen.spec @@ -15,25 +15,44 @@ # %define version %{openvswitch_version}-%{xen_version} +# extract kernel type (xen or kdump) +%define binsuffix -%(echo '%{xen_version}' | sed -r 's/^.*[0-9]+//') +# kernel version string w/o kernel type +%define kernel_version %(echo '%{xen_version}' | sed -r 's/[a-z]+$//') +# build-supplemental-pack.sh requires this naming for kernel module packages +%define module_package modules%{binsuffix}-%{kernel_version} + Name: openvswitch -Summary: Virtual switch +Summary: Open vSwitch daemon/database/utilities Group: System Environment/Daemons URL: http://www.openvswitch.org/ Vendor: Nicira Networks, Inc. Version: %{openvswitch_version} -# The entire source code is ASL 2.0 except datapath/ which is GPLv2 -License: ASL 2.0 and GPLv2 +License: ASL 2.0 Release: 1 Source: openvswitch-%{openvswitch_version}.tar.gz Buildroot: /tmp/openvswitch-xen-rpm -Requires: kernel-xen = %(echo '%{xen_version}' | sed 's/xen$//') +# We should require kernel module package here, but supplemental-pack-enforced +# naming scheme puts kernel version in module package name, and we don't want +# to have to respin the userspace package every time a new kernel comes along. %description Open vSwitch provides standard network bridging functions augmented with support for the OpenFlow protocol for remote per-flow control of traffic. +%package %{module_package} +Summary: Open vSwitch kernel module +Group: System Environment/Kernel +License: GPLv2 +Provides: %{name}-modules = %{kernel_version} +Requires: kernel%{binsuffix} = %{kernel_version} + +%description %{module_package} +Open vSwitch Linux kernel module compiled against kernel version +%{xen_version}. + %prep %setup -q -n openvswitch-%{openvswitch_version} @@ -293,7 +312,6 @@ fi /etc/xensource/bugtool/network-status/openvswitch.xml /etc/logrotate.d/openvswitch /etc/profile.d/openvswitch.sh -/lib/modules/%{xen_version}/kernel/extra/openvswitch/openvswitch_mod.ko /usr/share/openvswitch/python/ovs/__init__.py /usr/share/openvswitch/python/ovs/daemon.py /usr/share/openvswitch/python/ovs/db/__init__.py @@ -352,7 +370,6 @@ fi /usr/share/man/man8/ovs-vsctl.8.gz /usr/share/man/man8/ovs-vswitchd.8.gz /var/lib/openvswitch -%exclude /lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko %exclude /usr/lib/xsconsole/plugins-base/*.py[co] %exclude /usr/sbin/ovs-brcompatd %exclude /usr/share/man/man8/ovs-brcompatd.8.gz @@ -360,3 +377,7 @@ fi %exclude /usr/share/openvswitch/python/*.py[co] %exclude /usr/share/openvswitch/python/ovs/*.py[co] %exclude /usr/share/openvswitch/python/ovs/db/*.py[co] + +%files %{module_package} +/lib/modules/%{xen_version}/kernel/extra/openvswitch/openvswitch_mod.ko +%exclude /lib/modules/%{xen_version}/kernel/extra/openvswitch/brcompat_mod.ko -- 1.7.2.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev_openvswitch.org