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

Reply via email to