2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

rhel: Stop packaging OVS kernel module.

Remove the kernel driver specification for RHEL 6.x, 7.x, 8.x and Fedora.

Reviewed-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Greg Rose <gvrose8192@gmail.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
Greg Rose 2022-07-14 14:23:27 -07:00 committed by Ilya Maximets
parent b6941ca7b8
commit c94ae8a754
12 changed files with 3 additions and 702 deletions

View File

@ -194,24 +194,6 @@ the unit tests, run::
/lib/modules/2.6.32-279.el6.x86_64/build doesn't exist`` or similar, then
the kernel-devel package is missing or buggy.
Kernel Module
~~~~~~~~~~~~~
On RHEL 6, to build the Open vSwitch kernel module run::
$ 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/kmod-openvswitch-rhel6.spec
This produces an "kmod-openvswitch" RPM for each kernel variant, in this
example: "kmod-openvswitch", "kmod-openvswitch-debug", and
"kmod-openvswitch-kdump".
.. _rhel-script-integrations:
Red Hat Network Scripts Integration

12
Vagrantfile vendored
View File

@ -54,7 +54,7 @@ cd /vagrant
[ -f Makefile ] && ./configure && make distclean
mkdir -p ~/build
cd ~/build
/vagrant/configure --with-linux=/lib/modules/`uname -r`/build --enable-silent-rules
/vagrant/configure --enable-silent-rules
SCRIPT
$build_ovs = <<SCRIPT
@ -62,18 +62,12 @@ cd ~/build
make
SCRIPT
$test_kmod = <<SCRIPT
cd ~/build
make check-kmod RECHECK=yes
SCRIPT
$install_rpm = <<SCRIPT
cd ~/build
PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
make && make dist
rpmdev-setuptree
cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
rpm -e openvswitch
rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.fc23.x86_64.rpm
@ -88,7 +82,6 @@ PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
make && make dist
rpmdev-setuptree
cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
rpm -e openvswitch
rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.x86_64.rpm
@ -125,7 +118,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
debian.vm.provision "bootstrap", type: "shell", inline: $bootstrap_debian
debian.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
debian.vm.provision "build_ovs", type: "shell", inline: $build_ovs
debian.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
debian.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
debian.vm.provision "install_deb", type: "shell", inline: $install_deb
end
@ -135,7 +127,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
fedora.vm.provision "bootstrap", type: "shell", inline: $bootstrap_fedora
fedora.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
fedora.vm.provision "build_ovs", type: "shell", inline: $build_ovs
fedora.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
fedora.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
fedora.vm.provision "install_rpm", type: "shell", inline: $install_rpm
end
@ -145,7 +136,6 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
centos.vm.provision "bootstrap", type: "shell", inline: $bootstrap_centos
centos.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
centos.vm.provision "build_ovs", type: "shell", inline: $build_ovs
centos.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
centos.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
centos.vm.provision "install_rpm", type: "shell", inline: $install_centos_rpm
end

View File

@ -41,13 +41,11 @@
chdir: /git/ovs/rhel
with_items:
- openvswitch.spec
- kmod-openvswitch-rhel6.spec
- name: Install build dependencies specified from spec files
shell: echo "y" | yum-builddep /tmp/{{item}}
with_items:
- openvswitch.spec
- kmod-openvswitch-rhel6.spec
- name: Create rpm dev tree
command: rpmdev-setuptree
@ -81,18 +79,12 @@
line: "Release: {{ ansible_local.builder.release }}"
with_items:
- openvswitch.spec
- kmod-openvswitch-rhel6.spec
- name: Build Open vSwitch user space rpms
command: rpmbuild -bb --without check rhel/openvswitch.spec
args:
chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
- name: Build Open vSwitch kmod rpms (only for currently loaded kernel)
command: rpmbuild -bb --without check rhel/kmod-openvswitch-rhel6.spec
args:
chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
- name: Copy RPM packages to /var/www/html
command: cp -r /root/rpmbuild/RPMS/ /var/www/html

View File

@ -53,15 +53,11 @@
chdir: /git/ovs/rhel
with_items:
- openvswitch-fedora.spec
- openvswitch-kmod-fedora.spec
- openvswitch-dkms.spec
- name: Install build dependencies specified from spec files
shell: echo "y" | yum-builddep /tmp/{{item}}
with_items:
- openvswitch-fedora.spec
- openvswitch-kmod-fedora.spec
- openvswitch-dkms.spec
- name: Create rpm dev tree
command: rpmdev-setuptree
@ -95,24 +91,12 @@
line: "Release: {{ ansible_local.builder.release }}"
with_items:
- openvswitch-fedora.spec
- openvswitch-kmod-fedora.spec
- openvswitch-dkms.spec
- name: Build Open vSwitch user space rpms
command: rpmbuild -bb --without check rhel/openvswitch-fedora.spec
args:
chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
- name: Build Open vSwitch kmod rpm
command: rpmbuild -bb --without check rhel/openvswitch-fedora.spec
args:
chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
- name: Build Open vSwitch dkms rpm
command: rpmbuild -bb --without check rhel/openvswitch-dkms.spec
args:
chdir: "{{SOURCE}}/openvswitch-{{version.stdout}}"
- name: Copy RPM packages to /var/www/html
command: cp -r /root/rpmbuild/RPMS/ /var/www/html

4
rhel/.gitignore vendored
View File

@ -1,7 +1,3 @@
openvswitch-dkms.spec
openvswitch-kmod-rhel5.spec
kmod-openvswitch-rhel6.spec
openvswitch-kmod-fedora.spec
openvswitch.spec
openvswitch-fedora.spec
usr_lib_systemd_system_ovs-vswitchd.service

View File

@ -13,12 +13,6 @@ EXTRA_DIST += \
rhel/etc_openvswitch_default.conf \
rhel/etc_sysconfig_network-scripts_ifdown-ovs \
rhel/etc_sysconfig_network-scripts_ifup-ovs \
rhel/openvswitch-dkms.spec \
rhel/openvswitch-dkms.spec.in \
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 \
rhel/openvswitch.spec.in \
rhel/openvswitch-fedora.spec \
@ -26,7 +20,6 @@ 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 \
@ -41,15 +34,6 @@ update_rhel_spec = \
< $(srcdir)/rhel/$(@F).in > $(@F).tmp || exit 1; \
if cmp -s $(@F).tmp $@; then touch $@; rm $(@F).tmp; else mv $(@F).tmp $@; fi
$(srcdir)/rhel/openvswitch-dkms.spec: rhel/openvswitch-dkms.spec.in $(top_builddir)/config.status
$(update_rhel_spec)
$(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
$(update_rhel_spec)
$(srcdir)/rhel/openvswitch.spec: rhel/openvswitch.spec.in $(top_builddir)/config.status
$(update_rhel_spec)
@ -67,10 +51,3 @@ rpm-fedora: dist $(srcdir)/rhel/openvswitch-fedora.spec
-D "_topdir ${RPMBUILD_TOP}" \
-ba $(srcdir)/rhel/openvswitch-fedora.spec
# Build kernel datapath RPM
rpm-fedora-kmod: dist $(srcdir)/rhel/openvswitch-kmod-fedora.spec
${MKDIR_P} ${RPMBUILD_TOP}/SOURCES
cp ${DIST_ARCHIVES} ${RPMBUILD_TOP}/SOURCES
rpmbuild -D "kversion $(shell uname -r)" ${RPMBUILD_OPT} \
-D "_topdir ${RPMBUILD_TOP}" \
-ba $(srcdir)/rhel/openvswitch-kmod-fedora.spec

View File

@ -1,123 +0,0 @@
# 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
%{!?release_number:%define release_number 1}
Name: kmod-%{oname}
Version: @VERSION@
Release: %{release_number}%{?dist}
Summary: Open vSwitch kernel module
Group: System/Kernel
License: GPLv2
URL: http://openvswitch.org/
Source0: %{oname}-%{version}.tar.gz
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}")
# Use -D 'kversion 2.6.32-131.6.1.el6.x86_64' to build package
# for specified kernel version.
# Use -D 'kversion 3.10.0-693.1.1.el7.x86_64 3.10.0-693.17.1.el7.x86_64'
# to build package for mulitple kernel versions in the same package
# This only works for kernel 3.10.0 major revision 693 (RHEL 7.4)
# and major revision 327 (RHEL 7.2)
# By default, build against the latest installed kernel-devel
%{!?kversion:%global kversion %(rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1| sed "s/^kernel.*-devel-//")}
# 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" = "327" ] || [ "$installed_major" = "693" ]; then
# Workaround for RHEL 7.2 and 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/" ] && /sbin/depmod -a "$k"
done
if [ -x "/sbin/weak-modules" ]; then
rpm -ql kmod-%{oname} | grep '\.ko$' | \
/sbin/weak-modules --add-modules
fi
fi
%postun
if [ "$1" = 0 ]; then # Erase, not upgrade
for kname in `ls -d /lib/modules/*`
do
rm -rf $kname/weak-updates/openvswitch
done
fi
/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

View File

@ -1,103 +0,0 @@
# Spec file for Open vSwitch kernel modules using DKMS.
#
# Copyright (C) 2015 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
%{!?release_number:%define release_number 1}
Name: %{oname}-dkms
Version: @VERSION@
Release: %{release_number}%{?dist}
Summary: Open vSwitch kernel module
Group: System/Kernel
License: GPLv2
URL: http://openvswitch.org/
Source: %{oname}-%{version}.tar.gz
Requires: autoconf, gcc, make
Requires(post): dkms
Requires(preun): dkms
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
# Disable shebangs mangling
%undefine __brp_mangle_shebangs
%description
Open vSwitch Linux kernel module.
%prep
%setup -n %{oname}-%{version}
cat > %{oname}.conf << EOF
override %{oname} * extra/%{oname}
override %{oname} * weak-updates/%{oname}
EOF
%build
# for running the '%{__make} -C datapath print-build-modules' below.
./configure
%install
%{__rm} -rf %{buildroot}
# Kernel module sources install for dkms
%{__mkdir_p} %{buildroot}%{_usrsrc}/%{oname}-%{version}/
%{__cp} -r * %{buildroot}%{_usrsrc}/%{oname}-%{version}/
# check we can get kernel module names
%{__make} -C datapath print-build-modules
# Prepare dkms.conf
cat > %{buildroot}%{_usrsrc}/%{oname}-%{version}/dkms.conf << EOF
MODULES=( `%{__make} -C datapath print-build-modules | grep -v make` )
PACKAGE_NAME="openvswitch"
PACKAGE_VERSION="%{version}-%{release}"
MAKE="./configure --with-linux='\${kernel_source_dir}' && make -C datapath/linux"
for __idx in \${!MODULES[@]}; do
BUILT_MODULE_NAME[__idx]=\${MODULES[__idx]}
BUILT_MODULE_LOCATION[__idx]=datapath/linux/
DEST_MODULE_LOCATION[__idx]=/kernel/drivers/net/openvswitch/
done
AUTOINSTALL=yes
EOF
install -d %{buildroot}%{_sysconfdir}/depmod.d/
install -m 644 %{oname}.conf %{buildroot}%{_sysconfdir}/depmod.d/
%post
# Add to DKMS registry
isadded=`dkms status -m "%{oname}" -v "%{version}"`
if [ "x${isadded}" = "x" ] ; then
dkms add -m "%{oname}" -v "%{version}" || :
fi
dkms build -m "%{oname}" -v "%{version}" || :
dkms install -m "%{oname}" -v "%{version}" --force || :
%preun
# Remove all versions from DKMS registry
dkms remove -m "%{oname}" -v "%{version}" --all || :
%clean
%{__rm} -rf %{buildroot}
%files
%defattr(-,root,root)
%{_usrsrc}/%{oname}-%{version}/
/etc/depmod.d/openvswitch.conf

View File

@ -17,9 +17,7 @@
# These tests can be executed, for example, via:
# rpmbuild -rb --with check_datapath_kernel openvswitch-fedora.src.rpm
#
# These tests will use the currently installed OVS kernel modules, when
# testing out of tree kernel modules the appropriate openvswitch-kmod
# package should be installed first.
# These tests will use the currently installed OVS kernel modules.
#%define kernel 2.6.40.4-5.fc15.x86_64
@ -54,7 +52,6 @@ Version: @VERSION@
# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the
# lib/sflow*.[ch] files are SISSL
# datapath/ is GPLv2 (although not built into any of the binary packages)
License: ASL 2.0 and LGPLv2+ and SISSL
Release: %{release_number}%{?dist}
Source: http://openvswitch.org/releases/%{name}-%{version}.tar.gz

View File

@ -1,152 +0,0 @@
# Spec file for Open vSwitch.
# Copyright (C) 2009, 2010, 2015, 2018 Nicira Networks, 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.
%global debug_package %{nil}
# Use the kversion macro such as
# RPMBUILD_OPT='-D "kversion 3.10.0-693.1.1.el7.x86_64 3.10.0-693.17.1.el7.x86_64"'
# to build package for mulitple kernel versions in the same package
# This only works for the following kernels.
# - 3.10.0 major revision 327 (RHEL 7.2)
# - 3.10.0 major revision 693 (RHEL 7.4)
# - 3.10.0 major revision 957 (RHEL 7.6)
# - 3.10.0 major revision 1062 (RHEL 7.7)
# - 3.10.0 major revision 1101 (RHEL 7.8 Beta)
# - 3.10.0 major revision 1127 (RHEL 7.8 GA)
# - 3.10.0 major revision 1160 (RHEL 7.9 GA)
# By default, build against the current running kernel version
#%define kernel 3.1.5-1.fc16.x86_64
#define kernel %{kernel_source}
%{?kversion:%define kernel %kversion}
%{!?release_number:%define release_number 1}
Name: openvswitch-kmod
Summary: Open vSwitch Kernel Modules
Group: System Environment/Daemons
URL: http://www.openvswitch.org/
Vendor: OpenSource Security Ralf Spenneberg <ralf@os-s.net>
Version: @VERSION@
# The entire source code is ASL 2.0 except datapath/ which is GPLv2
License: GPLv2
Release: %{release_number}%{?dist}
Source: openvswitch-%{version}.tar.gz
#Source1: openvswitch-init
Buildroot: /tmp/openvswitch-xen-rpm
Provides: kmod-openvswitch
Obsoletes: kmod-openvswitch < %{version}-%{release}
%description
Open vSwitch provides standard network bridging functions augmented with
support for the OpenFlow protocol for remote per-flow control of
traffic. This package contains the kernel modules.
%prep
%setup -q -n openvswitch-%{version}
%build
for kv in %{kversion}; do
mkdir -p _$kv
(cd _$kv && /bin/cp -f ../configure . && %configure --srcdir=.. \
--with-linux=/lib/modules/${kv}/build --enable-ssl %{_ovs_config_extra_flags})
make %{_smp_mflags} -C _$kv/datapath/linux
done
%install
export INSTALL_MOD_DIR=extra/openvswitch
rm -rf $RPM_BUILD_ROOT
for kv in %{kversion}; do
make INSTALL_MOD_PATH=$RPM_BUILD_ROOT -C _$kv/datapath/linux modules_install
done
mkdir -p $RPM_BUILD_ROOT/etc/depmod.d
for kv in %{kversion}; do
for module in $RPM_BUILD_ROOT/lib/modules/${kv}/extra/openvswitch/*.ko
do
modname="$(basename ${module})"
grep -qsPo "^\s*override ${modname%.ko} \* extra\/openvwitch" \
$RPM_BUILD_ROOT/etc/depmod.d/kmod-openvswitch.conf || \
echo "override ${modname%.ko} * extra/openvswitch" >> \
$RPM_BUILD_ROOT/etc/depmod.d/kmod-openvswitch.conf
grep -qsPo "^\s*override ${modname%.ko} \* weak-updates\/openvwitch" \
$RPM_BUILD_ROOT/etc/depmod.d/kmod-openvswitch.conf || \
echo "override ${modname%.ko} * weak-updates/openvswitch" >> \
$RPM_BUILD_ROOT/etc/depmod.d/kmod-openvswitch.conf
done
done
install -d -m 0755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
install -p -m 0755 rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh \
$RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
%clean
rm -rf $RPM_BUILD_ROOT
%post
current_kernel=$(uname -r)
IFS='.\|-' read mainline_major mainline_minor mainline_patch major_rev \
minor_rev _extra <<<"${current_kernel}"
# echo mainline_major=$mainline_major mainline_minor=$mainline_minor \
# mainline_patch=$mainline_patch major_rev=$major_rev minor_rev=$minor_rev
if grep -qs "suse" /etc/os-release; then
# For SLES or OpenSUSE
if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
fi
elif [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ] &&
{ [ "$major_rev" = "327" ] || [ "$major_rev" = "693" ] || \
[ "$major_rev" = "957" ] || [ "$major_rev" == "1062" ] || \
[ "$major_rev" = "1101" ] || [ "$major_rev" = "1127" ] || \
[ "$major_rev" = "1160" ] ; }; then
# For RHEL 7.2, 7.4, 7.6, 7.7, 7.8 and 7.9
if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
%{_datadir}/openvswitch/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/" ] && /sbin/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/openvswitch/$m.ko"
done | /sbin/weak-modules --add-modules
fi
fi
%postun
if [ "$1" = 0 ]; then # Erase, not upgrade
for kname in `ls -d /lib/modules/*`
do
rm -rf $kname/weak-updates/openvswitch
done
fi
/sbin/depmod -a
%posttrans
# The upgrade path from the older kmod-openvswitch SysV package to
# the newer openvswitch-kmod systemd package will end up removing
# the symlinks to the weak-updates/openvswitch drivers because of
# it's %postun section. We add this section to handle that case.
if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
fi
%files
%defattr(0644,root,root)
/lib/modules/*/extra/openvswitch/*.ko
/etc/depmod.d/kmod-openvswitch.conf
%exclude /lib/modules/*/modules.*
%attr(755,root,root) %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
%changelog
* Wed Sep 21 2011 Kyle Mestery <kmestery@cisco.com>
- Updated for F15
* Wed Jan 12 2011 Ralf Spenneberg <ralf@os-s.net>
- First build on F14

View File

@ -17,9 +17,7 @@
# These tests can be executed, for example, via:
# rpmbuild -rb --with check_datapath_kernel openvswitch.src.rpm
#
# These tests will use the currently installed OVS kernel modules, when
# testing out of tree kernel modules the appropriate openvswitch-kmod
# package should be installed first.
# These tests will use the currently installed OVS kernel modules.
%{!?release_number:%define release_number 1}

View File

@ -1,237 +0,0 @@
#!/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.
# This script is intended to be used on the following kernels.
# - 3.10.0 major revision 327 (RHEL 7.2)
# - 3.10.0 major revision 693 (RHEL 7.4)
# - 3.10.0 major revision 957 (RHEL 7.6)
# - 3.10.0 major revision 1062 (RHEL 7.7)
# - 3.10.0 major revision 1101 (RHEL 7.8 Beta)
# - 3.10.0 major revision 1127 (RHEL 7.8 GA)
# - 3.10.0 major revision 1160 (RHEL 7.9)
# - 4.4.x, x >= 73 (SLES 12 SP3)
# - 4.12.x, x >= 14 (SLES 12 SP4).
# - 4.18.x major revision 305 (RHEL 8.4)
# It is packaged in the openvswitch kmod RPM and run in the post-install
# scripts.
#
# For kernel 3.10.0-957,
# due to some backward incompatible changes introduced in minor revision 12.1,
# kernel modules built against kernels newer than 12.1 cannot be loaded on
# system running kernels older than 12.1, vice versa.
#
# For kernel 3.10.0-693,
# due to some backward incompatible changes introduced in minor revision 17.1,
# kernel modules built against kernels newer than 17.1 cannot be loaded on
# system running kernels older than 17.1, vice versa.
#
# For kernel 3.10.0-327,
# due to some backward incompatible changes introduced in minor revision 41.3,
# kernel modules built against kernels newer than 41.3 cannot be loaded on
# system running kernels older than 41.3, vice versa.
#
# For kernel >= 4.4.73,
# kernel modules built with 4.4.73 can run on systems with kernel versions from
# 4.4.73 to 4.4.114; modules built against 4.4.120 can run on systems from
# 4.4.120 onwards.
#
# For kernel 4.12.x, x>=14,
# kernel modules built with the oldest compatible kernel 4.12.14-94.41.1 can
# run on all versions onwards.
#
# This script checks the current running kernel version, and update symlinks
# for the openvswitch kernel modules in the appropriate kernel directory,
# provided the kmod RPM has installed kernel modules files built from both
# minor revisions.
#
# In case of a kernel minor revision change after the openvswitch kmod package
# is installed, this script shall be run manually after system reboots and
# switches to a different kernel
if [ -n "$(rpm -qa kmod-openvswitch)" ]; then
rpmname="kmod-openvswitch"
elif [ -n "$(rpm -qa openvswitch-kmod)" ]; then
rpmname="openvswitch-kmod"
else
echo "openvswitch kmod package not installed, existing"
exit 1
fi
#echo $rpmname
script_name=$(basename -- "$0")
current_kernel=$(uname -r)
echo current kernel is $current_kernel
IFS='.\|-' read mainline_major mainline_minor mainline_patch major_rev \
minor_rev _extra <<<"${current_kernel}"
# echo mainline_major=$mainline_major mainline_minor=$mainline_minor \
# mainline_patch=$mainline_patch major_rev=$major_rev minor_rev=$minor_rev
expected_rhel_base_minor="el7"
if [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ]; then
if [ "$major_rev" = "327" ]; then
# echo "rhel72"
comp_ver=36
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "514" ]; then
# echo "rhel73"
comp_ver=26
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "693" ]; then
# echo "rhel74"
comp_ver=11
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "862" ]; then
# echo "rhel75"
comp_ver=20
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "957" ]; then
# echo "rhel76"
comp_ver=10
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "1062" ]; then
# echo "rhel77"
comp_ver=10
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "1101" ]; then
# echo "rhel78"
comp_ver=10
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "1127" ]; then
# echo "rhel78"
comp_ver=10
ver_offset=4
installed_ver="$minor_rev"
elif [ "$major_rev" = "1160" ]; then
# echo "rhel79"
comp_ver=10
ver_offset=4
installed_ver="$minor_rev"
fi
elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "4" ]; then
if [ "$mainline_patch" -ge "73" ]; then
# echo "sles12sp3"
comp_ver=114
ver_offset=2
installed_ver="$mainline_patch"
fi
elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "12" ]; then
if [ "$mainline_patch" -ge "14" ]; then
# echo "sles12sp4"
comp_ver=1
ver_offset=2
installed_ver="$mainline_patch"
fi
elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "18" ]; then
if [ "$major_rev" = "305" ]; then
echo "rhel84"
comp_ver=9
ver_offset=4
installed_ver="$minor_rev"
fi
fi
if [ X"$ver_offset" = X ]; then
# echo "This script is not intended to run on kernel $(uname -r)"
exit 0
fi
#IFS='.\|-' read -r -a version_nums <<<"${current_kernel}"
#echo ver_offset=$ver_offset
#echo installed_ver="$installed_ver"
#echo installed_ver="${version_nums[$ver_offset]}"
kmod_versions=()
kversion=$(rpm -ql ${rpmname} | grep '\.ko$' | \
sed -n -e 's/^\/lib\/modules\/\(.*\)\/extra\/.*$/\1/p' | \
sort | uniq)
IFS='.\|-' read installed_major installed_minor installed_patch \
installed_major_rev installed_minor_rev installed_extra <<<"${kversion}"
if [ "$installed_major_rev" -lt "$major_rev" ]; then
echo "Not installing RPM with major revision $installed_major_rev" \
"to kernel with greater major revision $major_rev. Exiting"
exit 1
fi
for kv in $kversion; do
IFS='.\|-' read -r -a kv_nums <<<"${kv}"
kmod_versions+=(${kv_nums[$ver_offset]})
done
sorted_kmod_vers=$(printf "%s\n" "${kmod_versions[@]}" | \
sort -n)
#echo "$sorted_kmod_vers"
if [ ! -n "$sorted_kmod_vers" ]; then
echo "No kernel modules found from package $rpmname, exiting"
exit 1
else
# first line for kmod_low_ver, last for kmod_high_ver
kmod_low_ver=$(echo "$sorted_kmod_vers" | head -1)
kmod_high_ver=$(echo "$sorted_kmod_vers" | tail -1)
fi
#echo "Installing KMOD with minor revisions $kmod_low_ver and \
#$kmod_high_ver"
found_match=false
for kname in $kversion;
do
IFS='.\|-' read -r -a pkg_ver_nums <<<"${kname}"
pkg_ver=${pkg_ver_nums[$ver_offset]}
if [ "$installed_ver" = "$expected_rhel_base_minor" ] ||
[ "$installed_ver" -le "$comp_ver" ]; then
if [ "$pkg_ver" = "$kmod_low_ver" ]; then
requested_kernel=$kname
found_match="true"
echo "Installing Openvswitch KMOD from kernel $kname"
break
fi
else
if [ "$pkg_ver" = "$kmod_high_ver" ]; 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" != "$current_kernel" ]; 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 /lib/modules/$requested_kernel/extra/openvswitch/$m.ko \
/lib/modules/$current_kernel/weak-updates/openvswitch/$m.ko
done
else
echo Proper OVS kernel modules already configured
fi
# Always run depmod
/sbin/depmod -a