X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm-build-macros.git;a=blobdiff_plain;f=rpm.macros;h=5a9c6d2c1e507fb8460c212b79a8f2083c3f8d78;hp=4fc0798e1b0939eb3be6142a609906b5bd7b81e6;hb=0a9bb9747529d8f89a74f6db5f317abe1454d8ac;hpb=0b39f25d2c9c0c998019c6f0422b32fb97f2c19c diff --git a/rpm.macros b/rpm.macros index 4fc0798..5a9c6d2 100644 --- a/rpm.macros +++ b/rpm.macros @@ -1,11 +1,10 @@ -# $Revision$, $Date$ # vim:ts=4 sw=4 noet ft=spec # # PLD Linux rpm macros. # # can be used by builder script to check for version -%rpm_build_macros %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?}) +%rpm_build_macros $Revision$ %epoch 0 %x8664 x86_64 amd64 ia32e @@ -37,7 +36,7 @@ %__cmake /usr/bin/cmake %_smp_mflags %(_NCPUS=$(/usr/bin/getconf _NPROCESSORS_ONLN); \\\ - [ "$_NCPUS" -gt 1 ] && echo "-j$(($_NCPUS * 2))") + [ "$_NCPUS" -gt 2 ] && echo "-j$(($_NCPUS / 2))") %__gettextize { \ if grep -qs 'AM_GNU_GETTEXT.*external' configure.{ac,in} ; then \ @@ -429,9 +428,9 @@ CXXFLAGS="%{rpmcxxflags}" \ %bootstrap_release() %{!?with_bootstrap:%{1}%{?2:.%{2}}}%{?with_bootstrap:%{!?2:%(expr %{1} - 1)}%{?2:%{1}.%(expr %{2} - 1)}.zzz.bootstrap} # -n drm to generate kernel%{_alt_kernel}-drm dependency -%releq_kernel(n:) %{expand:%%global releq_kernel %(R=$(LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}} = %|E?{%{E}:}|%{V}-%{R}' -f %{_kernelsrcdir}/include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel -%releq_kernel_up(n:) %{expand:%%global releq_kernel_up %(R=$(LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}}-up = %|E?{%{E}:}|%{V}-%{R}' -f %{_kernelsrcdir}/include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel_up -%releq_kernel_smp(n:) %{expand:%%global releq_kernel_smp %(R=$(LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}}-smp = %|E?{%{E}:}|%{V}-%{R}' -f %{_kernelsrcdir}/include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel_smp +%releq_kernel(n:) %{expand:%%global releq_kernel %(R=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}} = %|E?{%{E}:}|%{V}-%{R}' -f include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel +%releq_kernel_up(n:) %{expand:%%global releq_kernel_up %(R=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}}-up = %|E?{%{E}:}|%{V}-%{R}' -f include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel_up +%releq_kernel_smp(n:) %{expand:%%global releq_kernel_smp %(R=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm -q --qf '%{N}%{?-n:-%{-n*}}-smp = %|E?{%{E}:}|%{V}-%{R}' -f include/linux/version.h 2>/dev/null | grep -v 'is not' | sed -e 's:-headers::;s:-config::'); echo ${R:-ERROR})}%releq_kernel_smp # -s post to generate Requires(post) dependency %requires_releq_kernel(s:n:) Requires%{-s:(%{-s*})}: %releq_kernel @@ -450,6 +449,12 @@ CXXFLAGS="%{rpmcxxflags}" \ # Requires: name >= version (version based on querying package %2) %requires_ge_to(r) %{!?2:ERROR}%{?3:ERROR}%{?2:%{!?3:%(if ! LC_ALL=C rpm -q --qf 'Requires: %1 >= %|E?{%{E}:}|%{V}%{?-r:-%{R}}\\n' %2 | grep '^Requires:'; then echo "BuildRequires: %2"; fi)}} +# \helper for renaming packages +# %rename old-package +%rename() \ +Obsoletes: %{1} < %{?epoch:%{epoch}:}%{?version:%{version}}%{?release:-%{release}} \ +Provides: %{1} = %{?epoch:%{epoch}:}%{?version:%{version}}%{?release:-%{release}} + %apache_modules_api %{expand:%%global apache_modules_api %(awk '/#define MODULE_MAGIC_NUMBER_MAJOR/ {print $3}' /usr/include/apache/ap_mmn.h 2>/dev/null || echo ERROR)}%apache_modules_api # kernel version-release handling @@ -459,8 +464,8 @@ CXXFLAGS="%{rpmcxxflags}" \ echo ${Z:-ERROR}; \\ )}%__kernel_ver -%__kernel_rel %{expand:%%global __kernel_rel %(Z=$(LC_ALL=C rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{R}" | grep -v "is not"); echo ${Z:-ERROR})}%__kernel_rel -%__kernel_rpmvr %{expand:%%global __kernel_rpmvr %(Z=$(LC_ALL=C rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{V}-%{R}" | grep -v "is not"); echo ${Z:-ERROR})}%__kernel_rpmvr +%__kernel_rel %{expand:%%global __kernel_rel %(Z=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm -qf include/linux/fs.h 2>/dev/null --qf "%{R}" | grep -v "is not"); echo ${Z:-ERROR})}%__kernel_rel +%__kernel_rpmvr %{expand:%%global __kernel_rpmvr %(Z=$(cd %{_kernelsrcdir} 2>/dev/null && LC_ALL=C rpm -qf include/linux/fs.h 2>/dev/null --qf "%{V}-%{R}" | grep -v "is not"); echo ${Z:-ERROR})}%__kernel_rpmvr %_kernel_ver %{expand:%%global _kernel_ver %{__kernel_ver}%{?with_dist_kernel:%(echo %{__kernel_ver} | grep -q -e - || echo -%{__kernel_rel})}}%_kernel_ver %_kernel_ver_str %{expand:%%global _kernel_ver_str %(echo %{!?_without_dist_kernel:%{__kernel_rpmvr}}%{?_without_dist_kernel:%{__kernel_ver}} | sed -e 's/-/_/g')}%_kernel_ver_str @@ -521,7 +526,9 @@ CXXFLAGS="%{rpmcxxflags}" \ l=${l#/usr/share/man/}; \ l=${l#/usr/X11R6/man/}; \ else \ - l=$m; \ + l=${a#$RPM_BUILD_ROOT$i/}; \ + l=${l%/*}; \ + l="$l/$m"; \ fi; \ rm -f $a; \ echo ".so $l" > $a; \ @@ -836,9 +843,21 @@ fi; \ # %__noautoreqfiles %(sed -e s'/#.*//' /etc/rpm/noautoreqfiles)%{?_noautoreqfiles: %{_noautoreqfiles}} %__noautoprovfiles %(sed -e s'/#.*//' /etc/rpm/noautoprovfiles)%{?_noautoprovfiles: %{_noautoprovfiles}} -%__noautoreq %(sed -e s'/#.*//' /etc/rpm/noautoreq)%{?_noautoreq: %{_noautoreq}} %__noautoreqdep %(sed -e s'/#.*//' /etc/rpm/noautoreqdep)%{?_noautoreqdep: %{_noautoreqdep}} %__noautoprov %(sed -e s'/#.*//' /etc/rpm/noautoprov)%{?_noautoprov: %{_noautoprov}} +%__noautoreq %(sed -e s'/#.*//' /etc/rpm/noautoreq) \ + %{?_noautoreq: %{_noautoreq}} \ + %{?_noautoreq_pear: %{__noauto_regexp_helper -p pear %{_noautoreq_pear}}} \ + %{?_noautoreq_perl: %{__noauto_regexp_helper -p perl %{_noautoreq_perl}}} \ + %{nil} + +# helper for wrapping _noautoreq between perl() or pear() +# Author: Elan Ruusamäe +# Usage: +# BuildRequires: rpmbuild(macros) >= 1.654 +# %define _noautoreq_pear Excluded.php PEAR/Something.php +# %define _noautoreq_perl Apache::.* +%__noauto_regexp_helper(p:) %(echo "%*" | awk 'BEGIN{RS=" "}{printf("%{-p*}\\\\\\(%%s\\\\\\) ", $1)}') #%_noautocompressdoc %{nil} # @@ -896,21 +915,26 @@ fi; \ # "_ts" if ZTS enabled, empty otherwise %zend_zts %{expand:%%global _zend_zts_%{?_zend_zts} 1}%{?_zend_zts_1:_ts} +# name of php package +%php_name php%{?php_suffix} +# use rpmbuild -D 'php_suffix 54' to build php extension for php 5.4 +%php_suffix %{nil} + # helper macro -%__php_api_requires(v:) Requires: php%{-v*}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} +%__php_api_requires(v:) Requires: %{php_name}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} # macros for public use # for php extensions (php-pecl) %requires_php_extension %{__php_api_requires modules_api php_api_version} \ %{__php_api_requires zend_module_api} \ -%{__php_api_requires -v %php_major_version debug php_debug} \ -%{__php_api_requires -v %php_major_version thread-safety _zend_zts} +%{__php_api_requires debug php_debug} \ +%{__php_api_requires thread-safety _zend_zts} # for zend extensions %requires_zend_extension %{__php_api_requires zend_module_api} \ %{__php_api_requires zend_extension_api} \ -%{__php_api_requires -v %php_major_version debug php_debug} \ -%{__php_api_requires -v %php_major_version thread-safety _zend_zts} +%{__php_api_requires debug php_debug} \ +%{__php_api_requires thread-safety _zend_zts} # for php pdo modules (php-pecl-PDO_*) %requires_php_pdo_module %{__php_api_requires PDO_API php_pdo_api_version} @@ -1085,6 +1109,7 @@ fi; \ %xmms_effect_plugindir %{expand:%%global xmms_effect_plugindir %(xmms-config --effect-plugin-dir 2>/dev/null || echo ERROR)}%xmms_effect_plugindir %xmms_general_plugindir %{expand:%%global xmms_general_plugindir %(xmms-config --general-plugin-dir 2>/dev/null || echo ERROR)}%xmms_general_plugindir +%_host_base_arch %{expand:%%global _host_base_arch %(echo %{_host_cpu} | sed 's/i.86/i386/;s/athlon/i386/;s/pentium./i386/;s/amd64/x86_64/;s/ia32e/x86_64/;s/sparcv./sparc/;s/arm.*/arm/')}%_host_base_arch %_target_base_arch %{expand:%%global _target_base_arch %(echo %{_target_cpu} | sed 's/i.86/i386/;s/athlon/i386/;s/pentium./i386/;s/amd64/x86_64/;s/ia32e/x86_64/;s/sparcv./sparc/;s/arm.*/arm/')}%_target_base_arch # user/group checking macros @@ -1475,7 +1500,7 @@ fi \ # Command invoking PEAR CLI # Same as /usr/bin/pear, except we force GMT timezone -%__pear %__php -doutput_buffering=1 -dopen_basedir="" -dmemory_limit=-1 -ddate.timezone=GMT %{php_pear_dir}/pearcmd.php +%__pear %__php -doutput_buffering=1 -dopen_basedir="" -dmemory_limit=-1 -ddate.timezone=GMT /usr/share/pear/pearcmd.php %pear_install(a:d:n:zD) \ %__pear \\\ @@ -1629,8 +1654,8 @@ done \ %{!?-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" \\\ +%if "%{_target_base_arch}" != "%{_host_base_arch}" \\\ + %if "%{_host_base_arch}" == "x86_64" && "%{_target_base_arch}" == "i386" \\\ CC="%{kgcc}" ARCH=%{_target_base_arch} \\\ %else \\\ ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\ @@ -1643,6 +1668,45 @@ done \ \ %{?-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_old() { \ local L="<" PATCH_SH; \ [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)" \ set -e -x \ @@ -1692,7 +1756,11 @@ for cfg in ${cfgs:-dist}; do \ done \ %{?-C:cd -} \ } \ -compile %{*}\ +if [ -r "%{_kernelsrcdir}/.config" ]; then \ + compile %{*} \ +else \ + compile_old %{*} \ +fi \ %{nil} @@ -1721,6 +1789,17 @@ compile %{*}\ %define ModprobeD $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \ \ __install_kernel_modules() { \ +%{!?debug:set +x;} \ + \ +for MODULE in {%{-m*},}; do \ + [ -n "${MODULE}" ] || continue \ + MNAME=${MODULE##*/} \ + install -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_old() { \ %{!?debug:set +x;} \ local cfgs='%{?with_dist_kernel:%{?with_smp: smp}%{?with_up: up}}%{!?with_dist_kernel: nondist}' \ \ @@ -1737,7 +1816,11 @@ for MODULE in {%{-m*},}; do \ done \ done \ } \ -__install_kernel_modules \ +if [ -r "%{_kernelsrcdir}/.config" ]; then \ + __install_kernel_modules \ +else \ + __install_kernel_modules_old \ +fi \ %{nil} # patchset macros @@ -2078,12 +2161,21 @@ fi; \ # pre/post script for packages supporting systemd units # # Author: Bartlomiej Zimon +# Jan Rękorajski # # Usage: # %systemd_reload +# %systemd_service service_name1.service service_name2.service +# %systemd_service_enable service_name1.service service_name2.service +# %systemd_service_disable service_name1.service service_name2.service +# %systemd_service_start service_name1.service service_name2.service +# %systemd_service_stop service_name1.service service_name2.service +# %systemd_service_restart service_name1.service service_name2.service +# %systemd_service_reload service_name1.service service_name2.service +# # %systemd_post service_name1.service service_name2.service # %systemd_preun service_name1.service service_name2.service -# %systend_trigger service_name1.service service_name2.service +# %systemd_trigger service_name1.service service_name2.service # # Sample: # %post @@ -2099,11 +2191,47 @@ fi; \ # %systemd_trigger %{name}.service # # Requirements: -# BuildRequires: rpmbuild(macros) >= 1.627 -# Requires: systemd-units >= 37-0.10 +# BuildRequires: rpmbuild(macros) >= 1.647 +# Requires: systemd-units >= 38 %systemd_reload /bin/systemd_booted && SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog /bin/systemctl --quiet daemon-reload || : +%systemd_service_enable() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemctl --quiet enable %{*} || : \ + /bin/systemd_booted && echo 'Run "/bin/systemctl start %{*}" to start %{*}.' || : \ +%{nil} + +%systemd_service_disable() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemctl --quiet disable %{*} || : \ +%{nil} + +%systemd_service() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet %{*} || : \ +%{nil} + +%systemd_service_start() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet start %{*} || : \ +%{nil} + +%systemd_service_stop() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet stop %{*} || : \ +%{nil} + +%systemd_service_restart() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet try-restart %{*} || : \ +%{nil} + +%systemd_service_reload() \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet reload %{*} || : \ +%{nil} + %systemd_trigger() \ want_enable_service() { \ [ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm \ @@ -2124,22 +2252,23 @@ want_enable_service() { \ /bin/systemd_booted && /bin/systemctl --quiet daemon-reload || : \ if [ $1 -eq 1 ]; then \ /bin/systemctl --quiet enable %{*} || : \ - fi \ - if [ $1 -gt 1 ] && [ -z "$NORESTART" ]; then \ - /bin/systemctl --quiet try-restart %{*} || : \ + /bin/systemd_booted && echo 'Run "/bin/systemctl start %{*}" to start %{*}.' || : \ + elif [ -z "$NORESTART" ]; then \ + /bin/systemd_booted && /bin/systemctl --quiet try-restart %{*} || : \ + else \ + /bin/systemd_booted && echo 'Run "/bin/systemctl restart %{*}" to restart %{*}.' || : \ fi \ %{nil} %systemd_preun() \ if [ $1 -eq 0 ]; then \ - export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog; \ - /bin/systemctl --no-reload --quiet disable %{*} || : \ - if /bin/systemd_booted; then \ - /bin/systemctl --quiet stop %{*} || : \ - fi \ + export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog \ + /bin/systemd_booted && /bin/systemctl --quiet stop %{*} || : \ + /bin/systemctl --quiet disable %{*} || : \ fi \ %{nil} %systemdunitdir /lib/systemd/system +%systemdtmpfilesdir /usr/lib/tmpfiles.d # EOF