On Tue, Nov 07, 2006 at 11:52:51PM +0300, Elan Ruusamäe wrote: > just another idea, could use optional <<EOF for "patching section" > > %build_kernel_module -m foo <<EOF > some scripting around here > EOF
ok, got something
> oh, and don't use %Opts, it could conflict with spec macros.
> (hint: %__build_kernel_module_opts)
it isn't any problem, macros defined inside other macro are visible only
internally
the only problem with internal macros is they are expanded before anything,
that's why %if is placed inside Opts definition and not viceversa
--
____ 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(p:P:m:)
\
%{!?-m:%{error:%{0}: Required module name/list missing} exit 1}
\
\
%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}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o
\\\\\\\
O=$PWD/o %{?with_verbose:V=1} %{Opts}
\
compile() {
\
L="<"; [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)"
\
set -e -x
\
\
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 \
\
set +x
\
[ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell
\
set -x
\
\
%if %{with dist_kernel}
\
%{__make} -j1 -C %{_kernelsrcdir} prepare scripts
\\\
%{-p*} %{-P*}
\\\
%{MakeOpts}
\
%else
\
install -d o/include/config
\
touch o/include/config/MARKER
\
ln -sf %{_kernelsrcdir}/scripts o/scripts
\
%endif
\
\
%{__make} -C %{_kernelsrcdir} clean
\\\
RCS_FIND_IGNORE="-name '*.ko' -o"
\\\
M=$PWD %{MakeOpts}
\
%{__make} -C %{_kernelsrcdir} modules
\\\
${1+"$@"}
\\\
M=$PWD %{MakeOpts}
\
\
for MODULE in {%{-m*},}; do
\
[ -z "${MODULE}" ] || mv ${MODULE}{,-$cfg}.ko
\
done
\
done
\
}
\
compile %{*}
\
%{nil}
_______________________________________________ pld-devel-en mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-devel-en
