On Tue, Jun 30, 2015 at 6:06 PM, Flavio Leitner <f...@sysclose.org> wrote:
> On Tue, Jun 30, 2015 at 03:56:44PM -0700, Alex Wang wrote: > > Hey Flavio, > > > > Thx a lot for the suggestions, > > > > Please see my reply inline, > > > > On Tue, Jun 30, 2015 at 10:41 AM, Flavio Leitner <f...@sysclose.org> > wrote: > > > > > > > > > > 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. > > > > > > > > > > Sure, for all examples I saw, they define the dkms.conf file inside the > spec > > file. I'll do that~ > > > > > > > > > > > > > > > +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. > > > > > > > > > > You mean the above will still be packaged? or you mean it is not needed? > > I think it must be packaged. If you look at the other rpms, > they always include the license/copying file. > > Okay, I ditched all the 'rm's, and just resent the patch,~ > > > > > + > > > > +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. > > > > > > > > > > Yeah, somehow I left this out while preparing the patch... did that in > my > > experiment... > > Ok > > fbl > > > > > > > > > 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 > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev