[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