X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=rpm.macros;h=ef59adf5af4783da8ad2e108bbee7d5f14ba3bef;hb=86fa8055eb34f0c466a63d2a53ec910367ccb952;hp=8c6edec08696a4dbc7abb8845efa1c2d482866ac;hpb=2a80e4cf6802e003d1cce7b3b898762b6b3c8b7f;p=packages%2Frpm-build-macros.git diff --git a/rpm.macros b/rpm.macros index 8c6edec..ef59adf 100644 --- a/rpm.macros +++ b/rpm.macros @@ -8,6 +8,10 @@ %kgcc %{__cc} %kgcc_package gcc +# compiler version +%cc_version %{expand:%%global cc_version %(%{__cc} -dumpversion || echo ERROR)}%cc_version +%cxx_version %{expand:%%global cxx_version %(%{__cc} -dumpversion || echo ERROR)}%cxx_version + %__rm /bin/rm --interactive=never # Build system path macros. @@ -35,7 +39,7 @@ %__libtoolize libtoolize --copy --force # Path to top of build area. -%_topdir %(test -d ../SPECS && (cd ..; pwd) || echo $HOME/rpm) +%_topdir %{expand:%%global _topdir %(test -d ../SPECS -a -d ../SOURCES && (cd ..; pwd) || echo $HOME/rpm)}%_topdir # The number of cvs changelog entries kept when building package. %_buildchangelogtruncate 20 @@ -219,13 +223,15 @@ CXXFLAGS="%{rpmcxxflags}" \ %{nil} # Location of autoconf macros -%_aclocaldir %(aclocal --print-ac-dir) +%_aclocaldir %{expand:%%global _aclocaldir %(aclocal --print-ac-dir || echo ERROR)}%_aclocaldir # Location of omf files -%_omf_dest_dir %(scrollkeeper-config --omfdir) +%_omf_dest_dir %{expand:%%global _omf_dest_dir %(scrollkeeper-config --omfdir || echo ERROR)}%_omf_dest_dir # Location of pkgconfig files %_pkgconfigdir /usr/%{_lib}/pkgconfig +# noarch pkgconfig files +%_npkgconfigdir /usr/share/pkgconfig # Location of desktop files %_desktopdir /usr/share/applications @@ -252,9 +258,6 @@ CXXFLAGS="%{rpmcxxflags}" \ # Current date %date %(LC_ALL="C" date +"%a %b %d %Y") -# tmp directory -%tmpdir %(echo "${TMPDIR:-/tmp}") - # Example files, programs, scripts... %_examplesdir /usr/src/examples @@ -268,26 +271,35 @@ CXXFLAGS="%{rpmcxxflags}" \ %_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}%{?debug:dbg}.%%{ARCH}.rpm # 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") +%requires_releq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %{N} = %|E?{%{E}:}|%{V}-%{R}\\n' | grep -v 'is not') -%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)") -%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)") +%releq_kernel %{expand:%%global releq_kernel %(R=$(LC_ALL=C rpm -q --qf '%{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 %{expand:%%global releq_kernel_up %(R=$(LC_ALL=C rpm -q --qf '%{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() %{expand:%%global releq_kernel_smp %(R=$(LC_ALL=C rpm -q --qf '%{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 %requires_releq_kernel(s:) Requires%{-s:(%{-s*})}: %releq_kernel %requires_releq_kernel_up(s:) Requires%{-s:(%{-s*})}: %releq_kernel_up %requires_releq_kernel_smp(s:) Requires%{-s:(%{-s*})}: %releq_kernel_smp -%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") +# XXX: why epoch 0 is stripped? +%requires_eq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %{N} = %|E?{%{E}:}|%{V}\\n' | sed -e 's/ 0:/ /' | grep -v 'is not') +%requires_eq_to() %(LC_ALL="C" rpm -q --qf 'Requires: %1 = %|E?{%{E}:}|%{V}' %2 | grep -v "is not") -%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 %{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 -%__kernel_ver %( VER_H=%{_kernelsrcdir}/include/linux/utsrelease.h; [ -f $VER_H ] || VER_H=%{_kernelsrcdir}/include/linux/version.h; [ -f $VER_H ] && (grep UTS_RELEASE $VER_H 2>/dev/null | head -n 1 | cut -d'"' -f2) || (awk '/^VERSION/ { ver = $0; gsub(/VERSION.*=/, NIL, ver); } /^PATCHLEVEL/ { plev = $0; gsub(/PATCHLEVEL.*=/, NIL, plev); } /^SUBLEVEL/ { slev = $0; gsub(/SUBLEVEL.*=/, NIL, slev); } /^EXTRAVERSION/ { ever = $0; gsub(/EXTRAVERSION.*=/, NIL, ever); gsub(/ /, NIL, ever); } END { printf("%d.%d.%d%s", ver, plev, slev, ever); }' %{_kernelsrcdir}/Makefile 2> /dev/null)) -%__kernel_rel %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{RELEASE}" | grep -v "is not") -%__kernel_rpmvr %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{VERSION}-%{RELEASE}" | grep -v "is not") -%_kernel_ver %{__kernel_ver}%{?with_dist_kernel:%(echo %{__kernel_ver} | grep -q -e - || echo -%{__kernel_rel})} -%_kernel_ver_str %(echo %{!?_without_dist_kernel:%{__kernel_rpmvr}}%{?_without_dist_kernel:%{__kernel_ver}} | sed -e 's/-/_/g') +%__kernel_ver %{expand:%%global __kernel_ver %( \\ + Z=$(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_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_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 + +# `uname -r` to be used in @release field +%_kernel_vermagic %{expand:%%global _kernel_vermagic %(echo %{_kernel_ver} | sed -e 's/-/_/g')}%_kernel_vermagic # sgml macros %xmlcat_add() /usr/bin/xmlcatalog --noout --add nextCatalog \"\" %1 /etc/xml/catalog ; @@ -372,7 +384,7 @@ if [ -d "$RPM_BUILD_ROOT" ]; then \ echo "DONE"; \ fi; \ fi; \ - filelist=$(find $RPM_BUILD_ROOT -type f ! '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' -regex ".*/usr/lib[0-9]*/debug/.*\.debug" ! -regex ".*/lib/modules/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautostrip:! -regex "%{_noautostrip}"} %{?_autostripall:! -regex "%{_autostripall}"} %{?_autostripunneeded:! -regex "%{_autostripunneeded}"} %{?_autostripdebug:! -regex "%{_autostripdebug}"}); \ + filelist=$(find $RPM_BUILD_ROOT -type f ! -regex ".*/usr/lib[0-9]*/debug/.*\.debug" ! -regex ".*/lib/modules/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautostrip:! -regex "%{_noautostrip}"} %{?_autostripall:! -regex "%{_autostripall}"} %{?_autostripunneeded:! -regex "%{_autostripunneeded}"} %{?_autostripdebug:! -regex "%{_autostripdebug}"}); \ if [ -n "$filelist" ]; then \ filetypes=`echo "$filelist" | xargs -r -d'\\n' file`; \ elfexelist=`echo "$filetypes" | awk -F: '/ELF.*executable/ {print $1}'`; \ @@ -397,9 +409,9 @@ if [ -d "$RPM_BUILD_ROOT" ]; then \ echo "DONE"; \ fi; \ fi; \ - filelist_all=%{?_autostripall:$(find $RPM_BUILD_ROOT -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' -regex "%{_autostripall}")}; \ - filelist_unneeded=%{?_autostripunneeded:$(find $RPM_BUILD_ROOT -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' -regex "%{_autostripunneeded}")}; \ - filelist_debug=%{?_autostripdebug:$(find $RPM_BUILD_ROOT -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' -regex "%{_autostripdebug}")}; \ + filelist_all=%{?_autostripall:$(find $RPM_BUILD_ROOT -type f -regex "%{_autostripall}")}; \ + filelist_unneeded=%{?_autostripunneeded:$(find $RPM_BUILD_ROOT -type f -regex "%{_autostripunneeded}")}; \ + filelist_debug=%{?_autostripdebug:$(find $RPM_BUILD_ROOT -type f -regex "%{_autostripdebug}")}; \ if [ -n "$filelist_all" ]; then \ printf "Stripping everything from %d additional files..." $(echo "$filelist_all" | wc -l); \ chmod u+w $filelist_all; \ @@ -432,7 +444,7 @@ fi; }; __spec_install_post_strip } } } %__spec_install_post_chrpath {%{!?debug: \ %{!?no_install_post_chrpath: __spec_install_post_chrpath() { \ if [ -d "$RPM_BUILD_ROOT" ]; then \ - files=`find $RPM_BUILD_ROOT -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')' ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" ! -regex ".*/lib/modules/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautochrpath:! -regex "%{_noautochrpath}"}`; \ + files=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" ! -regex ".*/lib/modules/.*" ! -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; \ @@ -444,6 +456,7 @@ if [ -d "$RPM_BUILD_ROOT" ]; then \ chmod u+w "$file"; \ for dir in `chrpath -l "$file" | \ awk '/RPATH=/ { gsub(/.*RPATH=/,""); gsub(/:/," "); print $0 }'` ; do \ + dir=`%{__python} -c 'import sys, os; print os.path.normpath(sys.argv[1]);' $dir` 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"; \ @@ -493,33 +506,31 @@ fi; }; __spec_install_post_chrpath } } } # %gconf_schema_install() \ umask 022; \ - GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-install-rule /etc/gconf/schemas/%{?1}%{!?1:*.schemas} > /dev/null \ - %{nil} + GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-install-rule /etc/gconf/schemas/%{?1}%{!?1:*.schemas} > /dev/null; \ +%{nil} %gconf_schema_uninstall() \ if [ $1 = 0 ]; then \ umask 022; \ GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/%{?1} > /dev/null \ -fi \ +fi; \ %{nil} #----------------------------------------------------------------- # Update desktop MIME database # requires: desktop-file-utils -# -%update_desktop_database_post() {{ \ +%update_desktop_database() {{ \ umask 022; \ /usr/bin/update-desktop-database -q; \ -}} \ -%{nil} +}}%{nil} + +%update_desktop_database_post %update_desktop_database %update_desktop_database_postun() {{ \ -if [ $1 = 0 ]; then \ - umask 022; \ - /usr/bin/update-desktop-database -q; \ -fi \ -}} \ -%{nil} +if [ "$1" = "0" ]; then \ + %update_desktop_database; \ +fi; \ +}}%{nil} #----------------------------------------------------------------- # Update shared MIME info database @@ -528,8 +539,7 @@ fi \ %update_mime_database() {{ \ umask 022; \ /usr/bin/update-mime-database %{_datadir}/mime; \ -}} \ -%{nil} +}}%{nil} #----------------------------------------------------------------- # Update icon cache @@ -538,8 +548,7 @@ fi \ %update_icon_cache() {{ \ umask 022; \ /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \ -}} \ -%{nil} +}}%{nil} #----------------------------------------------------------------- # Update scrollkeeper database @@ -547,12 +556,12 @@ fi \ # %scrollkeeper_update_post() \ /usr/bin/scrollkeeper-update -q; \ - %{nil} +%{nil} %scrollkeeper_update_postun() \ -if [ $1 = 0 ]; then \ +if [ "$1" = "0" ]; then \ /usr/bin/scrollkeeper-update -q; \ -fi \ +fi; \ %{nil} #----------------------------------------------------------------- @@ -571,14 +580,15 @@ fi \ %__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}} + #%_noautocompressdoc %{nil} # %_missing_doc_files_terminate_build 1%{nil} %_unpackaged_files_terminate_build %{nil} # (X)emacs support %___emacs_lispdir_helper -batch -q -eval '(while load-path (princ (concat (car load-path) "\\n")) (setq load-path (cdr load-path)))' 2> /dev/null|sed -n '/\\(.*\\/x\\?emacs\\/site-lisp\\)\\/\\?$/{s,,\\1,p;q;}' -%_emacs_lispdir %(emacs %___emacs_lispdir_helper) -%_xemacs_lispdir %(xemacs %___emacs_lispdir_helper) +%_emacs_lispdir %{expand:%%global _emacs_lispdir %(Z=$(emacs %___emacs_lispdir_helper); echo ${Z:-ERROR})}%_emacs_lispdir +%_xemacs_lispdir %{expand:%%global _xemacs_lispdir %(Z=$(xemacs %___emacs_lispdir_helper); echo ${Z:-ERROR})}%_xemacs_lispdir %__php_provides %{nil} %__php_requires %{nil} @@ -588,38 +598,39 @@ fi \ %__mono_requires %{nil} # Perl specific macro definitions. -%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib) -%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib) -%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib) -%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch) -%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib) -%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch) +%perl_privlib %{expand:%%global perl_privlib %(eval $(%{__perl} -V:installprivlib 2>/dev/null); echo ${installprivlib:-ERROR})}%perl_privlib +%perl_archlib %{expand:%%global perl_archlib %(eval $(%{__perl} -V:installarchlib 2>/dev/null); echo ${installarchlib:-ERROR})}%perl_archlib +%perl_vendorlib %{expand:%%global perl_vendorlib %(eval $(%{__perl} -V:installvendorlib 2>/dev/null); echo ${installvendorlib:-ERROR})}%perl_vendorlib +%perl_vendorarch %{expand:%%global perl_vendorarch %(eval $(%{__perl} -V:installvendorarch 2>/dev/null); echo ${installvendorarch:-ERROR})}%perl_vendorarch +%perl_sitelib %{expand:%%global perl_sitelib %(eval $(%{__perl} -V:installsitelib 2>/dev/null); echo ${installsitelib:-ERROR})}%perl_sitelib +%perl_sitearch %{expand:%%global perl_sitearch %(eval $(%{__perl} -V:installsitearch 2>/dev/null); echo ${installsitearch:-ERROR})}%perl_sitearch # Ruby -%ruby_archdir %(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]' 2>/dev/null || echo ERROR) -%ruby_ridir %(ruby -r rbconfig -e 'include Config; print File.join(CONFIG["datadir"], "ri", CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR) -%ruby_rubylibdir %(ruby -r rbconfig -e 'print Config::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR) -%ruby_vendorarchdir %(ruby -r rbconfig -e 'print Config::CONFIG["vendorarchdir"]' 2>/dev/null || echo ERROR) -%ruby_vendorlibdir %(ruby -r rbconfig -e 'print Config::CONFIG["vendorlibdir"]' 2>/dev/null || echo ERROR) -%ruby_sitearchdir %(ruby -r rbconfig -e 'print Config::CONFIG["sitearchdir"]' 2>/dev/null || echo ERROR) -%ruby_sitelibdir %(ruby -r rbconfig -e 'print Config::CONFIG["sitelibdir"]' 2>/dev/null || echo ERROR) -%ruby_version %(ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"]' 2>/dev/null || echo ERROR) +%__ruby /usr/bin/ruby +%ruby_archdir %{expand:%%global ruby_archdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["archdir"]' 2>/dev/null || echo ERROR)}%ruby_archdir +%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_rubylibdir %{expand:%%global ruby_rubylibdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR)}%ruby_rubylibdir +%ruby_vendorarchdir %{expand:%%global ruby_vendorarchdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["vendorarchdir"]' 2>/dev/null || echo ERROR)}%ruby_vendorarchdir +%ruby_vendorlibdir %{expand:%%global ruby_vendorlibdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["vendorlibdir"]' 2>/dev/null || echo ERROR)}%ruby_vendorlibdir +%ruby_sitearchdir %{expand:%%global ruby_sitearchdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["sitearchdir"]' 2>/dev/null || echo ERROR)}%ruby_sitearchdir +%ruby_sitelibdir %{expand:%%global ruby_sitelibdir %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["sitelibdir"]' 2>/dev/null || echo ERROR)}%ruby_sitelibdir +%ruby_version %{expand:%%global ruby_version %(%{__ruby} -r rbconfig -e 'print Config::CONFIG["ruby_version"]' 2>/dev/null || echo ERROR)}%ruby_version %ruby_ver_requires_eq Requires: ruby(ver) = %ruby_version %ruby_mod_ver_requires_eq Requires: ruby-modules(ver) = %ruby_version %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) +%php_extensiondir %{expand:%%global php_extensiondir %(php-config --extension-dir 2>/dev/null || echo ERROR)}%php_extensiondir +%php_sysconfdir %{expand:%%global php_sysconfdir %(php-config --sysconfdir 2>/dev/null || echo ERROR)}%php_sysconfdir +%php_includedir %{expand:%%global php_includedir %(php-config --include-dir 2>/dev/null || echo ERROR)}%php_includedir # 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 %{expand:%%global php_major_version %(awk '/#define PHP_MAJOR_VERSION/{print $3}' %{php_includedir}/main/php_version.h 2>/dev/null || echo ERROR)}%php_major_version +%php_api_version %{expand:%%global php_api_version %(awk '/#define PHP_API_VERSION/{print $3}' %{php_includedir}/main/php.h 2>/dev/null || echo ERROR)}%php_api_version +%php_pdo_api_version %{expand:%%global 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_pdo_api_version +%php_debug %{expand:%%global php_debug %(awk '/#define ZEND_DEBUG/{print $3}' %{php_includedir}/main/php_config.h 2>/dev/null || echo ERROR)}%php_debug +%zend_module_api %{expand:%%global zend_module_api %(awk '/#define ZEND_MODULE_API_NO/{print $3}' %{php_includedir}/Zend/zend_modules.h 2>/dev/null || echo ERROR)}%zend_module_api +%zend_extension_api %{expand:%%global zend_extension_api %(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' %{php_includedir}/Zend/zend_extensions.h 2>/dev/null || echo ERROR)}%zend_extension_api +%zend_zts %{expand:%%global zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{php_includedir}/main/php_config.h); echo ${Z:-ERROR})}%zend_zts # helper macro %__php_api_requires(v:) Requires: php%{-v*}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}} @@ -668,11 +679,11 @@ fi \ # 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) +%xorg_xserver_ansic_abi %{expand:%%global 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_ansic_abi +%xorg_xserver_extension_abi %{expand:%%global 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_extension_abi +%xorg_xserver_font_abi %{expand:%%global 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_font_abi +%xorg_xserver_videodrv_abi %{expand:%%global 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_videodrv_abi +%xorg_xserver_xinput_abi %{expand:%%global 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)}%xorg_xserver_xinput_abi %requires_xorg_xserver_extension %{__xorg_abi_requires ansic xorg_xserver_ansic_abi} \ %{__xorg_abi_requires extension xorg_xserver_extension_abi} @@ -685,10 +696,10 @@ fi \ # Python specific macro definitions. # python main version -%py_ver %(python -c "import sys; print sys.version[:3]") +%py_ver %{expand:%%global py_ver %(%{__python} -c "import sys; print sys.version[:3]" || echo ERROR)}%py_ver # directories -%py_prefix %(python -c "import sys; print sys.prefix") +%py_prefix %{expand:%%global py_prefix %(%{__python} -c "import sys; print sys.prefix" || echo ERROR)}%py_prefix %py_libdir %{py_prefix}/%{_lib}/python%{py_ver} %py_scriptdir %{py_prefix}/share/python%{py_ver} %py_incdir /usr/include/python%{py_ver} @@ -739,18 +750,18 @@ fi; \ } # XMMS specific macros -%xmms_prefix %(xmms-config --prefix 2>/dev/null) -%xmms_exec_prefix %(xmms-config --exec-prefix 2>/dev/null) -%xmms_version %(xmms-config --version 2>/dev/null) -%xmms_datadir %(xmms-config --data-dir 2>/dev/null) -%xmms_plugindir %(xmms-config --plugin-dir 2>/dev/null) -%xmms_visualization_plugindir %(xmms-config --visualization-plugin-dir 2>/dev/null) -%xmms_input_plugindir %(xmms-config --input-plugin-dir 2>/dev/null) -%xmms_output_plugindir %(xmms-config --output-plugin-dir 2>/dev/null) -%xmms_effect_plugindir %(xmms-config --effect-plugin-dir 2>/dev/null) -%xmms_general_plugindir %(xmms-config --general-plugin-dir 2>/dev/null) - -%_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/') +%xmms_prefix %{expand:%%global xmms_prefix %(xmms-config --prefix 2>/dev/null || echo ERROR)}%xmms_prefix +%xmms_exec_prefix %{expand:%%global xmms_exec_prefix %(xmms-config --exec-prefix 2>/dev/null || echo ERROR)}%xmms_exec_prefix +%xmms_version %{expand:%%global xmms_version %(xmms-config --version 2>/dev/null || echo ERROR)}%xmms_version +%xmms_datadir %{expand:%%global xmms_datadir %(xmms-config --data-dir 2>/dev/null || echo ERROR)}%xmms_datadir +%xmms_plugindir %{expand:%%global xmms_plugindir %(xmms-config --plugin-dir 2>/dev/null || echo ERROR)}%xmms_plugindir +%xmms_visualization_plugindir %{expand:%%global xmms_visualization_plugindir %(xmms-config --visualization-plugin-dir 2>/dev/null || echo ERROR)}%xmms_visualization_plugindir +%xmms_input_plugindir %{expand:%%global xmms_input_plugindir %(xmms-config --input-plugin-dir 2>/dev/null || echo ERROR)}%xmms_input_plugindir +%xmms_output_plugindir %{expand:%%global xmms_output_plugindir %(xmms-config --output-plugin-dir 2>/dev/null || echo ERROR)}%xmms_output_plugindir +%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 + +%_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/')}%_target_base_arch # user/group checking macros # @@ -917,11 +928,17 @@ fi \ # /etc/sysconfig/rpm or per service /etc/sysconfig/SERVICE file. # # Usage: -# %service [-q] SERVICE ACTION ["SERVICE NICE DESCRIPTION"] +# %service [-q] [-n] SERVICE ACTION ["SERVICE NICE DESCRIPTION"] # # -q be silent when service isn't started (for scriplets restaring other package's services) +# -n NOOP mode, do not actually restart service # -%service(q) {{%(export quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };} +# Requirements: +# BuildRequires: rpmbuild(macros) >= 1.268 +# Requires: rc-scripts +# -n option: +# BuildRequires: rpmbuild(macros) >= 1.450 +%service(qn) {{%(export noop=%{-n:1} quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };} # Java macros. based on jpackage macros.java @@ -956,11 +973,11 @@ fi \ # Directory where arch-specific (JNI) version-independent jars are installed. %_jnidir %{_libdir}/java -%java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo ${JAVA_HOME:-ERROR}) +%java_home %{expand:%%global java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo ${JAVA_HOME:-ERROR})}%java_home %ant JAVA_HOME=%{java_home} ant %jar %{java_home}/bin/jar -%java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD) +%java %{expand:%%global java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)}%java %javac %{java_home}/bin/javac %javadoc %{java_home}/bin/javadoc @@ -1236,7 +1253,8 @@ done \ \ %{?-C:cd %{-C*}} \ compile() { \ - L="<"; [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)" \ + 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}' \ \ @@ -1265,7 +1283,9 @@ for cfg in ${cfgs:-dist}; do \ \ %{!?-c:%{__make} -C %{_kernelsrcdir} clean \\\ RCS_FIND_IGNORE="-name '*.ko' -o" \\\ + ${1+"$@"} \\\ M=$PWD %{MakeOpts}} \ + \ %{__make} -C %{_kernelsrcdir} modules \\\ ${1+"$@"} \\\ M=$PWD %{MakeOpts} \ @@ -1404,6 +1424,9 @@ done \ # %preun -p %remove_etc_shells -p /bin/sh /bin/pdksh # # -p (optional) -- specifies that result is embeded %post script (prepends as first line) +# +# Requirements: +# BuildRequires: rpmbuild(macros) >= 1.429 %add_etc_shells(p) %{-p:}\ t = {}\