# stuff to be implemented externally: Source10: kmodtool %define kmodtool sh %{SOURCE10} # end stuff to be ... # hardcode for now: %{!?kversion: %define kversion 2.6.16-1.2111_FC5} # hint: this can he overridden with "--define kversion foo" on the rpmbuild command line, e.g. # --define "kversion 2.6.16-1.2096_FC5" %define kmod_name foo %define kverrel %(%{kmodtool} verrel %{?kversion} 2>/dev/null) %define upvar "" %ifarch i586 i686 ppc %define smpvar smp %endif %ifarch i686 x86_64 %define xenvar xen0 xenU %define kdumpvar kdump %endif %{!?kvariants: %define kvariants %{?upvar} %{?smpvar} %{?xenvar} %{?kdumpvar}} # hint: this can he overridden with "--define kvariant foo bar" on the rpmbuild command line, e.g. # --define 'kvariant "" smp' Name: %{kmod_name}-kmod Version: 1.5 Release: 3.%(echo %{kverrel} | tr - _) Summary: %{kmod_name} kernel modules Group: System Environment/Kernel License: GPL URL: http://foo.sf.net Source0: http://download.sf.net/%{kmod_name}/%{kmod_name}-%{version}.tar.bz2 Patch0: %{kmod_name}-foo.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) ExclusiveArch: i586 i686 x86_64 ppc %description foo bar foobar # magic hidden here: %{expand:%(%{kmodtool} rpmtemplate %{kmod_name} %{kverrel} %{kvariants} 2>/dev/null)} %prep # to understand the magic better or to debug it, uncomment this: #{kmodtool} rpmtemplate %{kmod_name} %{kverrel} %{kvariants} 2>/dev/null #sleep 5 %setup -q -c -T -a 0 pushd %{kmod_name}-%{version}* %patch0 -b .patch0 popd for kvariant in %{kvariants} ; do cp -a %{kmod_name}-%{version} _kmod_build_${kvariant} done %build for kvariant in %{kvariants} do ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} cd _kmod_build_$kvariant make -C "${ksrc}" SUBDIRS=${PWD} modules %{?_smp_mflags} cd .. done %install rm -rf $RPM_BUILD_ROOT for kvariant in %{kvariants} do make install \ DESTDIR=$RPM_BUILD_ROOT INST_DIR=$RPM_BUILD_ROOT/lib/modules/%{kverrel}${kvariant}/extra/%{kmod_name} done # Temporarily executable for stripping, fixed later in %%files. chmod u+x $RPM_BUILD_ROOT/lib/modules/*/extra/%{kmod_name}/* %clean rm -rf $RPM_BUILD_ROOT %changelog