1 # Spec file for Open vSwitch kernel modules on Red Hat Enterprise
4 # Copyright (C) 2011, 2012, 2018 Nicira, Inc.
6 # Copying and distribution of this file, with or without modification,
7 # are permitted in any medium without royalty provided the copyright
8 # notice and this notice are preserved. This file is offered as-is,
9 # without warranty of any kind.
11 %define oname openvswitch
16 Summary: Open vSwitch kernel module
20 URL: http
://openvswitch.org
/
21 Source0: %{oname}-%{version}.tar.gz
22 BuildRoot: %
(mktemp
-ud
%{_tmppath}/%{name}-%{version}-%{release}-XXXXXX
)
24 # Without this we get an empty openvswitch-debuginfo package (whose name
25 # conflicts with the openvswitch-debuginfo package for OVS userspace).
26 %undefine _enable_debug_packages
28 %define kernel_source_extended
() /usr
/src
/kernels
/%{2}$([ %{1} = default ] || echo ".%{1}"
)
30 # Use -D 'kversion 2.6.32-131.6.1.el6.x86_64' to build package
31 # for specified kernel version.
32 # Use -D 'kversion 3.10.0-693.1.1.el7.x86_64 3.10.0-693.17.1.el7.x86_64'
33 # to build package for mulitple kernel versions in the same package
34 # This only works for kernel 3.10.0 major revision 693 (RHEL 7.4)
35 # and major revision 327 (RHEL 7.2)
36 # By default, build against the latest installed kernel-devel
37 %{!?kversion:%global kversion %(rpm -qa | egrep "^kernel(-rt|-aarch64)?-devel" | /usr/lib/rpm/redhat/rpmsort -r | head -n 1| sed "s/^kernel.*-devel-//")}
39 # Use -D 'kflavors default debug kdump' to build packages for
40 # specified kernel variants.
41 %{!?kflavors:%global kflavors default}
44 Open vSwitch Linux kernel module.
48 %setup -n
%{oname}-%{version}
51 for kv
in %{kversion}; do
52 for flavor
in %{kflavors}; do
53 mkdir -p _$flavor
/_$kv
54 (cd _$flavor
/_$kv
&& ..
/..
/configure
--with
-linux
="
%{kernel_source_extended $flavor $kv}"
)
55 %{__make} -C _$flavor/_$kv/datapath/linux %{?_smp_mflags}
60 export INSTALL_MOD_PATH
=$RPM_BUILD_ROOT
61 export INSTALL_MOD_DIR
=extra
/%{oname}
62 for kv
in %{kversion}; do
63 for flavor
in %{kflavors} ; do
64 make -C
%{kernel_source_extended $flavor $kv} modules_install \
65 M
="`
pwd`"
/_$flavor
/_$kv
/datapath
/linux
66 # Cleanup unnecessary kernel-generated module dependency files.
67 find $INSTALL_MOD_PATH
/lib
/modules
-iname 'modules.
*'
-exec rm {} \
;
70 install -d
%{buildroot}%{_sysconfdir}/depmod.d
/
71 for kv
in %{kversion}; do
72 for module
in %{buildroot}/lib
/modules
/$kv
/$INSTALL_MOD_DIR
/*.ko
;
74 modname
="$
(basename $
{module
})"
75 grep
-qsPo "^\s
*override $
{modname%.ko
} \
* extra\
/%{oname}" %{oname}.conf || \
76 echo "override $
{modname%.ko
} * extra
/%{oname}" >> %{oname}.conf
77 grep
-qsPo "^\s
*override $
{modname%.ko
} \
* weak
-updates\
/%{oname}" %{oname}.conf || \
78 echo "override $
{modname%.ko
} * weak
-updates
/%{oname}" >> %{oname}.conf
81 install -m
644 %{oname}.conf %{buildroot}%{_sysconfdir}/depmod.d
/
82 install -d
-m
0755 $RPM_BUILD_ROOT
/usr
/share
/%{oname}/scripts
83 install -p
-m
0755 rhel
/usr_share_openvswitch_scripts_ovs
-kmod
-manage.sh \
84 $RPM_BUILD_ROOT
/usr
/share
/%{oname}/scripts
/ovs
-kmod
-manage.sh
87 current_kernel
=$
(uname
-r
)
88 IFS
=.
read installed_major installed_minor installed_micro installed_arch \
89 installed_build
<<<"$
{current_kernel
##*-}"
90 if [ "$installed_major"
= "
327"
] ||
[ "$installed_major"
= "
693"
]; then
91 # Workaround for RHEL 7.2 and 7.4
92 if [ -x "
/usr
/share
/%{oname}/scripts
/ovs
-kmod
-manage.sh"
]; then
93 /usr
/share
/%{oname}/scripts
/ovs
-kmod
-manage.sh
96 # Ensure that modprobe will find our modules.
97 for k
in $
(cd /lib
/modules
&& /bin
/ls
); do
98 [ -d "
/lib
/modules
/$k
/kernel
/"
] && /sbin
/depmod
-a "$k"
100 if [ -x "
/sbin
/weak
-modules"
]; then
101 rpm
-ql kmod
-%{oname} | grep '\.ko$' | \
102 /sbin
/weak
-modules
--add
-modules
107 if [ "$
1"
= 0 ]; then # Erase, not upgrade
108 for kname
in `ls
-d
/lib
/modules
/*`
110 rm -rf $kname
/weak
-updates
/openvswitch
116 %defattr(644,root
,root
,755)
117 /etc
/depmod.d
/%{oname}.conf
119 %attr(755,root
,root
) /usr
/share
/%{oname}/scripts
/ovs
-kmod
-manage.sh
122 rm -rf $RPM_BUILD_ROOT