From patchwork Wed Jul 11 22:30:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Xu X-Patchwork-Id: 942725 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pk3XIunA"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41Qv146Llrz9s01 for ; Thu, 12 Jul 2018 08:31:03 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id BB96DE2F; Wed, 11 Jul 2018 22:31:01 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 68D79DA6 for ; Wed, 11 Jul 2018 22:31:00 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-yw0-f176.google.com (mail-yw0-f176.google.com [209.85.161.176]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 0586DFC for ; Wed, 11 Jul 2018 22:30:58 +0000 (UTC) Received: by mail-yw0-f176.google.com with SMTP id l189-v6so9765583ywb.10 for ; Wed, 11 Jul 2018 15:30:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=oFjKGyJPrbkc1A9+5YppF/uc+b5xC9jOQKmd326s3qw=; b=pk3XIunA1tBVf6aoF2t/4NPpSUlqGBHDgTOgy/JaivJPBpC9y84zR0ExLyeVcush1C N8VlVqEgoq0WCVyGcWHn2UTJlLWiVHx/PoGCUn1y5DYQ2ROxtc6prk/XGLpVsC5gm97g PtlpT38R9ncvdvpURmIkoK+E8wfaaV5U1G1GxoJzvyOkhWEh33BgnQV9BSZYkEYzr9dT DQ8mlCwSKOwIvN5EWELQ/PC2mt/GxN4jMoraXyfE+J3r6aatpv97ZrYBnvALQJ3BLhH4 MaDTLj8OTWNew0U+tQhX59B+0sm7AflxFXhKyF1/W7aHizrc0eaannckV2XFPB5qy8y3 0FaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=oFjKGyJPrbkc1A9+5YppF/uc+b5xC9jOQKmd326s3qw=; b=EAHuYFAnys7HbRgd5uU+8e3lHwK+5lpU8tzngTNFWzYZdizXuBFCc80l9mS/Cz/sGm gspyGF8oltw9cG3a3wqTLDoZbR29hiUzkp+oVD+roSk83jOwNQBO7jB4jlPJsgsUsCio ToPjpryK+xjV3rUdfRDY9T7VqTusoniJp389RqwFuYf0vdQoWjjfju48L24s5BMF//Ra UbC3Obg3IUyXQoMGbSOTwaHHBiWYCznlRf3eINXxyrCLAxkE9TYNn1k6o/3+YU29f65m NNhrrx9afY3ZDFi0p1tf5Onw27fTOJW5SqqNgq5+i0S+PcWyBgXd1W8VZXrRfGcE5snz iJVw== X-Gm-Message-State: AOUpUlGBWf0dIs+GUpTWJ3DOM/l5eaeRmho9Kte/x0QXyWMZdQcUtKba RkUQkuIiukNEYaIaMVAxoB/Ddw== X-Google-Smtp-Source: AAOMgpdYxC7HFsPQvuNzFHDKci1WdR5c69hXc9x3XJswKw7VJs5ehVloLCPmXbXzSjqFFtutgtfa5w== X-Received: by 2002:a81:6e41:: with SMTP id j62-v6mr242640ywc.299.1531348257931; Wed, 11 Jul 2018 15:30:57 -0700 (PDT) Received: from martinx-a01.vmware.com.ORG ([166.107.163.41]) by smtp.gmail.com with ESMTPSA id z206-v6sm9376378ywa.97.2018.07.11.15.30.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Jul 2018 15:30:56 -0700 (PDT) From: Martin Xu To: dev@openvswitch.org Date: Wed, 11 Jul 2018 15:30:08 -0700 Message-Id: <20180711223008.97107-1-martinxu9.ovs@gmail.com> X-Mailer: git-send-email 2.15.2 (Apple Git-101.1) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Cc: Flavio Leitner Subject: [ovs-dev] [PATCH v2] rhel: support kmod-openvswitch build against multiple kernels, rhel6 X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch only affects rhel6 spec file. RHEL 7.4 introduced backward incompatible changes in the kernel. As a result, prebuilt PRM packages against kernels newer than 693.17.1 will cannot be used on systems with older kernels, vice versa. This patch allows multiple kernel version numbers delimited by whitespace to be passed as variable "kversion". kmod-openvswitch RPM packages the kernel module .ko files from all specified kernel versions. This patch also includes a script to update the weak-update symlinks if the system kernel version is upgraded or downgraded after kmod-openvswitch is installed. Previouly the kernel_module_package macro is used to generate spec file template to build kmod-openvswitch RPM. This macro is now removed. Everything is built in the main package. To maintain consistent naming, the rhel6 kmod spec file is renamed to kmod-openvswitch-rhel6.spec to match the built package name kmod-openvswitch. This patch also removes the openvswitch-kmod package. Signed-off-by: Martin Xu Signed-off-by: Greg Rose CC: Ben Pfaff CC: Flavio Leitner CC: Aaron Conole --- Documentation/intro/install/rhel.rst | 7 +- poc/playbook-centos-builder.yml | 8 +- rhel/.gitignore | 1 + rhel/automake.mk | 8 +- rhel/kmod-openvswitch-rhel6.spec.in | 120 +++++++++++++++++++++ rhel/openvswitch-kmod-rhel6.spec.in | 103 ------------------ rhel/openvswitch-kmod.files | 3 - ...sr_share_openvswitch_scripts_ovs-kmod-manage.sh | 71 ++++++++++++ 8 files changed, 203 insertions(+), 118 deletions(-) create mode 100644 rhel/kmod-openvswitch-rhel6.spec.in delete mode 100644 rhel/openvswitch-kmod-rhel6.spec.in delete mode 100644 rhel/openvswitch-kmod.files create mode 100644 rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh diff --git a/Documentation/intro/install/rhel.rst b/Documentation/intro/install/rhel.rst index f8b26069f..6f062e894 100644 --- a/Documentation/intro/install/rhel.rst +++ b/Documentation/intro/install/rhel.rst @@ -197,17 +197,16 @@ the unit tests, run:: Kernel Module ~~~~~~~~~~~~~ -On RHEL 6, to build the Open vSwitch kernel module, copy -rhel/openvswitch-kmod.files into the RPM sources directory and run:: +On RHEL 6, to build the Open vSwitch kernel module run:: - $ rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec + $ rpmbuild -bb rhel/kmod-openvswitch-rhel6.spec You might have to specify a kernel version and/or variants, e.g.: $ rpmbuild -bb \ -D "kversion 2.6.32-131.6.1.el6.x86_64" \ -D "kflavors default debug kdump" \ - rhel/openvswitch-kmod-rhel6.spec + rhel/kmod-openvswitch-rhel6.spec This produces an "kmod-openvswitch" RPM for each kernel variant, in this example: "kmod-openvswitch", "kmod-openvswitch-debug", and diff --git a/poc/playbook-centos-builder.yml b/poc/playbook-centos-builder.yml index 71f104010..e902db75d 100644 --- a/poc/playbook-centos-builder.yml +++ b/poc/playbook-centos-builder.yml @@ -41,13 +41,13 @@ chdir: /git/ovs/rhel with_items: - openvswitch.spec - - openvswitch-kmod-rhel6.spec + - kmod-openvswitch-rhel6.spec - name: Install build dependencies specified from spec files shell: echo "y" | yum-builddep /tmp/{{item}} with_items: - openvswitch.spec - - openvswitch-kmod-rhel6.spec + - kmod-openvswitch-rhel6.spec - name: Create rpm dev tree command: rpmdev-setuptree @@ -81,7 +81,7 @@ line: "Release: {{ ansible_local.builder.release }}" with_items: - openvswitch.spec - - openvswitch-kmod-rhel6.spec + - kmod-openvswitch-rhel6.spec - name: Build Open vSwitch user space rpms command: rpmbuild -bb --without check rhel/openvswitch.spec @@ -89,7 +89,7 @@ chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}" - name: Build Open vSwitch kmod rpms (only for currently loaded kernel) - command: rpmbuild -bb --without check rhel/openvswitch-kmod-rhel6.spec + command: rpmbuild -bb --without check rhel/kmod-openvswitch-rhel6.spec args: chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}" diff --git a/rhel/.gitignore b/rhel/.gitignore index e584a1ed0..9b0ce1d38 100644 --- a/rhel/.gitignore +++ b/rhel/.gitignore @@ -1,6 +1,7 @@ openvswitch-dkms.spec openvswitch-kmod-rhel5.spec openvswitch-kmod-rhel6.spec +kmod-openvswitch-rhel6.spec openvswitch-kmod-fedora.spec openvswitch.spec openvswitch-fedora.spec diff --git a/rhel/automake.mk b/rhel/automake.mk index 137ff4a39..7b6c78fd7 100644 --- a/rhel/automake.mk +++ b/rhel/automake.mk @@ -15,9 +15,8 @@ EXTRA_DIST += \ rhel/etc_sysconfig_network-scripts_ifup-ovs \ rhel/openvswitch-dkms.spec \ rhel/openvswitch-dkms.spec.in \ - rhel/openvswitch-kmod-rhel6.spec \ - rhel/openvswitch-kmod-rhel6.spec.in \ - rhel/openvswitch-kmod.files \ + rhel/kmod-openvswitch-rhel6.spec \ + rhel/kmod-openvswitch-rhel6.spec.in \ rhel/openvswitch-kmod-fedora.spec \ rhel/openvswitch-kmod-fedora.spec.in \ rhel/openvswitch.spec \ @@ -27,6 +26,7 @@ EXTRA_DIST += \ rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \ rhel/usr_share_openvswitch_scripts_sysconfig.template \ rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ + rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh \ rhel/usr_lib_udev_rules.d_91-vfio.rules \ rhel/usr_lib_systemd_system_openvswitch.service \ rhel/usr_lib_systemd_system_ovsdb-server.service \ @@ -48,7 +48,7 @@ update_rhel_spec = \ $(srcdir)/rhel/openvswitch-dkms.spec: rhel/openvswitch-dkms.spec.in $(top_builddir)/config.status $(update_rhel_spec) -$(srcdir)/rhel/openvswitch-kmod-rhel6.spec: rhel/openvswitch-kmod-rhel6.spec.in $(top_builddir)/config.status +$(srcdir)/rhel/kmod-openvswitch-rhel6.spec: rhel/kmod-openvswitch-rhel6.spec.in $(top_builddir)/config.status $(update_rhel_spec) $(srcdir)/rhel/openvswitch-kmod-fedora.spec: rhel/openvswitch-kmod-fedora.spec.in $(top_builddir)/config.status diff --git a/rhel/kmod-openvswitch-rhel6.spec.in b/rhel/kmod-openvswitch-rhel6.spec.in new file mode 100644 index 000000000..b0e50a4f8 --- /dev/null +++ b/rhel/kmod-openvswitch-rhel6.spec.in @@ -0,0 +1,120 @@ +# Spec file for Open vSwitch kernel modules on Red Hat Enterprise +# Linux 6. + +# Copyright (C) 2011, 2012, 2018 Nicira, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without warranty of any kind. + +%define oname openvswitch + +Name: kmod-%{oname} +Version: @VERSION@ +Release: 1%{?dist} +Summary: Open vSwitch kernel module + +Group: System/Kernel +License: GPLv2 +URL: http://openvswitch.org/ +Source0: %{oname}-%{version}.tar.gz +Source1: %{oname}-kmod.files +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + +# Without this we get an empty openvswitch-debuginfo package (whose name +# conflicts with the openvswitch-debuginfo package for OVS userspace). +%undefine _enable_debug_packages + +%define kernel_source_extended() /usr/src/kernels/%{2}$([ %{1} = default ] || echo ".%{1}") + +# By default, build against the latest installed kernel +%{!?kversion:%global kversion %(rpm -q --qf '%{VERSION}-%{RELEASE}.%{ARCH}' `rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1` | head -n 1)} +# Use -D 'kversion 2.6.32-131.6.1.el6.x86_64' to build package +# for specified kernel version. + +# Use -D 'kflavors default debug kdump' to build packages for +# specified kernel variants. +%{!?kflavors:%global kflavors default} + +%description +Open vSwitch Linux kernel module. + +%prep + +%setup -n %{oname}-%{version} + +%build + +for kv in %{kversion}; do + for flavor in %{kflavors}; do + mkdir -p _$flavor/_$kv + (cd _$flavor/_$kv && ../../configure --with-linux="%{kernel_source_extended $flavor $kv}") + %{__make} -C _$flavor/_$kv/datapath/linux %{?_smp_mflags} + done +done + +%install +export INSTALL_MOD_PATH=$RPM_BUILD_ROOT +export INSTALL_MOD_DIR=extra/%{oname} +for kv in %{kversion}; do + for flavor in %{kflavors} ; do + make -C %{kernel_source_extended $flavor $kv} modules_install \ + M="`pwd`"/_$flavor/_$kv/datapath/linux + # Cleanup unnecessary kernel-generated module dependency files. + find $INSTALL_MOD_PATH/lib/modules -iname 'modules.*' -exec rm {} \; + done +done +install -d %{buildroot}%{_sysconfdir}/depmod.d/ +for kv in %{kversion}; do + for module in %{buildroot}/lib/modules/$kv/$INSTALL_MOD_DIR/*.ko; + do + modname="$(basename ${module})" + grep -qsPo "^\s*override ${modname%.ko} \* extra\/%{oname}" %{oname}.conf || \ + echo "override ${modname%.ko} * extra/%{oname}" >> %{oname}.conf + grep -qsPo "^\s*override ${modname%.ko} \* weak-updates\/%{oname}" %{oname}.conf || \ + echo "override ${modname%.ko} * weak-updates/%{oname}" >> %{oname}.conf + done +done +install -m 644 %{oname}.conf %{buildroot}%{_sysconfdir}/depmod.d/ +install -d -m 0755 $RPM_BUILD_ROOT/usr/share/%{oname}/scripts +install -p -m 0755 rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh \ + $RPM_BUILD_ROOT/usr/share/%{oname}/scripts/ovs-kmod-manage.sh + +%post +current_kernel=$(uname -r) +IFS=. read installed_major installed_minor installed_micro installed_arch \ + installed_build <<<"${current_kernel##*-}" +if [ "$installed_major" = "693" ]; then + # Workaround for RHEL 7.4 + if [ -x "/usr/share/%{oname}/scripts/ovs-kmod-manage.sh" ]; then + /usr/share/%{oname}/scripts/ovs-kmod-manage.sh + fi +else + # Ensure that modprobe will find our modules. + for k in $(cd /lib/modules && /bin/ls); do + [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k" + done + if [ -x "/sbin/weak-modules" ]; then + for m in openvswitch vport-gre vport-stt vport-geneve \ + vport-lisp vport-vxlan; do + echo "/lib/modules/%{kversion}/extra/%{oname}/$m.ko" + done | /sbin/weak-modules --add-modules + fi +fi + +%postun +for kname in `ls -d /lib/modules/*` +do + rm -rf $kname/weak-updates/openvswitch +done +/sbin/depmod -a + +%files +%defattr(644,root,root,755) +/etc/depmod.d/%{oname}.conf +/lib/modules/ +%attr(755,root,root) /usr/share/%{oname}/scripts/ovs-kmod-manage.sh + +%clean +rm -rf $RPM_BUILD_ROOT diff --git a/rhel/openvswitch-kmod-rhel6.spec.in b/rhel/openvswitch-kmod-rhel6.spec.in deleted file mode 100644 index daa3dade1..000000000 --- a/rhel/openvswitch-kmod-rhel6.spec.in +++ /dev/null @@ -1,103 +0,0 @@ -# Spec file for Open vSwitch kernel modules on Red Hat Enterprise -# Linux 6. - -# Copyright (C) 2011, 2012 Nicira, Inc. -# -# Copying and distribution of this file, with or without modification, -# are permitted in any medium without royalty provided the copyright -# notice and this notice are preserved. This file is offered as-is, -# without warranty of any kind. - -%define oname openvswitch - -Name: %{oname}-kmod -Version: @VERSION@ -Release: 1%{?dist} -Summary: Open vSwitch kernel module - -Group: System/Kernel -License: GPLv2 -URL: http://openvswitch.org/ -Source0: %{oname}-%{version}.tar.gz -Source1: %{oname}-kmod.files -BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -BuildRequires: %kernel_module_package_buildreqs - -# Without this we get an empty openvswitch-debuginfo package (whose name -# conflicts with the openvswitch-debuginfo package for OVS userspace). -%undefine _enable_debug_packages - -# Use -D 'kversion 2.6.32-131.6.1.el6.x86_64' to build package -# for specified kernel version. -%{?kversion:%define kernel_version %kversion} - -# Use -D 'kflavors default debug kdump' to build packages for -# specified kernel variants. -%{!?kflavors:%define kflavors default} - -%kernel_module_package -n %{oname} -f %{SOURCE1} %kflavors - -%description -Open vSwitch Linux kernel module. - -%prep - -%setup -n %{oname}-%{version} - -%build -for flavor in %flavors_to_build; do - mkdir _$flavor - (cd _$flavor && ../configure --with-linux="%{kernel_source $flavor}") - %{__make} -C _$flavor/datapath/linux %{?_smp_mflags} -done - -%install -export INSTALL_MOD_PATH=$RPM_BUILD_ROOT -export INSTALL_MOD_DIR=extra/%{oname} -for flavor in %flavors_to_build ; do - make -C %{kernel_source $flavor} modules_install \ - M="`pwd`"/_$flavor/datapath/linux - - # Cleanup unnecessary kernel-generated module dependency files. - find $INSTALL_MOD_PATH/lib/modules -iname 'modules.*' -exec rm {} \; -done -install -d %{buildroot}%{_sysconfdir}/depmod.d/ -for module in %{buildroot}/lib/modules/%{kernel_version}/$INSTALL_MOD_DIR/*.ko; -do - modname="$(basename ${module})" - echo "override ${modname%.ko} * extra/%{oname}" >> %{oname}.conf - echo "override ${modname%.ko} * weak-updates/%{oname}" >> %{oname}.conf -done -install -m 644 %{oname}.conf %{buildroot}%{_sysconfdir}/depmod.d/ - -%post -# Ensure that modprobe will find our modules. -for k in $(cd /lib/modules && /bin/ls); do - [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k" -done -if [ -x "/sbin/weak-modules" ]; then - for m in openvswitch vport-gre vport-stt vport-geneve \ - vport-lisp vport-vxlan; do - echo "/lib/modules/%{kernel}/extra/$m.ko" - done | /sbin/weak-modules --add-modules -fi - -%postun -for k in $(cd /lib/modules && /bin/ls); do - [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k" -done -if [ "$1" = 0 ]; then # Erase, not upgrade - if [ -x "/sbin/weak-modules" ]; then - for m in openvswitch vport-gre vport-stt vport-geneve \ - vport-lisp vport-vxlan; do - echo "/lib/modules/%{kernel}/extra/$m.ko" - done | /sbin/weak-modules --remove-modules - fi -fi - -%files -%defattr(644,root,root) -/etc/depmod.d/%{oname}.conf - -%clean -rm -rf $RPM_BUILD_ROOT diff --git a/rhel/openvswitch-kmod.files b/rhel/openvswitch-kmod.files deleted file mode 100644 index 357c2e8b7..000000000 --- a/rhel/openvswitch-kmod.files +++ /dev/null @@ -1,3 +0,0 @@ -%defattr(644,root,root,755) -/lib/modules/%2-%1 -/etc/depmod.d/openvswitch.conf diff --git a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh new file mode 100644 index 000000000..e89ad86dd --- /dev/null +++ b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +# Copyright (c) 2018 Nicira/VMware, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +script_name=$(basename -- "$0") +current_kernel=$(uname -r) +echo current kernel is $current_kernel + +IFS=. read installed_major installed_minor installed_micro installed_arch installed_build <<<"${current_kernel##*-}" +# echo installed_major=$installed_major installed_minor=$installed_minor installed_micro=$installed_micro installed_arch=$installed_arch installed_build=$installed_build + +expected_base_minor="el7" +expected_minor=11 + +found_match=false +for kname in `ls -d /lib/modules/*` +do + IFS=. read major minor micro arch build <<<"${kname##*-}" +# echo major=$major minor=$minor micro=$micro arch=$arch build=$build + if [ "$installed_minor" = "$expected_base_minor" ] || + [ "$installed_minor" -le "$expected_minor" ]; then + if [ "$minor" = "1" ]; then + requested_kernel=$kname + found_match="true" + echo "Installing Openvswitch KMOD from kernel $kname" + break + fi + else + if [ "$minor" = "17" ]; then + requested_kernel=$kname + found_match="true" + echo "Installing Openvswitch KMOD from kernel $kname" + break + fi + fi +done + +if [ "$found_match" = "false" ]; then + echo $script_name: Failed + exit 1 +fi + +if [ "$requested_kernel" != "/lib/modules/$current_kernel" ]; then + if [ -x "/sbin/weak-modules" ]; then + if [ ! -d /lib/modules/$current_kernel/weak-updates/openvswitch ]; then + mkdir -p /lib/modules/$current_kernel/weak-updates + mkdir -p /lib/modules/$current_kernel/weak-updates/openvswitch + fi + for m in openvswitch vport-gre vport-stt vport-geneve \ + vport-lisp vport-vxlan; do + ln -f -s $requested_kernel/extra/openvswitch/$m.ko \ + /lib/modules/$current_kernel/weak-updates/openvswitch/$m.ko + done + fi +else + echo Proper OVS kernel modules already configured +fi +# Always run depmod +/sbin/depmod -a