[ovs-dev] [PATCH] rhel: Add dkms support for ovs datapath build.

Alex Wang alexw at nicira.com
Wed Jul 1 00:26:00 UTC 2015


This commit adds a rpmbuild spec file for building ovs datapath
in dkms similar to the one for debian.

Signed-off-by: Alex Wang <alexw at nicira.com>

---
RFC->PATCH:
- generate the dkms.conf inside %install.
- remove rhel/dkms.conf.in.
---
 rhel/.gitignore               |    1 +
 rhel/automake.mk              |    5 +++
 rhel/openvswitch-dkms.spec.in |  100 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 106 insertions(+)
 create mode 100644 rhel/openvswitch-dkms.spec.in

diff --git a/rhel/.gitignore b/rhel/.gitignore
index fa2554f..164bb66 100644
--- a/rhel/.gitignore
+++ b/rhel/.gitignore
@@ -1,3 +1,4 @@
+openvswitch-dkms.spec
 openvswitch-kmod-rhel5.spec
 openvswitch-kmod-rhel6.spec
 openvswitch-kmod-fedora.spec
diff --git a/rhel/automake.mk b/rhel/automake.mk
index f6272a3..d263325 100644
--- a/rhel/automake.mk
+++ b/rhel/automake.mk
@@ -12,6 +12,8 @@ EXTRA_DIST += \
 	rhel/etc_logrotate.d_openvswitch \
 	rhel/etc_sysconfig_network-scripts_ifdown-ovs \
 	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 \
@@ -33,6 +35,9 @@ 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/openvswitch-kmod-rhel6.spec: rhel/openvswitch-kmod-rhel6.spec.in $(top_builddir)/config.status
 	$(update_rhel_spec)
 
diff --git a/rhel/openvswitch-dkms.spec.in b/rhel/openvswitch-dkms.spec.in
new file mode 100644
index 0000000..6b6c30b
--- /dev/null
+++ b/rhel/openvswitch-dkms.spec.in
@@ -0,0 +1,100 @@
+# 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
+
+Name:             %{oname}-dkms
+Version:          @VERSION@
+Release:          1%{?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
+
+
+%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(755,root,root,755)
+%{_usrsrc}/%{oname}-%{version}/
+/etc/depmod.d/openvswitch.conf
-- 
1.7.9.5




More information about the dev mailing list