X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm.macros;h=fb44ba49b4492d80ddf696d04c427b16f9661d96;hb=af9d1e6130b1d42d8706c399f16c26794669e745;hp=303c0c39690a07013adafdc13f29eb66cc11191d;hpb=b6ce5bb6a311437b480b901de363d834770f1ab8;p=packages%2Frpm-build-macros.git diff --git a/rpm.macros b/rpm.macros index 303c0c3..fb44ba4 100644 --- a/rpm.macros +++ b/rpm.macros @@ -85,10 +85,10 @@ %_specdir %{expand:%%global _specdir %([ ! -d %{_topdir}/SPECS ] && echo %{_topdir}/%{name} || echo %{_topdir}/SPECS)}%_specdir %_sourcedir %{expand:%%global _sourcedir %([ ! -d %{_topdir}/SOURCES ] && echo %{_specdir} || echo %{_topdir}/SOURCES)}%_sourcedir -# BUILD/RPMS/SRPMS are one same level by default as packages dir, if these exist +# BUILD/RPMS/SRPMS are on same level by default as packages dir, if these exist # if they don't exist assume we are having custom topdir (which is not named as # "packages", i.e ~/rpm/kde/{kdelibs,BUILD/RPMS/SRPMS}) -# NOTE: readlink fails if some parent dir is not readable (/home/services/builder for example can't read /home/services), therfore the extra echo +# NOTE: readlink fails if some parent dir is not readable (/home/services/builder for example can't read /home/services), therefore the extra echo %_builddir %{expand:%%global _builddir %(if [ -d %{_topdir}/BUILD ]; then echo %{_topdir}/BUILD; else readlink -m %{_topdir}/../BUILD || echo %{_topdir}/../BUILD; fi)}%_builddir %_rpmdir %{expand:%%global _rpmdir %(if [ -d %{_topdir}/RPMS ]; then echo %{_topdir}/RPMS; else readlink -m %{_topdir}/../RPMS || echo readlink -m %{_topdir}/../RPMS; fi)}%_rpmdir %_srcrpmdir %{expand:%%global _srcrpmdir %(if [ -d %{_topdir}/SRPMS ]; then echo %{_topdir}/SRPMS; else readlink -m %{_topdir}/../SRPMS || echo readlink -m %{_topdir}/../SRPMS; fi)}%_srcrpmdir @@ -208,6 +208,16 @@ } }') +# override %__spec_build_pre and %__spec_install_pre from macros.rpmbuild +# adding %{_clean_env} +%__spec_build_pre %{_clean_env}\ +%{___build_pre}\ +%{nil} +%__spec_install_pre %{_clean_env}\ +%{___build_pre}\ +%{?buildroot:%{__rm} -rf '%{buildroot}'; %{__mkdir_p} '%{buildroot}'}\ +%{nil} + #----------------------------------------------------------------- %configure2_13 { \ if [ -n "$LINGUAS" ]; then unset LINGUAS; fi; \ @@ -916,7 +926,7 @@ fi; \ %ruby_archdir %{expand:%%global ruby_archdir %(%{__ruby} -r rbconfig -e 'print RbConfig::CONFIG["archdir"]' 2>/dev/null || echo ERROR)}%ruby_archdir %ruby_libdir %{expand:%%global ruby_libdir %(%{__ruby} -r rbconfig -e 'print RbConfig::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR)}%ruby_libdir -%ruby_ridir %{expand:%%global ruby_ridir %(%{__ruby} -r rbconfig -e 'include Config; print File.join(CONFIG["datadir"], "ri", CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR)}%ruby_ridir +%ruby_ridir %{expand:%%global ruby_ridir %(%{__ruby} -r rbconfig -e 'print File.join(RbConfig::CONFIG["datadir"], "ri", RbConfig::CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR)}%ruby_ridir %ruby_rubylibdir %{expand:%%global ruby_rubylibdir %(%{__ruby} -r rbconfig -e 'print RbConfig::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR)}%ruby_rubylibdir %ruby_vendorarchdir %{expand:%%global ruby_vendorarchdir %(%{__ruby} -r rbconfig -e 'print RbConfig::CONFIG["vendorarchdir"]' 2>/dev/null || echo ERROR)}%ruby_vendorarchdir %ruby_vendorlibdir %{expand:%%global ruby_vendorlibdir %(%{__ruby} -r rbconfig -e 'print RbConfig::CONFIG["vendorlibdir"]' 2>/dev/null || echo ERROR)}%ruby_vendorlibdir @@ -958,8 +968,11 @@ fi; \ # NOTE: error output must be empty. otherwise can't build pecl packages if no php*-devel is installed %php_suffix %{expand:%%global php_suffix %(c=$(php-config --sysconfdir 2>/dev/null) || echo '' && echo ${c#/etc/php})%%{nil}}%php_suffix +# phpXY, version always present for using current php version (in regards of php*-devel package) +%php_versuffix %{expand:%%global php_versuffix %((IFS=.; set -- $(php-config --version); echo $1$2))%%{nil}}%php_versuffix + # php cli. version that php headers are installed for -%__php /usr/bin/%{php_name} +%__php /usr/bin/php%{php_versuffix} # helper macro %__php_api_requires(v:) Requires: %{php_name}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} @@ -1763,7 +1776,27 @@ compile() { \ M=$PWD CONSTIFY_PLUGIN="" %{MakeOpts} \ %{?-C:cd -} \ } \ -compile_old() { \ +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 \ @@ -1778,7 +1811,7 @@ for cfg in ${cfgs:-dist}; do \ 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 \ + 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 \ @@ -1799,7 +1832,7 @@ for cfg in ${cfgs:-dist}; do \ %endif \ \ %{!?-c:%{__make} -C %{_kernelsrcdir} clean \\\ - RCS_FIND_IGNORE="-name '*.[ks]o' -o" \\\ + RCS_FIND_IGNORE="-name '*.[ks]o' -o" \\\ ${1+"$@"} \\\ M=$PWD %{MakeOpts}} \ \ @@ -1813,11 +1846,7 @@ for cfg in ${cfgs:-dist}; do \ done \ %{?-C:cd -} \ } \ -if [ -r "%{_kernelsrcdir}/.config" ]; then \ - compile %{*} \ -else \ - compile_old %{*} \ -fi \ +compile %{*} \ %{nil} @@ -1861,7 +1890,22 @@ for MODULE in {%{-m*},}; do \ echo "alias ${MNAME} ${MNAME}-%{-s*}" >> %{ModprobeD}/%{-n*}.conf} \ done \ } \ -__install_kernel_modules_old() { \ +__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}' \ \ @@ -1878,11 +1922,7 @@ for MODULE in {%{-m*},}; do \ done \ done \ } \ -if [ -r "%{_kernelsrcdir}/.config" ]; then \ - __install_kernel_modules \ -else \ - __install_kernel_modules_old \ -fi \ +__install_kernel_modules \ unset INSTALLROOT \ %{nil} @@ -2170,20 +2210,25 @@ else: \ # Requirements: # Requires: grep # Requires: sed >= 4.0 -# BuildRequires: rpmbuild(macros) >= 1.552 +# BuildRequires: rpmbuild(macros) >= 1.685 %nagios_nrpe(a:d:c:f:) {\ - m=$(md5sum < /etc/nagios/nrpe.cfg); \ + if %{__grep} -q '^include_dir=/etc/nagios/nrpe.d' /etc/nagios/nrpe.cfg && [ -d /etc/nagios/nrpe.d ]; then \ + file=/etc/nagios/nrpe.d/%{-a*}%{-d*}.cfg; \ + else \ + file=/etc/nagios/nrpe.cfg; \ + fi; \ + m=$(test -f $file && md5sum < $file); \ %{-a:# on -a and config exists \ if [ -f /etc/nagios/nrpe.cfg ]; then \ - if ! %{__grep} -q '^command\[%{-a*}\]' /etc/nagios/nrpe.cfg; then \ - %{__sed} -ne 's/^[ \t]*command_line[ \t]\+\(.\+\)/command[%{-a*}]=\1/p' %{-f*} >> /etc/nagios/nrpe.cfg; \ + if [ ! -f $file ] || ! %{__grep} -q '^command\[%{-a*}\]' $file; then \ + %{__sed} -ne 's/^[ \t]*command_line[ \t]\+\(.\+\)/command[%{-a*}]=\1/p' %{-f*} >> $file; \ fi; \ fi;} \ %{-d:# on package remove, -d and config exists \ - if [ "$1" = "0" -a -f /etc/nagios/nrpe.cfg ]; then \ - %{__sed} -i -e '/^[ \t]*command\[%{-d*}\]/d' /etc/nagios/nrpe.cfg; \ + if [ "$1" = "0" -a -f $file ]; then \ + %{__sed} -i -e '/^[ \t]*command\[%{-d*}\]/d' $file; \ fi;} \ - if [ "$m" != "$(md5sum < /etc/nagios/nrpe.cfg)" ]; then \ + if [ "$m" != "$(md5sum < $file)" ]; then \ %service -q nrpe restart; \ fi; \ }%{nil} @@ -2215,6 +2260,7 @@ fi; \ # pre/post script for -upstart subpackages # # Author: Jacek Konieczny +# Author: Elan Ruusamäe # # Usage: # %upstart_post service_name @@ -2228,15 +2274,16 @@ fi; \ # %upstart_postun %{name} # # Requirements: -# BuildRequires: rpmbuild(macros) >= 1.560 +# BuildRequires: rpmbuild(macros) >= 1.690 # Requires: rc-scripts >= 0.4.3 # migrate from init script to upstart job %upstart_post() \ - if [ -f /var/lock/subsys/%1 ]; then \ + if [ -x /sbin/initctl ] && [ -f /var/lock/subsys/%1 ]; then \ /sbin/service --no-upstart %1 stop \ /sbin/service %1 start \ - fi + fi \ +%{nil} # restart the job after upgrade or migrate to init script on removal # cannot be stopped with 'service' as /etc/init/$name.conf may be missing @@ -2245,7 +2292,8 @@ fi; \ if [ -x /sbin/initctl ] && /sbin/initctl status %1 2>/dev/null | grep -q 'running' ; then \ /sbin/initctl stop %1 >/dev/null 2>&1 \ [ -f /etc/rc.d/init.d/%1 -o -f /etc/init/%1.conf ] && { echo -n "Re-"; /sbin/service %1 start; }; \ - fi + fi \ +%{nil} # Haskell Macros # BuildRequires: rpmbuild(macros) >= 1.608 @@ -2376,4 +2424,15 @@ want_enable_service() { \ %systemduserunitdir /usr/lib/systemd/user %systemdtmpfilesdir /usr/lib/tmpfiles.d +#----------------------------------------------------------------- +# Update hardware database index +# +# Requirements: +# BuildRequires: rpmbuild(macros) >= 1.691 +# Requires: udev-core >= 1:196 + +%udev_hwdb_update() \ +/sbin/udevadm hwdb --update >/dev/null 2>&1 || : \ +%{nil} + # EOF