[ovs-dev] [PATCH] rhel: Add dkms support for ovs datapath build.
Flavio Leitner
fbl at sysclose.org
Wed Jul 1 01:13:33 UTC 2015
On Tue, Jun 30, 2015 at 05:26:00PM -0700, Alex Wang wrote:
> 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}/
Now you're forcing all files to have 0755.
Better to leave with their defaults:
%defattr(-,root,root)
fbl
> +/etc/depmod.d/openvswitch.conf
> --
> 1.7.9.5
>
More information about the dev
mailing list