summaryrefslogtreecommitdiff
path: root/rhel/kmod-openvswitch-rhel6.spec.in
blob: 4f6ed0dbc59e04c832bfbb5220e81ed22ee45296 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 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
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.
# 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 flavor in %{kflavors} ; do
        mkdir _$flavor
        (cd _$flavor && ../configure --with-linux="%{kernel_source_extended $flavor %{kversion}}")
        %{__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 %{kflavors} ; do
         make -C %{kernel_source_extended $flavor %{kversion}} 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/%{kversion}/$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/%{kversion}/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/%{kversion}/extra/$m.ko"
    done | /sbin/weak-modules --remove-modules
    fi
fi

%files
%defattr(644,root,root,755)
/etc/depmod.d/%{oname}.conf
/lib/modules/

%clean
rm -rf $RPM_BUILD_ROOT