On Sun, Jun 28, 2015 at 09:38:13PM -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 <al...@nicira.com> > --- > rhel/.gitignore | 1 + > rhel/automake.mk | 6 +++ > rhel/dkms.conf.in | 11 +++++ > rhel/openvswitch-dkms.spec.in | 99 > +++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 117 insertions(+) > create mode 100644 rhel/dkms.conf.in > 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..e24c1a0 100644 > --- a/rhel/automake.mk > +++ b/rhel/automake.mk > @@ -8,10 +8,13 @@ > EXTRA_DIST += \ > rhel/README.RHEL \ > rhel/automake.mk \ > + rhel/dkms.conf.in \ > rhel/etc_init.d_openvswitch \ > 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 +36,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/dkms.conf.in b/rhel/dkms.conf.in > new file mode 100644 > index 0000000..2c90b4d > --- /dev/null > +++ b/rhel/dkms.conf.in > @@ -0,0 +1,11 @@
This file could be generated by the %install section so that you don't have an extra file in OVS tree, macros are expanded as usual and if we decide to have dkms support to specific distros, then the config remains inside each spec. It's just a suggestion to reduce the noise. > +MODULES=( __MODULES__ ) > + > +PACKAGE_NAME="openvswitch" > +PACKAGE_VERSION="__VERSION__" > +MAKE="./configure --with-linux='${kernel_source_dir}' && make -C > datapath/linux" That's the instruction to build the module, see below. > +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 > diff --git a/rhel/openvswitch-dkms.spec.in b/rhel/openvswitch-dkms.spec.in > new file mode 100644 > index 0000000..591418b > --- /dev/null > +++ b/rhel/openvswitch-dkms.spec.in > @@ -0,0 +1,99 @@ > +# 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 from the dkms.conf.in template > +%{__sed} "s/__VERSION__/%{version}-%{release}/g; s/__MODULES__/`%{__make} -C > datapath print-build-modules | grep -v make`/" rhel/dkms.conf.in > > %{buildroot}%{_usrsrc}/%{oname}-%{version}/dkms.conf Yeap, we could generate the entire file here. > + > +# We don't need the debian folder in there, just upstream sources. > +%{__rm} -rf %{buildroot}%{_usrsrc}/%{oname}-%{version}/debian > +# We don't need the rhel stuff in there either. > +%{__rm} -rf %{buildroot}%{_usrsrc}/%{oname}-%{version}/rhel > +# We don't need the xenserver stuff in there either. > +%{__rm} -rf %{buildroot}%{_usrsrc}/%{oname}-%{version}/xenserver > +# And we should also clean useless license files, which are already > +# descriped in our debian/copyright anyway. > +%{__rm} -f %{buildroot}%{_usrsrc}/%{oname}-%{version}/COPYING \ > + %{buildroot}%{_usrsrc}/%{oname}-%{version}/LICENSE I am not really sure if the above is possible. > + > +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}" || : Here it actually builds the module, see below. > +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(644,root,root,755) > +%{_usrsrc}/%{oname}-%{version}/ But the sources have perm forced to 0644, which means ``./configure´´ shouldn't work. fbl > +/etc/depmod.d/openvswitch.conf > -- > 1.7.9.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev