Right now we are copying code for building kernel 2.6 modules to each
spec which provides them. It is a little hard to maintain and to add
some functionality. I have created macro for building modules based on
that code, a little expanded (with cross-compilation support). Now in
spec file thete will only have to be some thing like:
%if %{with kernel}
cd module/place
%build_kernel_modules module_name1 module_name2
cd ../..
%endif
If some additional options for make modules are required they may be
passed like: -1 option1 -2 option2 -3 option3; up to 9 options are
supported.
Exemple when some additional option in make modules is required:
%build_kernel_modules -1 T=$TMPDIR mol
There may be 2 options passed to make prepare scripts: -p o1 -P o2.
Module patching is supported via shell script called pld-module.patch.
Exemple with additional patching:
%if %{with kernel}
cp -f pwc-if.c pwc-if.c.orig
cat > pld-module.patch <<'EOF'
set -e -x
if grep -q "CONFIG_PREEMPT_RT" o/.config; then
sed 's/SPIN_LOCK_UNLOCKED/SPIN_LOCK_UNLOCKED(pdev->ptrlock)/' \
pwc-if.c.orig > pwc-if.c
else
cat pwc-if.c.orig > pwc-if.c
fi
EOF
%build_kernel_modules pwc
%endif
Now, take a look at the code and propose your additions! Number and use
of backshashes is scary, but it has to be this way as %define is expanded
before anything.
--
____ Sparky{PI] -- Przemyslaw _ ___ _ _ ........... LANG...Pl..Ca..Es..En
/____) ___ ___ _ _ || Iskra | | _ \| | | : WWW........ppcrcd.pld-linux.org
\____\| -_)'___| ||^'||//\\// < | _/| | | : JID......sparky<at>jabberes.org
(____/|| (_-_|_|| ||\\ || |_ |_| |_| _| : Mail....sparky<at>pld-linux.org
%build_kernel_modules(1:2:3:4:5:6:7:8:9:p:P:)
\
%{!?1:%{error:build_kernel_modules: Required module name missing}}
\
\
%define Opts
\\\\\\\
%if "%{_target_base_arch}" != "%{_arch}"
\\\
%if "%{_arch}" == "x86_64" && "%{_target_base_arch}" == "i386"
\\\
CC="%{__cc}" CPP="%{__cpp}" ARCH=%{_target_base_arch}
\\\
%else
\\\
ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux-
\\\
%endif
\\\
%else
\\\
CC="%{__cc}" CPP="%{__cpp}"
\\\
%endif
\
%define MakeOpts HOSTCC="%{__cc}" %{?with_verbose:V=1} %{Opts}
\
\
for cfg in %{?with_dist_kernel:%{?with_smp:smp}
up}%{!?with_dist_kernel:nondist}; do \
if [ ! -r "%{_kernelsrcdir}/config-$cfg" ]; then
\
exit 1
\
fi
\
install -d o/include/linux
\
ln -sf %{_kernelsrcdir}/config-$cfg o/.config
\
ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers
\
ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h
o/include/linux/autoconf.h \
\
[ ! -e pld-module.patch ] || %__spec_build_shell pld-module.patch
\
\
%if %{with dist_kernel}
\
%{__make} -j1 -C %{_kernelsrcdir} prepare scripts
\\\
O=$PWD/o %{-p*} %{-P*}
\\\
%{MakeOpts}
\
%else
\
install -d o/include/config
\
touch o/include/config/MARKER
\
ln -sf %{_kernelsrcdir}/scripts o/scripts
\
%endif
\
\
%{__make} -C %{_kernelsrcdir} modules
\\\
M=$PWD O=$PWD/o
\\\
%{-1*} %{-2*} %{-3*} %{-4*} %{-5*} %{-6*} %{-7*} %{-8*} %{-9*}
\\\
%{MakeOpts}
\
\
for MODULE in %{*}; do
\
mv ${MODULE}{,-$cfg}.ko
\
done
\
done
\
%{nil}
_______________________________________________
pld-devel-en mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-en