[packages/rpm-build-macros] - split all kernel macros to separate file and install it in place of one provided by rpm - 1.699
baggins
baggins at pld-linux.org
Wed Dec 10 21:43:15 CET 2014
commit 1c834f1450daaf1d30c070a80eabdc24a230020b
Author: Jan Rękorajski <baggins at pld-linux.org>
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 <sparky at pld-linux.org>
-#
-# 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 <sparky at pld-linux.org>
-#
-# 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 <sparky at pld-linux.org>
+#
+# 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 <sparky at pld-linux.org>
+#
+# 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
More information about the pld-cvs-commit
mailing list