From e7e5467e00bab0683896d0eb71732238098111c5 Mon Sep 17 00:00:00 2001 From: Edwin Chiu Date: Tue, 28 Apr 2015 15:15:54 -0700 Subject: [PATCH] xenserver: Use kernel uname version for XenServer 6.5 In XenServer 6.5, multiple kernel packages with different rpm versions can have the same uname. So, it is not necessary for openvswitch kernel module to require the exact rpm version. Instead, the kernel module package should check the uname version. This commit will add a new variable %{kernel_uname} to specify whether to use kernel uname version or kernel rpm version as requirement. When %{kernel_name} is used, openvswitch-module will have "Requires: kernel-uname-r = " set instead of "Requires: kernel = ". Reported-by: Gosen Chien Signed-off-by: Edwin Chiu Signed-off-by: Alex Wang --- INSTALL.XenServer | 18 ++++-------------- xenserver/openvswitch-xen.spec.in | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/INSTALL.XenServer b/INSTALL.XenServer index fb1315cff..bb5f262e6 100644 --- a/INSTALL.XenServer +++ b/INSTALL.XenServer @@ -79,26 +79,16 @@ where: the crashdump kernel flavor. Commonly, one would specify "xen" here. For XenServer 6.5 or above, the kernel version naming no longer contains -KERNEL_FLAVOR. Correspondingly, the the final "rpmbuild" step changes to: +KERNEL_FLAVOR. In fact, only providing the `uname -r` output is enough. +So, the final "rpmbuild" step changes to: ``` - VERSION= - KERNEL_NAME= - KERNEL_VERSION= - XEN_VERSION= + KERNEL_UNAME=<`uname -r` output> rpmbuild \ - -D "openvswitch_version $VERSION" \ - -D "kernel_name $KERNEL_NAME" \ - -D "kernel_version $KERNEL_VERSION" \ - -D "xen_version $XEN_VERSION" \ + -D "kenel_uname $KERNEL_UNAME" \ -bb xenserver/openvswitch-xen.spec ``` -where: - - `` is the output of `uname -r`. Since XenServer 6.5, the - directory name in 'lib/modules/' becomes a shortened expression of the - KERNEL_VERSION. Installing Open vSwitch for XenServer ------------------------------------- diff --git a/xenserver/openvswitch-xen.spec.in b/xenserver/openvswitch-xen.spec.in index 80cb91b98..69ca51ac0 100644 --- a/xenserver/openvswitch-xen.spec.in +++ b/xenserver/openvswitch-xen.spec.in @@ -18,14 +18,12 @@ # -D "kernel_flavor xen" # -bb /usr/src/redhat/SPECS/openvswitch-xen.spec # -# For XenServer version >= 6.5, replace kernel_flavor with xen_version which -# should be the `uname -r` output. +# For XenServer version >= 6.5, use kernel_uname which should be +# the `uname -r` output. # for example: # # rpmbuild -D "openvswitch_version 2.3.0+build123" -# -D "kernel_name NAME-xen" -# -D "kernel_version 3.10.41-323.380416" -# -D "xen_version 3.10.0+2" +# -D "kernel_uname 3.10.0+2" # -bb /usr/src/redhat/SPECS/openvswitch-xen.spec # # If tests have to be skipped while building, specify the '--without check' @@ -36,6 +34,11 @@ %define openvswitch_version @VERSION@ %endif +%if %{?kernel_uname:1}%{!?kernel_uname:0} +%define kernel_name kernel +%define kernel_version %{kernel_uname} +%endif + %if %{?kernel_name:0}%{!?kernel_name:1} %define kernel %(rpm -qa 'kernel*xen-devel' | head -1) %define kernel_name %(rpm -q --queryformat "%%{Name}" %{kernel} | sed 's/-devel//' | sed 's/kernel-//') @@ -44,7 +47,7 @@ %endif %if %{?xen_version:0}%{!?xen_version:1} -%define xen_version %{kernel_version}%{kernel_flavor} +%define xen_version %{kernel_version}%{?kernel_flavor:%{kernel_flavor}} %endif # bump this when breaking compatibility with userspace @@ -78,7 +81,12 @@ Summary: Open vSwitch kernel module Group: System Environment/Kernel License: GPLv2 Provides: %{name}-modules%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version}, openvswitch.ko.%{module_abi_version} +%if %{?kernel_uname:0}%{!?kernel_uname:1} Requires: kernel%{?kernel_flavor:-%{kernel_flavor}} = %{kernel_version} +%endif +%if %{?kernel_uname:1}%{!?kernel_uname:0} +Requires: kernel-uname-r = %{kernel_version} +%endif %description %{module_package} Open vSwitch Linux kernel module compiled against kernel version -- 2.20.1