X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm.macros;h=ffd87bcfcc80b9c220f1852a1b4cdd06d9be7ef6;hb=c4ea867f8777f7d05d27836c385b6702a888b766;hp=94847f7b2537c879ec0e00ea5ff7a91fe9503d60;hpb=febce2c9358b86798c0d5c94198e9b5c69073707;p=packages%2Frpm.git diff --git a/rpm.macros b/rpm.macros index 94847f7..ffd87bc 100644 --- a/rpm.macros +++ b/rpm.macros @@ -15,7 +15,6 @@ %__autopoint autopoint --force %__gettextize { \ -if ! gettextize --version | grep -q '0\.10\.' ; then \ if grep -qs 'AM_GNU_GETTEXT.*external' configure.{ac,in} ; then \ gettextize --copy --force --no-changelog; \ else \ @@ -24,9 +23,6 @@ if ! gettextize --version | grep -q '0\.10\.' ; then \ if [ ! -f po/Makevars ]; then \ cp -f po/Makevars{.template,}; \ fi; \ -else \ - gettextize --copy --force; \ -fi; \ } %__glib_gettextize glib-gettextize --copy --force @@ -55,7 +51,8 @@ fi; \ #----------------------------------------------------------------- # # (re)definition of %{rpm*flags} with %filterout_* support -# Requires: awk +# BuildRequires: awk +# BuildRequires: rpmbuild(macros) >= 1.315 # # Flags specified in %filterout_* are removed from %rpm*flags, exactly: # %rpmcflags = %optflags - %filterout - %filterout_c - %filterout_ld @@ -66,7 +63,7 @@ fi; \ # as regular expression it must be escaped twice. %filter_out \ - for (i in I) { A=0; \ + for (i = 1; i in I; i++) { A=0; \ for (f in F) { \ if (I[i] ~ "^" F[f] "$") A=1; \ }; \ @@ -112,6 +109,7 @@ fi; \ CFLAGS="${CFLAGS:-%rpmcflags}" ; export CFLAGS ; \ CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" ; export CXXFLAGS ; \ FFLAGS="${FFLAGS:-%rpmcflags}" ; export FFLAGS ; \ + FCFLAGS="${FCFLAGS:-%rpmcflags}" ; export FCFLAGS ; \ CPPFLAGS="${CPPFLAGS:-}" ; export CPPFLAGS ; \ %{?__cc:CC="%{__cc}" ; export CC ; } \ %{?__cxx:CXX="%{__cxx}" ; export CXX ; } \ @@ -148,6 +146,15 @@ CXXFLAGS="%{rpmcxxflags}" \ %__scons /usr/bin/scons %scons { \ %{__scons} \ + LDFLAGS="${LDFLAGS:-%rpmldflags}" \ + CFLAGS="${CFLAGS:-%rpmcflags}" \ + CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" \ + FFLAGS="${FFLAGS:-%rpmcflags}" \ + CPPFLAGS="${CPPFLAGS:-}" \ + %{?__cc:CC="%{__cc}"} \ + %{?__cxx:CXX="%{__cxx}"} \ + libsuffix=%{_lib} \ + prefix=%{_prefix} \ } # waf. see waf.spec @@ -171,6 +178,7 @@ CXXFLAGS="%{rpmcxxflags}" \ CFLAGS="${CFLAGS:-%rpmcflags}" \ CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" \ FFLAGS="${FFLAGS:-%rpmcflags}" \ + FCFLAGS="${FCFLAGS:-%rpmcflags}" \ CPPFLAGS="${CPPFLAGS:-}" \ %{?__cc:CC="%{__cc}"} \ %{?__cxx:CXX="%{__cxx}"} \ @@ -280,10 +288,8 @@ unset DISPLAY ||:\ # Requires name = version-release %requires_releq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}-%%{release}\\n' | sed -e 's/ (none):/ /' | grep -v "is not") -%releq_kernel_up() %((LC_ALL="C" rpm -qf --qf '%%{name}-up = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)") -%releq_kernel_smp() %((LC_ALL="C" rpm -qf --qf '%%{name}-smp = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)") -%requires_releq_kernel_up(s:) Requires%{-s:(%{-s*})}: %releq_kernel_up -%requires_releq_kernel_smp(s:) Requires%{-s:(%{-s*})}: %releq_kernel_smp +%releq_kernel() %((LC_ALL="C" rpm -qf --qf '%%{name} = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)") +%requires_releq_kernel(s:) Requires%{-s:(%{-s*})}: %releq_kernel %requires_eq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not") %requires_eq_to() %(LC_ALL="C" rpm -q --qf 'Requires: %1 = %%{epoch}:%%{version}\\n' %2 | sed -e 's/ (none):/ /' | grep -v "is not") @@ -315,6 +321,8 @@ unset DISPLAY ||:\ ; do echo $l; done >> %1 \ } +# vim - " + # minimum file size needed for compressed documents. # just smaller files than this get larger when compressed. # some stats: @@ -331,14 +339,20 @@ unset DISPLAY ||:\ #%no_install_post_compress_docs 1 %__spec_install_post_compress_docs { \ %{!?no_install_post_compress_docs:__spec_install_post_compress_docs() { \ - echo "Compress man and info pages."; \ - for i in /usr/share/man /usr/X11R6/man /usr/share/info; do \ + for i in /usr/share/man /usr/X11R6/man; do \ if [ -d "$RPM_BUILD_ROOT$i" ]; then \ + echo "Compress man pages: $i"; \ find "$RPM_BUILD_ROOT$i" -name '*.bz2' -print | xargs -r %{__bzip2} -df; \ find "$RPM_BUILD_ROOT$i" -name '*.gz' -print | xargs -r %{__gzip} -dnf; \ find "$RPM_BUILD_ROOT$i" -type f -size +%{_min_compress_bytes}c -print | xargs -r %{__gzip} -9nf; \ fi; \ done; \ + if [ -d "$RPM_BUILD_ROOT%{_infodir}" ]; then \ + echo "Compress info pages: %{_infodir}"; \ + find "$RPM_BUILD_ROOT%{_infodir}" -name '*.bz2' -print | xargs -r %{__bzip2} -df; \ + find "$RPM_BUILD_ROOT%{_infodir}" -name '*.gz' -print | xargs -r %{__gzip} -dnf; \ + find "$RPM_BUILD_ROOT%{_infodir}" -name '*.info*' -type f -size +%{_min_compress_bytes}c -print | xargs -r %{__gzip} -9nf; \ + fi; \ }; __spec_install_post_compress_docs } } #----------------------------------------------------------------- @@ -349,26 +363,43 @@ unset DISPLAY ||:\ #%no_install_post_strip 1 %__spec_install_post_strip {%{!?debug: \ %{!?no_install_post_strip:__spec_install_post_strip() { \ - if [ -d "$RPM_BUILD_ROOT" ]; then \ - echo "Strip executable binaries, archives and shared object files."; \ - filelist=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*\.debug" %{?_noautostrip:! -regex "%{_noautostrip}"}`; \ - elfexelist=`echo $filelist | xargs -r file | \ - awk '/ELF.*executable/ {print $1}' | cut -d: -f1`; \ - elfsharedlist=`echo $filelist | xargs -r file | \ - awk '/LF.*shared object/ {print $1}' | cut -d: -f1`; \ - elfarchiveslist=`echo $filelist | xargs -r file | \ - awk '/current ar archive/ {print $1}' | cut -d: -f1`; \ +if [ -d "$RPM_BUILD_ROOT" ]; then \ + if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \ + modulelist=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f -print); \ + modulecount=$(echo -n "$modulelist" | wc -l); \ + if [ "$modulecount" -gt 0 ]; then \ + printf "Stripping %d kernel modules..."; \ + echo "$modulelist" | xargs -l512 chmod u+w; \ + echo "$modulelist" | xargs -l512 %{__strip} --strip-unneeded --remove-section=.comment --remove-section=.note.GNU-stack; \ + echo "DONE"; \ + fi; \ + fi; \ + filelist=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*\.debug" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautostrip:! -regex "%{_noautostrip}"}`; \ + # vim - " \ + if [ -z "$filelist" ]; then \ + return; \ + fi; \ + filetypes=`echo "$filelist" | xargs -r -d'\\n' file`; \ + elfexelist=`echo "$filetypes" | awk -F: '/ELF.*executable/ {print $1}'`; \ + elfsharedlist=`echo "$filetypes" | awk -F: '/LF.*shared object/ {print $1}'`; \ + archiveslist=`echo "$filetypes" | awk -F '/current ar archive/ {print $1}'`; \ if [ -n "$elfexelist" ]; then \ + printf "Stripping %d ELF executables..." $(echo "$elfexelist" | wc -l); \ chmod u+w $elfexelist; \ %{__strip} --remove-section=.note --remove-section=.comment $elfexelist; \ + echo "DONE"; \ fi; \ if [ -n "$elfsharedlist" ]; then \ + printf "Stripping %d ELF shared libraries..." $(echo "$elfsharedlist" | wc -l); \ chmod u+w $elfsharedlist; \ %{__strip} --strip-unneeded --remove-section=.note --remove-section=.comment $elfsharedlist; \ + echo "DONE"; \ fi; \ - if [ -n "$elfarchiveslist" ]; then \ - chmod u+w $elfarchiveslist; \ - %{__strip} --strip-debug --remove-section=.note --remove-section=.comment $elfarchiveslist; \ + if [ -n "$archiveslist" ]; then \ + printf "Stripping %d ar archives..." $(echo "$elfsharedlist" | wc -l); \ + chmod u+w $archiveslist; \ + %{__strip} --strip-debug --remove-section=.note --remove-section=.comment $archiveslist; \ + echo "DONE"; \ fi; \ fi; }; __spec_install_post_strip } } } @@ -381,27 +412,33 @@ fi; }; __spec_install_post_strip } } } %__spec_install_post_chrpath {%{!?debug: \ %{!?no_install_post_chrpath: __spec_install_post_chrpath() { \ if [ -d "$RPM_BUILD_ROOT" ]; then \ -echo "Remove RPATH from executable binaries and shared object files."; \ -find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" %{?_noautochrpath:! -regex "%{_noautochrpath}"} | xargs -r file | \ - awk '/ELF.*(executable.*dynamically linked|shared object)/ {print $1}' | cut -d: -f1 | \ -while read file ; do \ - rpath= ; \ - chmod u+w "$file"; \ - for dir in `chrpath -l "$file" | \ - awk '/RPATH=/ { gsub(/.*RPATH=/,""); gsub(/:/," "); print $0 }'` ; do \ - case $dir in \ - /home/* | /tmp/* | /usr/lib | /usr/lib64 | /lib | /lib64 | /usr/local/lib | /usr/local/lib64 | /usr/X11R6/lib | /usr/X11R6/lib64 ) \ - echo "remove-rpath: $dir in $file"; \ - ;; \ - * ) \ - if [ "$rpath" = "" ] ; then rpath="$dir" ; \ - else rpath="$rpath:$dir" ; fi ; \ - ;; \ - esac ; \ - done ; \ - if [ "$rpath" = "" ] ; then chrpath -d "$file" > /dev/null ; \ - else chrpath -r "$rpath" "$file" > /dev/null ; fi ; \ -done; \ + files=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautochrpath:! -regex "%{_noautochrpath}"}`; \ + if [ -n "$files" ]; then \ + objs=`echo "$files" | xargs -r -d'\\n' file | awk -F: '/ELF.*(executable.*dynamically linked|shared object)/ {print $1}'`; \ + fi + #" + if [ -n "$objs" ]; then \ + printf "Remove RPATH from %d executable binaries and shared object files.\n" $(echo "$objs" | wc -l); \ + echo "$objs" | \ + while read file; do \ + rpath= ; \ + chmod u+w "$file"; \ + for dir in `chrpath -l "$file" | \ + awk '/RPATH=/ { gsub(/.*RPATH=/,""); gsub(/:/," "); print $0 }'` ; do \ + case $dir in \ + /home/* | /tmp/* | /usr/lib | /usr/lib64 | /lib | /lib64 | /usr/local/lib | /usr/local/lib64 | /usr/X11R6/lib | /usr/X11R6/lib64 ) \ + echo "remove-rpath: $dir in $file"; \ + ;; \ + * ) \ + if [ "$rpath" = "" ] ; then rpath="$dir" ; \ + else rpath="$rpath:$dir" ; fi ; \ + ;; \ + esac ; \ + done ; \ + if [ "$rpath" = "" ] ; then chrpath -d "$file" > /dev/null ; \ + else chrpath -r "$rpath" "$file" > /dev/null ; fi ; \ + done; \ + fi; \ fi; }; __spec_install_post_chrpath } } } #----------------------------------------------------------------- @@ -452,14 +489,16 @@ fi \ %update_desktop_database_post() {{ \ umask 022; \ /usr/bin/update-desktop-database -q; \ -}} +}} \ +%{nil} %update_desktop_database_postun() {{ \ if [ $1 = 0 ]; then \ umask 022; \ /usr/bin/update-desktop-database -q; \ fi \ -}} +}} \ +%{nil} #----------------------------------------------------------------- # Update shared MIME info database @@ -468,7 +507,8 @@ fi \ %update_mime_database() {{ \ umask 022; \ /usr/bin/update-mime-database %{_datadir}/mime; \ -}} +}} \ +%{nil} #----------------------------------------------------------------- # Update icon cache @@ -477,7 +517,8 @@ fi \ %update_icon_cache() {{ \ umask 022; \ /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \ -}} +}} \ +%{nil} #----------------------------------------------------------------- # Update scrollkeeper database @@ -546,17 +587,16 @@ fi \ %php_pear_dir /usr/share/pear %php_extensiondir %(php-config --extension-dir 2>/dev/null || echo ERROR) %php_sysconfdir %(php-config --sysconfdir 2>/dev/null || echo ERROR) +%php_includedir %(php-config --include-dir 2>/dev/null || echo ERROR) -# directory where php includes are installed on system. -%__php_includedir /usr/include/php # extract php/zend api versions -%php_major_version %(awk '/#define PHP_MAJOR_VERSION/{print $3}' %{__php_includedir}/main/php_version.h 2>/dev/null || echo ERROR) -%php_api_version %(awk '/#define PHP_API_VERSION/{print $3}' %{__php_includedir}/main/php.h 2>/dev/null || echo ERROR) -%php_pdo_api_version %(awk '/#define PDO_DRIVER_API/{print $3}' %{__php_includedir}/ext/pdo/php_pdo_driver.h 2>/dev/null || echo ERROR) -%php_debug %(awk '/#define ZEND_DEBUG/{print $3}' %{__php_includedir}/main/php_config.h 2>/dev/null || echo ERROR) -%zend_module_api %(awk '/#define ZEND_MODULE_API_NO/{print $3}' %{__php_includedir}/Zend/zend_modules.h 2>/dev/null || echo ERROR) -%zend_extension_api %(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' %{__php_includedir}/Zend/zend_extensions.h 2>/dev/null || echo ERROR) -%zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{__php_includedir}/main/php_config.h); echo ${Z:-ERROR}) +%php_major_version %(awk '/#define PHP_MAJOR_VERSION/{print $3}' %{php_includedir}/main/php_version.h 2>/dev/null || echo ERROR) +%php_api_version %(awk '/#define PHP_API_VERSION/{print $3}' %{php_includedir}/main/php.h 2>/dev/null || echo ERROR) +%php_pdo_api_version %(awk '/#define PDO_DRIVER_API/{print $3}' %{php_includedir}/ext/pdo/php_pdo_driver.h 2>/dev/null || echo ERROR) +%php_debug %(awk '/#define ZEND_DEBUG/{print $3}' %{php_includedir}/main/php_config.h 2>/dev/null || echo ERROR) +%zend_module_api %(awk '/#define ZEND_MODULE_API_NO/{print $3}' %{php_includedir}/Zend/zend_modules.h 2>/dev/null || echo ERROR) +%zend_extension_api %(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' %{php_includedir}/Zend/zend_extensions.h 2>/dev/null || echo ERROR) +%zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{php_includedir}/main/php_config.h); echo ${Z:-ERROR}) # helper macro %__php_api_requires(v:) Requires: php%{-v*}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} @@ -601,6 +641,25 @@ if [ -f /etc/rc.d/init.d/php-fcgi ]; then \ fi \ %{nil} + +# X.org helper macros +%__xorg_abi_requires() Requires: xorg-xserver-server(%{expand:%1}-abi) = %{expand:%{%{!?2:%{1}}%{?2}}} +# +%xorg_xserver_ansic_abi %(awk '/#define ABI_ANSIC_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' /usr/include/xorg/xf86Module.h 2> /dev/null || echo ERROR) +%xorg_xserver_extension_abi %(awk '/#define ABI_EXTENSION_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' /usr/include/xorg/xf86Module.h 2> /dev/null || echo ERROR) +%xorg_xserver_font_abi %(awk '/#define ABI_FONT_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' /usr/include/xorg/xf86Module.h 2> /dev/null | echo ERROR) +%xorg_xserver_videodrv_abi %(awk '/#define ABI_VIDEODRV_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' /usr/include/xorg/xf86Module.h 2> /dev/null || echo ERROR) +%xorg_xserver_xinput_abi %(awk '/#define ABI_XINPUT_VERSION/ { split($0,A,/[(,)]/); printf("%d.%d",A[2], A[3]); }' /usr/include/xorg/xf86Module.h 2> /dev/null || echo ERROR) + +%requires_xorg_xserver_extension %{__xorg_abi_requires ansic xorg_xserver_ansic_abi} \ +%{__xorg_abi_requires extension xorg_xserver_extension_abi} +%requires_xorg_xserver_xinput %{__xorg_abi_requires ansic xorg_xserver_ansic_abi} \ +%{__xorg_abi_requires xinput xorg_xserver_xinput_abi} +%requires_xorg_xserver_font %{__xorg_abi_requires ansic xorg_xserver_ansic_abi} \ +%{__xorg_abi_requires font xorg_xserver_font_abi} +%requires_xorg_xserver_videodrv %{__xorg_abi_requires ansic xorg_xserver_ansic_abi} \ +%{__xorg_abi_requires videodrv xorg_xserver_videodrv_abi} + # Python specific macro definitions. # python main version %py_ver %(python -c "import sys; print sys.version[:3]") @@ -932,23 +991,44 @@ if [ "$1" = "0" ] || [ "$2" = "0" ]; then \ %service(q) {{%(export quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };} -# java macros. based on jpackage macros.java +# Java macros. based on jpackage macros.java +# +# Root directory where all Java VMs/SDK/JREs are installed. %_jvmdir %{_libdir}/jvm + +# Root directory where all Java VMs/SDK/JREs expose their jars %_jvmjardir %{_libdir}/jvm-exports -%_jvmprivdir %{_libdir}/jvm-private + +# Root directory for all Java VM/SDK/JRE's private things. +%_jvmprivdir %{_libdir}/jvm-private + +# Root directory for all architecture dependent parts of Java VM/SDK/JRE's %_jvmlibdir %{_libdir}/jvm -%_jvmdatadir %{_datadir}/jvm -%_jvmsysconfdir %{_sysconfdir}/jvm -# FIXME: are these used? + +# Root directory for all architecture independent parts of Java VM/SDK/JRE's +%_jvmdatadir %{_datadir}/jvm + +# Root directory for all configurations parts of Java VM/SDK/JRE's +%_jvmsysconfdir %{_sysconfdir}/jvm + +# Root directory for all common architecture dependent parts of Java VM/SDK/JRE's %_jvmcommonlibdir %{_libdir}/jvm-common + +# Root directory for all common architecture independent parts of Java VM/SDK/JRE's %_jvmcommondatadir %{_datadir}/jvm-common + +# Root directory for all common configurations parts of Java VM/SDK/JRE's %_jvmcommonsysconfdir %{_sysconfdir}/jvm-common + +# Directory where arch-specific (JNI) version-independent jars are installed. %_jnidir %{_libdir}/java -%java_home %(unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME) + + +%java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo ${JAVA_HOME:-ERROR}) %ant JAVA_HOME=%{java_home} ant %jar %{java_home}/bin/jar -%java %(unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD) +%java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD) %javac %{java_home}/bin/javac %javadoc %{java_home}/bin/javadoc @@ -1032,16 +1112,7 @@ fi \ # command invoking pear cli %__pear /usr/bin/pear -# the main macro. -# using this macro will append optional-packages.txt to the nocompressdoc list -# as it's displayed to user after package install. and adding additional gzip -# dep is just waste ;) -%pear_package_setup(a:n:z) \ -%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \ -%define builddir %{_builddir}/%{srcdir} \ -%setup -q -c -T -n %{srcdir} \ -%{-z:tar zxf %{S:0}; %{-a:tar zxf %{S:%{-a*}}}} \ -%{-z:_P=package2.xml; [ -f $_P ] || _P=package.xml; _N=%{srcdir}; mv $_P $_N; cd $_N} \ +%pear_install(a:n:zD) \ %__pear \\\ -c pearrc \\\ -d doc_dir=/docs \\\ @@ -1054,7 +1125,20 @@ fi \ --offline \\\ --nodeps \\\ %{-f:--force} \\\ - %{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$_P} > .install.log || { c=$?; cat .install.log; exit $c; } \ + %{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$_P} > .install.log || { c=$?; cat .install.log; exit $c; }; \ +%{nil} + +# The main macro. +# using this macro will append optional-packages.txt to the nocompressdoc list +# as it's displayed to user after package install. and adding additional gzip +# dep is just waste ;) +%pear_package_setup(a:n:zD) \ +%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \ +%define builddir %{_builddir}/%{srcdir} \ +%setup -q -c -T %{-D:-D} -n %{srcdir} \ +%{-z:tar zxf %{S:0}; %{-a:tar zxf %{S:%{-a*}}}} \ +%{-z:_P=package2.xml; [ -f $_P ] || _P=package.xml; _N=%{srcdir}; mv $_P $_N; cd $_N} \ +%pear_install \ %{-z:cd ..} \ cat %{-z:$_N/}.install.log | %__pear_install_log \ \ @@ -1064,9 +1148,8 @@ find . -type f -print0 | xargs -0 sed -i -e 's,\\r$,,' \ %{!?_noautoprov:%global _noautoprov %{nil}}%{expand:%%global _noautoprov %{_noautoprov} 'pear(tests/.*)'} \ %{nil} -# copies exctracted PEAR package structure to buildroot. -# also copies PEAR registry file. -# please use this macro, for future extensions being possible. +# Copies exctracted PEAR package structure and PEAR registry to buildroot. +# Author: Elan Ruusamäe %pear_package_install() \ cp -a ./%{php_pear_dir}/{.registry,*} $RPM_BUILD_ROOT%{php_pear_dir} \ find $RPM_BUILD_ROOT%{php_pear_dir} '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v \ @@ -1151,7 +1234,7 @@ done \ # 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 noting +# - \\\ 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 @@ -1177,7 +1260,7 @@ compile() { \ L="<"; [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)" \ set -e -x \ \ -for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist}; do \ +for cfg in %{?with_dist_kernel:dist}%{!?with_dist_kernel:nondist}; do \ [ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1 \ \ rm -rf o \ @@ -1185,6 +1268,13 @@ for cfg in %{?with_dist_kernel:%{?with_smp:smp} up}%{!?with_dist_kernel:nondist} ln -sf %{_kernelsrcdir}/config-$cfg o/.config \ ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers \ ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h \ +%ifarch ppc ppc64 \ + install -d o/include/asm \ + [ ! -d %{_kernelsrcdir}/include/asm-%{_target_base_arch} ] || ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch}/* o/include/asm \ + [ ! -d %{_kernelsrcdir}/include/asm-powerpc ] || ln -snf %{_kernelsrcdir}/include/asm-powerpc/* o/include/asm \ +%else \ + ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} o/include/asm \ +%endif \ \ set +x \ [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell \ @@ -1241,23 +1331,92 @@ compile %{*}\ %define KernelD $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver} \ %define ModprobeD $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \ \ -install -d %{KernelD}{,smp}/%{-d*} \ -%{?-s:install -d %{ModprobeD}{,smp}} \ +install -d %{KernelD}/%{-d*} \ +%{?-s:install -d %{ModprobeD}} \ \ for MODULE in {%{-m*},}; do \ [ -n "${MODULE}" ] || continue \ MNAME=${MODULE##*/} \ - install ${MODULE}-%{?with_dist_kernel:up}%{!?with_dist_kernel:nondist}.ko \\\ - %{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \ - %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\ - >> %{ModprobeD}/%{-n*}.conf} \ - %if %{with smp} && %{with dist_kernel} \ - install ${MODULE}-smp.ko \\\ - %{KernelD}smp/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \ - %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\ - >> %{ModprobeD}smp/%{-n*}.conf} \ - %endif \ + %if %{without dist_kernel} \ + install ${MODULE}-nondist.ko \\\ + %{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \ + %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\ + >> %{ModprobeD}/%{-n*}.conf} \ + %else \ + install ${MODULE}-dist.ko \\\ + %{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \ + %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\ + >> %{ModprobeD}/%{-n*}.conf} \ + %endif \ done \ %{nil} +# patchset macros +# Author: Elan Ruusamäe +# +# Usage: +# %patchset_source -f [] +# %patchset_patch [] +# +# If is omited, it is assumed to be . +# +# For example in preamble: +# %patchset_source -f ftp://ftp.vim.org/pub/editors/vim/patches/7.0/7.0.%03g 33 44 +# and in %prep: +# %patchset_patch 33 44 + +# generate SourceX urls from range START STOP +# Format can be SINGLE format char of %e, %f, %g, see seq(1) +# The sources start from 10000 +%patchset_source(f:b:) %( + base=%{-b*}%{!-b*:10000}; + start=$(expr $base + %1); + end=$(expr $base + %{?2}%{!?2:%{1}}); + # we need to call seq twice as it doesn't allow two formats + seq -f 'Patch%g:' $start $end > %{tmpdir}/__ps1; + seq -f '%{-f*}' %1 %{?2}%{!?2:%{1}} > %{tmpdir}/__ps2; + paste %{tmpdir}/__ps{1,2}; + rm -f %{tmpdir}/__ps{1,2}; +) \ +%{nil} + +# apply sources from %patchset_source +# -p specify -pX for %patch line +# -b base offset: defaults to 10000 +%patchset_patch(f:p:b:) %( + base=%{-b*}%{!-b*:10000}; + start=$(expr $base + %1); + end=$(expr $base + %{?2}%{!?2:%{1}}); + echo ": patchset_patch %1%{?2: to %2}"; + seq -f 'patch%g %{-p*:-p%{-p*}}' $start $end | sed -e s,^,%%,; +) \ +%{nil} + +# browser plugins v2 +# Author: Elan Ruusamäe +# +# Usage: +# %browser_plugins_add_browser -p +# +# (required) -- name of the browser. usually %{name}. +# -p (required) -- in what directory browser searches for its plugins. +# -b -- default blacklists +# -a override arch +# +# Example: +# %browser_plugins_add_browser %{name} -p %{_firefoxdir}/plugins + +%_browserpluginsconfdir /etc/browser-plugins +%_browserpluginsdir %{_libdir}/browser-plugins +%update_browser_plugins /usr/sbin/update-browser-plugins || : + +%browser_plugins_add_browser(p:b:a:) \ + browser=%1.%{!-a:%{_target_base_arch}}%{-a*} \ + install -d $RPM_BUILD_ROOT%{_browserpluginsconfdir}/{blacklist,browsers}.d \ + ln -s %{-p*} $RPM_BUILD_ROOT%{_browserpluginsconfdir}/browsers.d/$browser \ + blacklist_file=$RPM_BUILD_ROOT%{_browserpluginsconfdir}/blacklist.d/$browser.blacklist \ + echo '# This file format is shell globs at base dir of plugindir' > $blacklist_file \ + %{-b:cat >> $blacklist_file %{-b*}} \ +%{nil} + # vim:ts=4 sw=4 noet syn=spec