commit 1c834f1450daaf1d30c070a80eabdc24a230020b
Author: Jan Rękorajski <[email protected]>
Date:   Wed Dec 10 21:37:40 2014 +0100

    - split all kernel macros to separate file and install it in place of
      one provided by rpm
    - 1.699

 rpm-build-macros.spec |   8 +-
 rpm.macros            | 300 ---------------------------------------------
 rpm.macros.kernel     | 329 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 335 insertions(+), 302 deletions(-)
---
diff --git a/rpm-build-macros.spec b/rpm-build-macros.spec
index 71d22ca..5003f83 100644
--- a/rpm-build-macros.spec
+++ b/rpm-build-macros.spec
@@ -1,4 +1,4 @@
-%define                rpm_macros_rev  1.698
+%define                rpm_macros_rev  1.699
 %define                find_lang_rev   1.36
 Summary:       PLD Linux RPM build macros
 Summary(pl.UTF-8):     Makra do budowania pakietów RPM dla Linuksa PLD
@@ -71,8 +71,11 @@ fi
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_usrlibrpm}
+install -d $RPM_BUILD_ROOT%{_usrlibrpm}/macros.d
+
 cp -a rpm.macros $RPM_BUILD_ROOT%{_usrlibrpm}/macros.build
+cp -a rpm.macros.kernel $RPM_BUILD_ROOT%{_usrlibrpm}/macros.d/kernel
+
 install -p service_generator.sh $RPM_BUILD_ROOT%{_usrlibrpm}
 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_usrlibrpm}/find-lang.sh
 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_usrlibrpm}
@@ -83,6 +86,7 @@ rm -rf $RPM_BUILD_ROOT
 %files
 %defattr(644,root,root,755)
 %{_usrlibrpm}/macros.build
+%{_usrlibrpm}/macros.d/kernel
 %attr(755,root,root) %{_usrlibrpm}/service_generator.sh
 %attr(755,root,root) %{_usrlibrpm}/find-lang.sh
 %attr(755,root,root) %{_usrlibrpm}/dokuwiki-find-lang.sh
diff --git a/rpm.macros b/rpm.macros
index b957110..52c191a 100644
--- a/rpm.macros
+++ b/rpm.macros
@@ -450,48 +450,6 @@ LINKFLAGS="%{rpmldflags}" \
 # and release 0.zzz.bootstrap if built with bootstrap
 %bootstrap_release() 
%{!?with_bootstrap:%{1}%{?2:.%{2}}}%{?with_bootstrap:%{!?2:%(expr %{1} - 
1)}%{?2:%{1}.%(expr %{2} - 1)}.zzz.bootstrap}
 
-# Alternative kernel type/version
-%_alt_kernel   %{nil}%{?alt_kernel:-%{?alt_kernel}}
-
-# The directory holding Linux kernel sources
-%_kernelsrcdir /usr/src/linux%{_alt_kernel}
-
-# rpm -qf on kernel version.h file
-%__kernel_qf()         %(R=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm 
-q --qf '%*' -f include/linux/version.h 2>/dev/null | grep -v 'is not'); echo 
${R:-ERROR})
-
-# kernel %{name} and kernel %{epoch}:%{version}-%{release} macro respecing 
alt_kernel
-%kernel_name   %(N=%{__kernel_qf %{N}}; echo ${N%%-headers})
-%kernel_version        %{__kernel_qf %|E?{%{E}:}|%{V}-%{R}}
-
-# -n drm to generate kernel%{_alt_kernel}-drm dependency
-%releq_kernel(n:)              %{kernel_name}%{?-n:-%{-n*}} = %{kernel_version}
-%releq_kernel_up(n:)   %{kernel_name}-up%{?-n:-%{-n*}} = %{kernel_version}
-%releq_kernel_smp(n:)  %{kernel_name}-smp%{?-n:-%{-n*}} = %{kernel_version}
-
-# -s post to generate Requires(post) dependency
-%requires_releq_kernel(s:n:)           Requires%{-s:(%{-s*})}: %releq_kernel
-%requires_releq_kernel_up(s:n:)                Requires%{-s:(%{-s*})}: 
%releq_kernel_up
-%requires_releq_kernel_smp(s:n:)       Requires%{-s:(%{-s*})}: 
%releq_kernel_smp
-
-# kernel version-release handling
-%__kernel_ver   %( \\
-       Z=$([ -f '%{_kernelsrcdir}/include/generated/utsrelease.h' ] && awk 
-F'"' '/UTS_RELEASE/{print $2}' 
%{_kernelsrcdir}/include/{linux/version,generated/utsrelease}.h 2>/dev/null || 
awk -F'"' '/UTS_RELEASE/{print $2}' 
%{_kernelsrcdir}/include/linux/{version,utsrelease}.h 2>/dev/null); \\
-       Z=${Z:-$(awk -F' = ' '/^VERSION/{v=$2} /^PATCHLEVEL/{p=$2} 
/^SUBLEVEL/{s=$2} /^EXTRAVERSION/{e=$2} END {printf("%d.%d.%d%s", v, p, s, e)}' 
%{_kernelsrcdir}/Makefile 2>/dev/null)}; \\
-       echo ${Z:-ERROR}; \\
-)
-
-%_kernel_version_code   %( \\
-       Z=$(awk '/LINUX_VERSION_CODE/{print $3}' 
%{_kernelsrcdir}/include/linux/version.h 2>/dev/null); \\
-       echo ${Z:-ERROR}; \\
-)
-
-%_kernel_version_magic()        %(echo $((%{1} * 65536 + %{2} * 256 + %{3})))
-
-# `uname -r` used for building/installing kernel modules
-%_kernel_ver   %{__kernel_ver}%{!?_without_dist_kernel:%(echo %{__kernel_ver} 
| grep -q -e - || echo -%{__kernel_qf %{R}})}
-# package version OR `uname -r` for non-dist kernel to be used in @release 
field
-%_kernel_ver_str %(echo %{!?_without_dist_kernel:%{__kernel_qf 
%{V}-%{R}}}%{?_without_dist_kernel:%{__kernel_ver}} | tr '-' '_')
-
 # Requires name = version-release
 %requires_releq()      
%{!?1:ERROR}%{?2:ERROR}%{?1:%{!?2:%{expand:%%requires_eq_to -r %1 %1}}}
 # Requires: name = version
@@ -766,27 +724,6 @@ __spec_install_post_check_tmpfiles() { \
        %{!?no_install_post_check_tmpfiles:return $fail;} \
 }; __spec_install_post_check_tmpfiles }}
 
-#-----------------------------------------------------------------
-# Find and gzip all kernel modules
-#
-# Requires: find
-#
-#%no_install_post_compress_modules     1
-%__spec_install_post_compress_modules { \
-%{!?no_install_post_compress_modules: __spec_install_post_compress_modules() { 
\
-%{!?debug:set +x;} \
-       if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
-               q=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f 
-print); \
-               if [ "$q" ]; then \
-                       printf "Compress %d kernel modules..." $(echo "$q" | wc 
-l); \
-                       echo "$q" | xargs -r %{__gzip} -9nf; \
-                       echo "DONE"; \
-                       find $RPM_BUILD_ROOT/lib/modules -name '*o' -type l 
-printf "%p %l\n" | \
-                       while read a b; do ln -sf $b.gz $a.gz; rm -f $a; done; \
-               fi; \
-       fi; \
-}; __spec_install_post_compress_modules } }
-
 # Remove common Perl files we don't package
 %__spec_install_post_perl_clean {\
 %{!?no_install_post_perl_clean: \
@@ -1718,243 +1655,6 @@ done \
 
 %env_update [ ! -x /sbin/env-update ] || /sbin/env-update -u || :
 
-
-# Build modules for kernels 2.6
-# Author: Przemyslaw Iskra <[email protected]>
-#
-# Usage:
-#      %build_kernel_modules -m <modules> -C <directory>
-#
-#  remember that proper Makefile is still required
-# Options:
-#  -m <modules> (required) -- comma-separated list of modules to save,
-#              without .ko extension, may be placed in subdirectory
-#  -C <directory> -- change to <directory> before doing anything
-#  -p <arg>, -P <arg> -- arguments passeed to make scripts
-#  -c -- do not execute make clean
-#  <additional arguments> -- all additional arguments will be passed to
-#              make modules
-#
-# Additional patching supported via here document. Try:
-#      %build_kernel_modules -m module <<'EOF'
-#      your patch script here
-#      EOF
-# Don't use it unless patching depends on config options.
-
-# Developer note: don't touch it unless you know how to handle '\'.
-# - \ in script expands to nothing
-# - \\\ in script expands to \
-# - \\\ inside definition expands to nothing
-# - \\\\\\\ inside definition expands to \
-# - in last line \ has to touch arguments so arguments passing
-#   in new lines (using \) will be supported
-
-%build_kernel_modules(p:P:m:C:c)                                               
                        \
-%{!?-m:%{error:%{0}: Required module name/list missing} exit 1}                
\
-                                                                               
                                                        \
-%define Opts                                                                   
                                        \\\\\\\
-%if "%{_target_base_arch}" != "%{_host_base_arch}"                             
        \\\
-       %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == 
"i386" \\\
-       CC="%{__cc}" ARCH=%{_target_base_arch}                                  
                \\\
-       %else                                                                   
                                                \\\
-       ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\
-       %endif                                                                  
                                                \\\
-%else                                                                          
                                                \\\
-       CC="%{__cc}"                                                            
                                        \\\
-%endif                                                                         
                                                \
-%define        MakeOpts HOSTCC="%{__cc}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o 
\\\\\\\
-               O=$PWD/o %{?with_verbose:V=1} %{Opts}                           
                \
-                                                                               
                                                        \
-%{?-C:cd %{-C*}}                                                               
                                        \
-compile() {                                                                    
                                                \
-       local L="<" PATCH_SH;                                                   
                                \
-       [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)"                   
\
-       set -e -x                                                               
                                                \
-                                                                               
                                                        \
-       [ -r "%{_kernelsrcdir}/.config" ] || exit 1                             
                \
-       rm -rf o                                                                
                                                \
-       install -d o/include/linux o/include/generated o/arch/x86/include 
o/arch/powerpc/lib    \
-       ln -sf %{_kernelsrcdir}/.config o/.config                               
                \
-       ln -sf %{_kernelsrcdir}/Module.symvers o/Module.symvers                 
\
-       if [ -f %{_kernelsrcdir}/include/generated/autoconf.h ]; then   \
-               ln -sf %{_kernelsrcdir}/include/generated/autoconf.h 
o/include/generated/autoconf.h \
-               ln -s ../generated/autoconf.h o/include/linux/autoconf.h        
\
-       else                                                                    
                                                \
-               ln -sf %{_kernelsrcdir}/include/linux/autoconf.h 
o/include/linux/autoconf.h \
-       fi                                                                      
                                                        \
-       if [ -d %{_kernelsrcdir}/arch/x86/include/generated ]; then             
\
-               ln -s %{_kernelsrcdir}/arch/x86/include/generated 
o/arch/x86/include    \
-       fi                                                                      
                                                        \
-                                                                               
                                                        \
-       set +x                                                                  
                                                \
-       [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell    \
-       set -x                                                                  
                                                \
-                                                                               
                                                        \
-       install -d o/include/config                                             
                                \
-       touch o/include/config/MARKER                                           
                        \
-       ln -sf %{_kernelsrcdir}/include/config/auto.conf 
o/include/config/auto.conf     \
-       ln -sf %{_kernelsrcdir}/scripts o/scripts                               
                \
-                                                                               
                                                        \
-       %{!?-c:%{__make} -C %{_kernelsrcdir} clean                              
                \\\
-               RCS_FIND_IGNORE="-name '*.[ks]o' -o"                            
                \\\
-               ${1+"$@"}                                                       
                                                \\\
-               M=$PWD %{MakeOpts}}                                             
                                        \
-                                                                               
                                                        \
-       %{__make} -C %{_kernelsrcdir} modules                                   
                \\\
-               ${1+"$@"}                                                       
                                                \\\
-               M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts}                           
                \
-%{?-C:cd -}                                                                    
                                                \
-}                                                                              
                                                        \
-compile %{*}                                                                   
                                        \
-%{nil}
-
-%build_kernel_modules_compat(p:P:m:C:c)                                        
                        \
-%{!?-m:%{error:%{0}: Required module name/list missing} exit 1}                
\
-                                                                               
                                                        \
-%define Opts                                                                   
                                        \\\\\\\
-%if "%{_target_base_arch}" != "%{_host_base_arch}"                             
        \\\
-       %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == 
"i386" \\\
-       CC="%{__cc}" ARCH=%{_target_base_arch}                                  
                \\\
-       %else                                                                   
                                                \\\
-       ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\
-       %endif                                                                  
                                                \\\
-%else                                                                          
                                                \\\
-       CC="%{__cc}"                                                            
                                        \\\
-%endif                                                                         
                                                \
-%define        MakeOpts HOSTCC="%{__cc}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o 
\\\\\\\
-               O=$PWD/o %{?with_verbose:V=1} %{Opts}                           
                \
-                                                                               
                                                        \
-%{?-C:cd %{-C*}}                                                               
                                        \
-compile() {                                                                    
                                                \
-       local L="<" PATCH_SH;                                                   
                                \
-       [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)"                   
\
-       set -e -x                                                               
                                                \
-       local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: 
up}}%{!?with_dist_kernel: nondist}' \
-                                                                               
                                                        \
-for cfg in ${cfgs:-dist}; do                                        \
-       [ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1                         
        \
-                                                                               
                                                        \
-       rm -rf o                                                                
                                                \
-       install -d o/include/linux o/include/generated o/arch/powerpc/lib       
\
-       ln -sf %{_kernelsrcdir}/config-$cfg o/.config                           
        \
-       ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers    \
-       if [ -f %{_kernelsrcdir}/include/generated/autoconf-$cfg.h ]; then      
\
-               ln -sf %{_kernelsrcdir}/include/generated/autoconf-$cfg.h 
o/include/generated/autoconf.h \
-               ln -s ../generated/autoconf.h o/include/linux/autoconf.h        
\
-       else                                                                    
                                                \
-               ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h 
o/include/linux/autoconf.h \
-       fi                                                                      
                                                        \
-                                                                               
                                                        \
-       set +x                                                                  
                                                \
-       [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell    \
-       set -x                                                                  
                                                \
-                                                                               
                                                        \
-       %if %{with dist_kernel} || %(test -f %{_kernelsrcdir}/scripts/bin2c ; 
echo $?)  \
-               %{__make} -j1 -C %{_kernelsrcdir} prepare scripts               
        \\\
-                       %{-p*} %{-P*}                                           
                                        \\\
-                       %{MakeOpts}                                             
                                                \
-       %else                                                                   
                                                \
-               install -d o/include/config                                     
                                \
-               touch o/include/config/MARKER                                   
                        \
-               ln -sf %{_kernelsrcdir}/include/config/auto-$cfg.conf 
o/include/config/auto.conf        \
-               ln -sf %{_kernelsrcdir}/scripts o/scripts                       
                \
-       %endif                                                                  
                                                \
-                                                                               
                                                        \
-       %{!?-c:%{__make} -C %{_kernelsrcdir} clean                              
                \\\
-               RCS_FIND_IGNORE="-name '*.[ks]o' -o"                            
                \\\
-               ${1+"$@"}                                                       
                                                \\\
-               M=$PWD %{MakeOpts}}                                             
                                        \
-                                                                               
                                                        \
-       %{__make} -C %{_kernelsrcdir} modules                                   
                \\\
-               ${1+"$@"}                                                       
                                                \\\
-               M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts}                           
                \
-                                                                               
                                                        \
-       for MODULE in {%{-m*},}; do                                             
                                \
-               [ -z "${MODULE}" ] || mv ${MODULE}{,-$cfg}.ko                   
        \
-       done                                                                    
                                                \
-done                                                                           
                                                \
-%{?-C:cd -}                                                                    
                                                \
-}                                                                              
                                                        \
-compile %{*}                                                                   
                                        \
-%{nil}
-
-
-# Install kernel modules built by %build_kernel_modules
-# Author: Przemyslaw Iskra <[email protected]>
-#
-# Usage:
-#      %install_kernel_modules -m <modules> -d <directory>
-#
-# Options:
-#  -m <modules> (required) -- comma-separated list of modules to install,
-#              without .ko extension, may be placed in subdirectory
-#  -d <directory> (required) -- in what subdirectory modules should be
-#              installed (eg. misc, kernel/drivers/net)
-#  -s <suffix> -- suffix to use when installing modules, useful when module
-#              with same name exists in kernel already
-#  -n <file> -- name of modprobe config file to use (without .conf extension)
-#              for defining aliases, only useful with -s
-#  -D <directory> -- DESTDIR, base directory for installed files,
-#              defaults to RPM_BUILD_ROOT
-
-%install_kernel_modules(m:d:s:n:D:)                                            
                        \
-%{!?-m:%{error:%{0}: Required module name (-m) missing}exit 1}         \
-%{!?-d:%{error:%{0}: Required module directory missing}exit 1}         \
-%{?-n:%{!?-s:%{error:%{0}: Modprobe .conf file requires module suffix}exit 1}} 
\
-                                                                               
                                                        \
-INSTALLROOT=%{-D*}                                                             
                                        \
-[ -n "$INSTALLROOT" ] || INSTALLROOT=$RPM_BUILD_ROOT                           
\
-                                                                               
                                                        \
-%define KernelD $INSTALLROOT/lib/modules/%{_kernel_ver}                        
        \
-%define ModprobeD $INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \
-                                                                               
                                                        \
-__install_kernel_modules() {                                                   
                        \
-%{!?debug:set +x;}                                                             
                                        \
-                                                                               
                                                        \
-for MODULE in {%{-m*},}; do                                                    
                                \
-       [ -n "${MODULE}" ] || continue                                          
                        \
-       MNAME=${MODULE##*/}                                                     
                                        \
-       install -m 644 -D ${MODULE}.ko 
%{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko       \
-       %{?-s:install -d %{ModprobeD}                                           
                        \
-               echo "alias ${MNAME} ${MNAME}-%{-s*}" >> 
%{ModprobeD}/%{-n*}.conf}      \
-done                                                                           
                                                \
-}                                                                              
                                                        \
-__install_kernel_modules                                                       
                                \
-unset INSTALLROOT                                                              
                                        \
-%{nil}
-
-%install_kernel_modules_compat(m:d:s:n:D:)                                     
                \
-%{!?-m:%{error:%{0}: Required module name (-m) missing}exit 1}         \
-%{!?-d:%{error:%{0}: Required module directory missing}exit 1}         \
-%{?-n:%{!?-s:%{error:%{0}: Modprobe .conf file requires module suffix}exit 1}} 
\
-                                                                               
                                                        \
-INSTALLROOT=%{-D*}                                                             
                                        \
-[ -n "$INSTALLROOT" ] || INSTALLROOT=$RPM_BUILD_ROOT                           
\
-                                                                               
                                                        \
-%define KernelD $INSTALLROOT/lib/modules/%{_kernel_ver}                        
        \
-%define ModprobeD $INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \
-                                                                               
                                                        \
-__install_kernel_modules() {                                                   
                        \
-%{!?debug:set +x;}                                                             
                                        \
-local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: 
up}}%{!?with_dist_kernel: nondist}' \
-                                                                               
                                                        \
-for MODULE in {%{-m*},}; do                                                    
                                \
-       [ -n "${MODULE}" ] || continue                                          
                        \
-       for cfg in ${cfgs:-dist}; do                                    \
-               [ "$cfg" = smp ] && suf=smp || suf=                             
                        \
-               MNAME=${MODULE##*/}                                             
                                        \
-               install -m 644 -D ${MODULE}-$cfg.ko                             
                        \\\
-                       %{KernelD}$suf/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko          
        \
-               %{?-s:install -d %{ModprobeD}$suf                               
                        \
-                       echo "alias ${MNAME} ${MNAME}-%{-s*}"                   
                \\\
-                       >> %{ModprobeD}$suf/%{-n*}.conf}                        
                        \
-       done                                                                    
                                                \
-done                                                                           
                                                \
-}                                                                              
                                                        \
-__install_kernel_modules                                                       
                                \
-unset INSTALLROOT                                                              
                                        \
-%{nil}
-
 # patchset macros
 # generate SourceX urls from range START STOP
 # Format can be SINGLE format char of %e, %f, %g, see seq(1)
diff --git a/rpm.macros.kernel b/rpm.macros.kernel
new file mode 100644
index 0000000..ece9e69
--- /dev/null
+++ b/rpm.macros.kernel
@@ -0,0 +1,329 @@
+# vim:ts=4 sw=4 noet ft=spec
+# Kernel specific macro definitions.
+# To make use of these macros insert the following line into your spec file:
+# %{load:%{_usrlibrpm}/macros.d/kernel}
+
+%__modinfo             /sbin/modinfo
+
+# Path to scripts to autogenerate gstreamer package dependencies,
+#
+# Note: Used iff _use_internal_dependency_generator is non-zero. The
+# helpers are also used by %{_rpmhome}/rpmdeps {--provides|--requires}.
+%__kernel_provides     %{_rpmhome}/kmod-deps.sh --provides --modinfo %__modinfo
+#__kernel_requires     %{_rpmhome}/kmod-deps.sh --requires --modinfo %__modinfo
+
+# Alternative kernel type/version
+%_alt_kernel   %{nil}%{?alt_kernel:-%{?alt_kernel}}
+%_build_kernels        
%{nil}%{?build_kernels:%{?build_kernels}}%{!?build_kernels:%{?alt_kernel}}
+
+%buildrequires_kernel  %(echo %{_build_kernels} | tr , '\\n' | while read n ; 
do \
+if [ -z "$n" -o "$n" = "head" ]; then \
+echo "BuildRequires:   kernel-module-build >= 3:2.6.20.2" \
+else \
+echo "BuildRequires:   kernel-$n-module-build >= 3:2.6.20.2" \
+fi; done)
+
+%create_kernel_packages        %(echo %{_build_kernels} | tr , '\\n' | while 
read n ; do \
+echo %%undefine alt_kernel \
+[ -z "$n" -o "$n" = "head" ] || echo %%define alt_kernel $n \
+echo %%kernel_pkg \
+done)
+
+%build_kernel_packages %(echo %{_build_kernels} | tr , '\\n' | while read n ; 
do \
+echo %%undefine alt_kernel \
+[ -z "$n" -o "$n" = "head" ] || echo %%define alt_kernel $n \
+echo %%build_kernel_pkg \
+done)
+
+%install_kernel_packages       %(echo %{_build_kernels} | tr , '\\n' | while 
read n ; do \
+echo %%undefine alt_kernel \
+[ -z "$n" -o "$n" = "head" ] || echo %%define alt_kernel $n \
+echo %%install_kernel_pkg \
+done)
+
+# The directory holding Linux kernel sources
+%_kernelsrcdir /usr/src/linux%{_alt_kernel}
+
+# rpm -qf on kernel version.h file
+%__kernel_qf()         %(R=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm 
-q --qf '%*' -f include/linux/version.h 2>/dev/null | grep -v 'is not'); echo 
${R:-ERROR})
+
+# kernel %{name} and kernel %{epoch}:%{version}-%{release} macro respecing 
alt_kernel
+%kernel_name   %(N=%{__kernel_qf %{N}}; echo ${N%%-headers})
+%kernel_version        %{__kernel_qf %|E?{%{E}:}|%{V}-%{R}}
+
+# -n drm to generate kernel%{_alt_kernel}-drm dependency
+%releq_kernel(n:)              %{kernel_name}%{?-n:-%{-n*}} = %{kernel_version}
+%releq_kernel_up(n:)   %{kernel_name}-up%{?-n:-%{-n*}} = %{kernel_version}
+%releq_kernel_smp(n:)  %{kernel_name}-smp%{?-n:-%{-n*}} = %{kernel_version}
+
+# -s post to generate Requires(post) dependency
+%requires_releq_kernel(s:n:)           Requires%{-s:(%{-s*})}: %releq_kernel
+%requires_releq_kernel_up(s:n:)                Requires%{-s:(%{-s*})}: 
%releq_kernel_up
+%requires_releq_kernel_smp(s:n:)       Requires%{-s:(%{-s*})}: 
%releq_kernel_smp
+
+# kernel version-release handling
+%__kernel_ver   %( \\
+       Z=$([ -f '%{_kernelsrcdir}/include/generated/utsrelease.h' ] && \\
+               awk -F'"' '/UTS_RELEASE/{print $2}' 
%{_kernelsrcdir}/include/{linux/version,generated/utsrelease}.h 2>/dev/null || 
\\
+               awk -F'"' '/UTS_RELEASE/{print $2}' 
%{_kernelsrcdir}/include/linux/{version,utsrelease}.h 2>/dev/null); \\
+       Z=${Z:-$(awk -F' = ' '/^VERSION/{v=$2} /^PATCHLEVEL/{p=$2} 
/^SUBLEVEL/{s=$2} /^EXTRAVERSION/{e=$2} END {printf("%d.%d.%d%s", v, p, s, e)}' 
\\
+               %{_kernelsrcdir}/Makefile 2>/dev/null)}; \\
+       echo ${Z:-ERROR}; \\
+)
+
+%_kernel_version_code   %( \\
+       Z=$(awk '/LINUX_VERSION_CODE/{print $3}' 
%{_kernelsrcdir}/include/linux/version.h 2>/dev/null); \\
+       echo ${Z:-ERROR}; \\
+)
+
+%_kernel_version_magic()        %(echo $((%{1} * 65536 + %{2} * 256 + %{3})))
+
+# `uname -r` used for building/installing kernel modules
+%_kernel_ver           %{!?_without_dist_kernel:%{__kernel_qf 
%{V}-%{R}}}%{?_without_dist_kernel:%{__kernel_ver}}
+# package version OR `uname -r` for non-dist kernel to be used in @release 
field
+%_kernel_ver_str       %(echo %{!?_without_dist_kernel:%{__kernel_qf 
%{V}-%{R}}}%{?_without_dist_kernel:%{__kernel_ver}} | tr '-' '_')
+
+#-----------------------------------------------------------------
+# Find and gzip all kernel modules
+#
+# Requires: find
+#
+#%no_install_post_compress_modules     1
+%__spec_install_post_compress_modules { \
+%{!?no_install_post_compress_modules: __spec_install_post_compress_modules() { 
\
+%{!?debug:set +x;} \
+       if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
+               q=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f 
-print); \
+               if [ "$q" ]; then \
+                       printf "Compress %d kernel modules..." $(echo "$q" | wc 
-l); \
+                       echo "$q" | xargs -r %{__gzip} -9nf; \
+                       echo "DONE"; \
+                       find $RPM_BUILD_ROOT/lib/modules -name '*o' -type l 
-printf "%p %l\n" | \
+                       while read a b; do ln -sf $b.gz $a.gz; rm -f $a; done; \
+               fi; \
+       fi; \
+}; __spec_install_post_compress_modules } }
+
+# Build modules for kernels 2.6
+# Author: Przemyslaw Iskra <[email protected]>
+#
+# Usage:
+#      %build_kernel_modules -m <modules> -C <directory>
+#
+#  remember that proper Makefile is still required
+# Options:
+#  -m <modules> (required) -- comma-separated list of modules to save,
+#              without .ko extension, may be placed in subdirectory
+#  -C <directory> -- change to <directory> before doing anything
+#  -p <arg>, -P <arg> -- arguments passeed to make scripts
+#  -c -- do not execute make clean
+#  <additional arguments> -- all additional arguments will be passed to
+#              make modules
+#
+# Additional patching supported via here document. Try:
+#      %build_kernel_modules -m module <<'EOF'
+#      your patch script here
+#      EOF
+# Don't use it unless patching depends on config options.
+
+# Developer note: don't touch it unless you know how to handle '\'.
+# - \ in script expands to nothing
+# - \\\ in script expands to \
+# - \\\ inside definition expands to nothing
+# - \\\\\\\ inside definition expands to \
+# - in last line \ has to touch arguments so arguments passing
+#   in new lines (using \) will be supported
+
+%build_kernel_modules(p:P:m:C:c)                                               
                        \
+%{!?-m:%{error:%{0}: Required module name/list missing} exit 1}                
\
+                                                                               
                                                        \
+%define Opts                                                                   
                                        \\\\\\\
+%if "%{_target_base_arch}" != "%{_host_base_arch}"                             
        \\\
+       %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == 
"i386" \\\
+       CC="%{__cc}" ARCH=%{_target_base_arch}                                  
                \\\
+       %else                                                                   
                                                \\\
+       ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\
+       %endif                                                                  
                                                \\\
+%else                                                                          
                                                \\\
+       CC="%{__cc}"                                                            
                                        \\\
+%endif                                                                         
                                                \
+%define        MakeOpts HOSTCC="%{__cc}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o 
\\\\\\\
+               O=$PWD/o %{?with_verbose:V=1} %{Opts}                           
                \
+                                                                               
                                                        \
+%{?-C:cd %{-C*}}                                                               
                                        \
+compile() {                                                                    
                                                \
+       local L="<" PATCH_SH;                                                   
                                \
+       [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)"                   
\
+       set -e -x                                                               
                                                \
+                                                                               
                                                        \
+       [ -r "%{_kernelsrcdir}/.config" ] || exit 1                             
                \
+       rm -rf o                                                                
                                                \
+       install -d o/include/linux o/include/generated o/arch/x86/include 
o/arch/powerpc/lib    \
+       ln -sf %{_kernelsrcdir}/.config o/.config                               
                \
+       ln -sf %{_kernelsrcdir}/Module.symvers o/Module.symvers                 
\
+       if [ -f %{_kernelsrcdir}/include/generated/autoconf.h ]; then   \
+               ln -sf %{_kernelsrcdir}/include/generated/autoconf.h 
o/include/generated/autoconf.h \
+               ln -s ../generated/autoconf.h o/include/linux/autoconf.h        
\
+       else                                                                    
                                                \
+               ln -sf %{_kernelsrcdir}/include/linux/autoconf.h 
o/include/linux/autoconf.h \
+       fi                                                                      
                                                        \
+       if [ -d %{_kernelsrcdir}/arch/x86/include/generated ]; then             
\
+               ln -s %{_kernelsrcdir}/arch/x86/include/generated 
o/arch/x86/include    \
+       fi                                                                      
                                                        \
+                                                                               
                                                        \
+       set +x                                                                  
                                                \
+       [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell    \
+       set -x                                                                  
                                                \
+                                                                               
                                                        \
+       install -d o/include/config                                             
                                \
+       touch o/include/config/MARKER                                           
                        \
+       ln -sf %{_kernelsrcdir}/include/config/auto.conf 
o/include/config/auto.conf     \
+       ln -sf %{_kernelsrcdir}/scripts o/scripts                               
                \
+                                                                               
                                                        \
+       %{!?-c:%{__make} -C %{_kernelsrcdir} clean                              
                \\\
+               RCS_FIND_IGNORE="-name '*.[ks]o' -o"                            
                \\\
+               ${1+"$@"}                                                       
                                                \\\
+               M=$PWD %{MakeOpts}}                                             
                                        \
+                                                                               
                                                        \
+       %{__make} -C %{_kernelsrcdir} modules                                   
                \\\
+               ${1+"$@"}                                                       
                                                \\\
+               M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts}                           
                \
+%{?-C:cd -}                                                                    
                                                \
+}                                                                              
                                                        \
+compile %{*}                                                                   
                                        \
+%{nil}
+
+%build_kernel_modules_compat(p:P:m:C:c)                                        
                        \
+%{!?-m:%{error:%{0}: Required module name/list missing} exit 1}                
\
+                                                                               
                                                        \
+%define Opts                                                                   
                                        \\\\\\\
+%if "%{_target_base_arch}" != "%{_host_base_arch}"                             
        \\\
+       %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == 
"i386" \\\
+       CC="%{__cc}" ARCH=%{_target_base_arch}                                  
                \\\
+       %else                                                                   
                                                \\\
+       ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\
+       %endif                                                                  
                                                \\\
+%else                                                                          
                                                \\\
+       CC="%{__cc}"                                                            
                                        \\\
+%endif                                                                         
                                                \
+%define        MakeOpts HOSTCC="%{__cc}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o 
\\\\\\\
+               O=$PWD/o %{?with_verbose:V=1} %{Opts}                           
                \
+                                                                               
                                                        \
+%{?-C:cd %{-C*}}                                                               
                                        \
+compile() {                                                                    
                                                \
+       local L="<" PATCH_SH;                                                   
                                \
+       [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)"                   
\
+       set -e -x                                                               
                                                \
+       local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: 
up}}%{!?with_dist_kernel: nondist}' \
+                                                                               
                                                        \
+for cfg in ${cfgs:-dist}; do                                        \
+       [ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1                         
        \
+                                                                               
                                                        \
+       rm -rf o                                                                
                                                \
+       install -d o/include/linux o/include/generated o/arch/powerpc/lib       
\
+       ln -sf %{_kernelsrcdir}/config-$cfg o/.config                           
        \
+       ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers    \
+       if [ -f %{_kernelsrcdir}/include/generated/autoconf-$cfg.h ]; then      
\
+               ln -sf %{_kernelsrcdir}/include/generated/autoconf-$cfg.h 
o/include/generated/autoconf.h \
+               ln -s ../generated/autoconf.h o/include/linux/autoconf.h        
\
+       else                                                                    
                                                \
+               ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h 
o/include/linux/autoconf.h \
+       fi                                                                      
                                                        \
+                                                                               
                                                        \
+       set +x                                                                  
                                                \
+       [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell    \
+       set -x                                                                  
                                                \
+                                                                               
                                                        \
+       %if %{with dist_kernel} || %(test -f %{_kernelsrcdir}/scripts/bin2c ; 
echo $?)  \
+               %{__make} -j1 -C %{_kernelsrcdir} prepare scripts               
        \\\
+                       %{-p*} %{-P*}                                           
                                        \\\
+                       %{MakeOpts}                                             
                                                \
+       %else                                                                   
                                                \
+               install -d o/include/config                                     
                                \
+               touch o/include/config/MARKER                                   
                        \
+               ln -sf %{_kernelsrcdir}/include/config/auto-$cfg.conf 
o/include/config/auto.conf        \
+               ln -sf %{_kernelsrcdir}/scripts o/scripts                       
                \
+       %endif                                                                  
                                                \
+                                                                               
                                                        \
+       %{!?-c:%{__make} -C %{_kernelsrcdir} clean                              
                \\\
+               RCS_FIND_IGNORE="-name '*.[ks]o' -o"                            
                \\\
+               ${1+"$@"}                                                       
                                                \\\
+               M=$PWD %{MakeOpts}}                                             
                                        \
+                                                                               
                                                        \
+       %{__make} -C %{_kernelsrcdir} modules                                   
                \\\
+               ${1+"$@"}                                                       
                                                \\\
+               M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts}                           
                \
+                                                                               
                                                        \
+       for MODULE in {%{-m*},}; do                                             
                                \
+               [ -z "${MODULE}" ] || mv ${MODULE}{,-$cfg}.ko                   
        \
+       done                                                                    
                                                \
+done                                                                           
                                                \
+%{?-C:cd -}                                                                    
                                                \
+}                                                                              
                                                        \
+compile %{*}                                                                   
                                        \
+%{nil}
+
+
+# Install kernel modules built by %build_kernel_modules
+# Author: Przemyslaw Iskra <[email protected]>
+#
+# Usage:
+#      %install_kernel_modules -m <modules> -d <directory>
+#
+# Options:
+#  -m <modules> (required) -- comma-separated list of modules to install,
+#              without .ko extension, may be placed in subdirectory
+#  -d <directory> (required) -- in what subdirectory modules should be
+#              installed (eg. misc, kernel/drivers/net)
+#  -s <suffix> -- suffix to use when installing modules, useful when module
+#              with same name exists in kernel already
+#  -n <file> -- name of modprobe config file to use (without .conf extension)
+#              for defining aliases, only useful with -s
+#  -D <directory> -- DESTDIR, base directory for installed files,
+#              defaults to RPM_BUILD_ROOT
+
+%install_kernel_modules(m:d:s:n:D:)                                            
                        \
+%{!?-m:%{error:%{0}: Required module name (-m) missing}exit 1}         \
+%{!?-d:%{error:%{0}: Required module directory missing}exit 1}         \
+%{?-n:%{!?-s:%{error:%{0}: Modprobe .conf file requires module suffix}exit 1}} 
\
+                                                                               
                                                        \
+INSTALLROOT=%{-D*}                                                             
                                        \
+[ -n "$INSTALLROOT" ] || INSTALLROOT=$RPM_BUILD_ROOT                           
\
+                                                                               
                                                        \
+%{!?debug:set +x;}                                                             
                                        \
+                                                                               
                                                        \
+for MODULE in {%{-m*},}; do                                                    
                                \
+       [ -n "${MODULE}" ] || continue                                          
                        \
+       MNAME=${MODULE##*/}                                                     
                                        \
+       install -m 644 -D ${MODULE}.ko 
$INSTALLROOT/lib/modules/%{_kernel_ver}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko  \
+       %{?-s:install -d $INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver}   
                                                                \
+               echo "alias ${MNAME} ${MNAME}-%{-s*}" >> 
$INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver}/%{-n*}.conf}      \
+done                                                                           
                                                \
+unset INSTALLROOT                                                              
                                        \
+%{nil}
+
+%install_kernel_modules_compat(m:d:s:n:D:)                                     
                \
+%{!?-m:%{error:%{0}: Required module name (-m) missing}exit 1}         \
+%{!?-d:%{error:%{0}: Required module directory missing}exit 1}         \
+%{?-n:%{!?-s:%{error:%{0}: Modprobe .conf file requires module suffix}exit 1}} 
\
+                                                                               
                                                        \
+INSTALLROOT=%{-D*}                                                             
                                        \
+[ -n "$INSTALLROOT" ] || INSTALLROOT=$RPM_BUILD_ROOT                           
\
+                                                                               
                                                        \
+%{!?debug:set +x;}                                                             
                                        \
+local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: 
up}}%{!?with_dist_kernel: nondist}' \
+                                                                               
                                                        \
+for MODULE in {%{-m*},}; do                                                    
                                \
+       [ -n "${MODULE}" ] || continue                                          
                        \
+       for cfg in ${cfgs:-dist}; do                                    \
+               [ "$cfg" = smp ] && suf=smp || suf=                             
                        \
+               MNAME=${MODULE##*/}                                             
                                        \
+               install -m 644 -D ${MODULE}-$cfg.ko                             
                        \\\
+                       
$INSTALLROOT/lib/modules/%{_kernel_ver}$suf/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko     
                \
+               %{?-s:install -d 
$INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver}$suf                        
                               \
+                       echo "alias ${MNAME} ${MNAME}-%{-s*}"                   
                \\\
+                       >> $INSTALLROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} 
$suf/%{-n*}.conf}                                               \
+       done                                                                    
                                                \
+done                                                                           
                                                \
+unset INSTALLROOT                                                              
                                        \
+%{nil}
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm-build-macros.git/commitdiff/1c834f1450daaf1d30c070a80eabdc24a230020b

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to