]>
Commit | Line | Data |
---|---|---|
c434706a BP |
1 | # Spec file for Open vSwitch kernel modules on Red Hat Enterprise |
2 | # Linux 6. | |
3 | ||
757e3739 | 4 | # Copyright (C) 2011, 2012, 2018 Nicira, Inc. |
c434706a BP |
5 | # |
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. | |
10 | ||
1821f032 AF |
11 | %define oname openvswitch |
12 | ||
757e3739 | 13 | Name: kmod-%{oname} |
c434706a BP |
14 | Version: @VERSION@ |
15 | Release: 1%{?dist} | |
16 | Summary: Open vSwitch kernel module | |
17 | ||
18 | Group: System/Kernel | |
19 | License: GPLv2 | |
20 | URL: http://openvswitch.org/ | |
1821f032 | 21 | Source0: %{oname}-%{version}.tar.gz |
c434706a | 22 | BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) |
c434706a BP |
23 | |
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 | |
27 | ||
757e3739 MX |
28 | %define kernel_source_extended() /usr/src/kernels/%{2}$([ %{1} = default ] || echo ".%{1}") |
29 | ||
6c9b8ee4 AF |
30 | # Use -D 'kversion 2.6.32-131.6.1.el6.x86_64' to build package |
31 | # for specified kernel version. | |
89dd5819 MX |
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 | |
c8cd1307 MX |
34 | # This only works for kernel 3.10.0 major revision 693 (RHEL 7.4) |
35 | # and major revision 327 (RHEL 7.2) | |
757e3739 MX |
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-//")} | |
c434706a | 38 | |
6c9b8ee4 AF |
39 | # Use -D 'kflavors default debug kdump' to build packages for |
40 | # specified kernel variants. | |
757e3739 | 41 | %{!?kflavors:%global kflavors default} |
c434706a BP |
42 | |
43 | %description | |
44 | Open vSwitch Linux kernel module. | |
45 | ||
46 | %prep | |
47 | ||
1821f032 | 48 | %setup -n %{oname}-%{version} |
c434706a BP |
49 | |
50 | %build | |
89dd5819 MX |
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} | |
56 | done | |
c434706a BP |
57 | done |
58 | ||
59 | %install | |
60 | export INSTALL_MOD_PATH=$RPM_BUILD_ROOT | |
1821f032 | 61 | export INSTALL_MOD_DIR=extra/%{oname} |
89dd5819 MX |
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 {} \; | |
68 | done | |
c434706a | 69 | done |
9c12d2ec | 70 | install -d %{buildroot}%{_sysconfdir}/depmod.d/ |
89dd5819 MX |
71 | for kv in %{kversion}; do |
72 | for module in %{buildroot}/lib/modules/$kv/$INSTALL_MOD_DIR/*.ko; | |
73 | do | |
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 | |
79 | done | |
723a06ae | 80 | done |
9c12d2ec | 81 | install -m 644 %{oname}.conf %{buildroot}%{_sysconfdir}/depmod.d/ |
89dd5819 MX |
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 | |
c434706a | 85 | |
69f7e92f | 86 | %post |
89dd5819 MX |
87 | current_kernel=$(uname -r) |
88 | IFS=. read installed_major installed_minor installed_micro installed_arch \ | |
89 | installed_build <<<"${current_kernel##*-}" | |
c8cd1307 MX |
90 | if [ "$installed_major" = "327" ] || [ "$installed_major" = "693" ]; then |
91 | # Workaround for RHEL 7.2 and 7.4 | |
89dd5819 MX |
92 | if [ -x "/usr/share/%{oname}/scripts/ovs-kmod-manage.sh" ]; then |
93 | /usr/share/%{oname}/scripts/ovs-kmod-manage.sh | |
94 | fi | |
95 | else | |
96 | # Ensure that modprobe will find our modules. | |
97 | for k in $(cd /lib/modules && /bin/ls); do | |
56bfa517 | 98 | [ -d "/lib/modules/$k/kernel/" ] && /sbin/depmod -a "$k" |
89dd5819 | 99 | done |
69f7e92f | 100 | if [ -x "/sbin/weak-modules" ]; then |
c9863835 MX |
101 | rpm -ql kmod-%{oname} | grep '\.ko$' | \ |
102 | /sbin/weak-modules --add-modules | |
69f7e92f GR |
103 | fi |
104 | fi | |
105 | ||
89dd5819 | 106 | %postun |
4cb34769 MX |
107 | if [ "$1" = 0 ]; then # Erase, not upgrade |
108 | for kname in `ls -d /lib/modules/*` | |
109 | do | |
110 | rm -rf $kname/weak-updates/openvswitch | |
111 | done | |
112 | fi | |
89dd5819 MX |
113 | /sbin/depmod -a |
114 | ||
723a06ae | 115 | %files |
757e3739 | 116 | %defattr(644,root,root,755) |
723a06ae | 117 | /etc/depmod.d/%{oname}.conf |
757e3739 | 118 | /lib/modules/ |
89dd5819 | 119 | %attr(755,root,root) /usr/share/%{oname}/scripts/ovs-kmod-manage.sh |
723a06ae | 120 | |
c434706a BP |
121 | %clean |
122 | rm -rf $RPM_BUILD_ROOT |