X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=php-pear-build-macros;h=7e508a5034b9b74077bb4328fb5b2eac52d27858;hb=a3b822b2711920ab5c01f3dd4dc38cf698c7d0bf;hp=a0e792a487945246f56619e98ce87720c2f7fce8;hpb=ea5a95d23b97ef3691c783027267765d790dd080;p=packages%2Frpm.git diff --git a/php-pear-build-macros b/php-pear-build-macros index a0e792a..7e508a5 100644 --- a/php-pear-build-macros +++ b/php-pear-build-macros @@ -1,30 +1,86 @@ # vim:syn=spec:ai -%define pear_package_setup(a:) \ -%setup -q -c -T\ -D=%{_builddir}/%{name}-%{version} \ -sh %{_bindir}/pear \\\ +# original macros.php macros +%define __php_provides /usr/lib/rpm/php.prov +%define __php_requires /usr/lib/rpm/php.req + +# pear install macros written by glen@pld-linux.org. +# All rights reserved. Permission to copy is hereby granted.. yada, yada, yada +# +# Usage: +# %%pear_package_setup [-a #] [-n FMT] +# +# -a # - unpack SOURCE# instead of SOURCE0 +# -n FMT - create builddir with FMT, instead of default %%{_pearname}-%%{version} +# -z - unpack pear package and let pear use package.xml (not tarball) for install. use this for buggy packages. +# -f - force pear install. use with care. +# +# unpack PEAR package to %%{_builddir}/FMT. package is extracted with already +# destination hierarchy. you should copy the tree to buildroot after +# patching/reorganizing with %%pear_package_install. +# +# additionally BUILDROOT is stripped from files and files are converted to UNIX +# line endings. +# +# the pear install process output is recorded to install.log, you should put it +# to %%doc for latter debug or just information. +# +# additionally additional-packages.txt is produced if it was detected that the +# package has optional dependencies. the file format is suitable of displaying +# in %%post of a package. you should put this file to %%doc. noautocompressdoc is +# automatically added for this file. +# +%define pear_package_setup(a:n:zf) \ +%setup -q -c -T -n %{-n*}%{!-n:%{_pearname}-%{version}}\ +D=%{_builddir}/%{-n*}%{!-n:%{_pearname}-%{version}} \ +%{-z:tar zxf %{S:%{-a*}%{!-a:0}}; P=%{_pearname}-%{version}/package.xml; [ -f $P ] || P=package.xml} \ +pear \\\ -d doc_dir=/docs \\\ + -d php_dir=%{php_pear_dir} \\\ + -d bin_dir=%{_bindir} \\\ -d data_dir=%{php_pear_dir}/data \\\ + -d test_dir=%{php_pear_dir}/tests \\\ install \\\ --installroot=${D} \\\ --offline \\\ --nodeps \\\ - %{S:%{-a*}%{!-a:0}} | tee install.log \ + %{-f:--force} \\\ + %{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$P} | tee install.log \ # make post message of optional packages \ -grep 'can optionally use package' install.log | sed -e 's,pear/,php-pear-,g' > optional-packages.txt \ -test -s optional-packages.txt || rm -f optional-packages.txt \ +grep 'can optionally use' install.log | sed -e 's,package "pear/,package "php-pear-,g;s,^pear/,php-pear-,' > optional-packages.txt \ +if [ -s optional-packages.txt ]; then \ + awk -F'"' '/use package/{print $2}' optional-packages.txt | sed -e "s,_,/,g;s,php-pear-, 'pear(,;s,$,.*)'," | tr -d '\\\n' > _noautoreq \ +else \ + rm -f optional-packages.txt \ +fi \ rm ./%{php_pear_dir}/.{lock,filemap} \ # undos sources \ find . -type f -print0 | xargs -0 sed -i -e 's,\\r$,,' \ -# don't know why installroot stays in installed files. PEAR bug? \ +# bug in PEAR --installroot. \ +# http://pear.php.net/bugs/bug.php?id=5448 \ grep -rl "${D}" ./{%{_bindir},%{php_pear_dir}}/* | xargs -r sed -i -e "s,${D},," \ %{nil} - -%define pear_package_install() \ + +# copies exctracted PEAR package structure to buildroot. also copies PEAR +# registry file. +# please use this macro, for future expansions being possible. +%define 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 \ +# help the developer out a little: \ +if [ -f _noautoreq ]; then \ + echo "AutoReqdep detected:" \ + echo "_noautoreq $(cat _noautoreq)" \ +fi \ %{nil} -# displayed in post +# default excludes for PEAR packages. +# if you need add something to the list use +# %%{expand:%%%%define _noautocompressdoc %%{_noautocompressdoc} otherexcludes} in your specfile. + +# this file displayed in %post %define _noautocompressdoc optional-packages.txt + +# don't provide tests +%define _noautoprov 'pear(tests/.*)'