Summary: PEAR - PHP Extension and Application Repository
Summary(pl.UTF-8): PEAR - rozszerzenie PHP i repozytorium aplikacji
Name: php-pear
-Version: 1.2
+Version: 1.3.10
Release: 1
Epoch: 4
License: Public Domain
Group: Development/Languages/PHP
-Source0: channel-phpunit.xml
+Source0: php-channel-prov.php
+Source100: update-channels.sh
Source1: channel-phing.xml
Source2: channel-phpdb.xml
Source3: channel-firephp.xml
-Source10: php-channel-prov.php
+Source4: channel-symfony.xml
+Source5: channel-phpunit.xml
+Source6: channel-phpseclib.xml
+Source7: channel-horde.xml
+Source8: channel-rc.xml
+Source9: channel-ezc.xml
+Source10: channel-propel.xml
+Source11: channel-docblox.xml
+Source12: channel-michelf.xml
+Source13: channel-phpmd.xml
+Source14: channel-pdepend.xml
+Source15: channel-symfony2.xml
BuildRequires: /usr/bin/php
-BuildRequires: php-pear-PEAR
+BuildRequires: php-pear-PEAR >= 1:1.9.0
+BuildRequires: rpmbuild(macros) >= 1.570
Obsoletes: php-pear-additional_classes
Obsoletes: php4-pear
Conflicts: php-pear-PEAR < 1:1.7.2-10
BuildArch: noarch
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _registrydir %{php_pear_dir}/.registry
-
-%define __reg_provides php %{SOURCE10}
+%define __reg_provides php %{SOURCE0}
+# find channel provides
%define _use_internal_dependency_generator 0
%define __find_provides %{__reg_provides}
%define __find_requires %{nil}
+# avoid rpm 4.4.9 adding rm -rf buildroot, we need the dirs to check consistency
+%define __spec_clean_body %{nil}
+
%description
PEAR - PHP Extension and Application Repository.
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{php_pear_dir}/{bin,data,tests}
+install -d $RPM_BUILD_ROOT%{php_pear_dir}/{.registry,bin,data,tests}
# add extra channels
-pear -c pearrc config-set php_dir $RPM_BUILD_ROOT%{php_pear_dir}
-pear -c pearrc channel-add %{SOURCE0}
-pear -c pearrc channel-add %{SOURCE1}
-pear -c pearrc channel-add %{SOURCE2}
-pear -c pearrc channel-add %{SOURCE3}
-
-# install PEAR registry files
-install -d $RPM_BUILD_ROOT%{php_pear_dir}/.channels/.alias
-install -d $RPM_BUILD_ROOT%{_registrydir}/{.channel.{__uri,pecl.php.net},channels/.alias}
-touch $RPM_BUILD_ROOT%{php_pear_dir}/.depdb{,lock}
-touch $RPM_BUILD_ROOT%{php_pear_dir}/.channels/{__uri,{pear,pecl}.php.net}.reg
-touch $RPM_BUILD_ROOT%{php_pear_dir}/.channels/.alias/{pear,pecl}.txt
-touch $RPM_BUILD_ROOT%{php_pear_dir}/.filemap
-touch $RPM_BUILD_ROOT%{php_pear_dir}/.lock
-
-# TODO:
-install -d $RPM_BUILD_ROOT%{_registrydir}/.channel.pear.phpdb.org
+%{__pear} -c pearrc config-set php_dir $RPM_BUILD_ROOT%{php_pear_dir}
+for xml in $(awk '/^Source[0-9]+:.+channel-.+.xml$/ {print $NF}' %{_specdir}/%{name}.spec); do
+ %{__pear} -c pearrc channel-add %{_sourcedir}/$xml
+done
while read dir; do
install -d $RPM_BUILD_ROOT$dir
done <<EOF
-%{php_pear_dir}/.registry
-%{php_pear_dir}/bin
%{php_pear_dir}/Archive
%{php_pear_dir}/Auth
%{php_pear_dir}/Cache
%{php_pear_dir}/Console
%{php_pear_dir}/Contact
%{php_pear_dir}/Crypt
-%{php_pear_dir}/DB/DataObject
%{php_pear_dir}/Event
%{php_pear_dir}/File
%{php_pear_dir}/Genealogy
%{php_pear_dir}/HTTP
%{php_pear_dir}/HTTP/WebDAV
%{php_pear_dir}/HTTP/WebDAV/Tools
+%{php_pear_dir}/Horde
+%{php_pear_dir}/Horde/Stream
+%{php_pear_dir}/Horde/Text
+%{php_pear_dir}/Horde/Xml
%{php_pear_dir}/I18N
%{php_pear_dir}/Image
%{php_pear_dir}/MP3
+%{php_pear_dir}/Mail
%{php_pear_dir}/Math
%{php_pear_dir}/Net
+%{php_pear_dir}/Net/UserAgent
%{php_pear_dir}/Numbers
%{php_pear_dir}/PHP
%{php_pear_dir}/Payment
%{php_pear_dir}/Science
%{php_pear_dir}/Services
%{php_pear_dir}/Structures
+%{php_pear_dir}/Symfony
+%{php_pear_dir}/Symfony/Component
%{php_pear_dir}/Testing
%{php_pear_dir}/Text
+%{php_pear_dir}/Text/CAPTCHA
%{php_pear_dir}/Text/Spell
%{php_pear_dir}/URI
%{php_pear_dir}/Validate
%{php_pear_dir}/XML
EOF
-%if 0
-do
-%endif
-
%clean
-rm -rf $RPM_BUILD_ROOT
+cd $RPM_BUILD_ROOT%{php_pear_dir}
+
+check_channel_dirs() {
+ RPMFILE=%{name}-%{version}-%{release}.%{_target_cpu}.rpm
+ TMPFILE=$(mktemp)
+ find .channels .registry -type d | LC_ALL=C sort > $TMPFILE
+
+ # find finds also '.', so use option -B for diff
+ if rpm -qplv %{_rpmdir}/$RPMFILE | sed -ne '/^d/s,^.*%{php_pear_dir}/\.,.,p' | LC_ALL=C sort | diff -uB $TMPFILE - ; then
+ rm -rf $RPM_BUILD_ROOT
+ else
+ echo -e "\nNot so good, some channel directories are not included in package\n"
+ exit 1
+ fi
+ rm -f $TMPFILE
+}
+check_channel_dirs
%files
%defattr(644,root,root,755)
%dir %{php_pear_dir}/.channels
%dir %{php_pear_dir}/.channels/.alias
+# core channels
%{php_pear_dir}/.channels/__uri.reg
%{php_pear_dir}/.registry/.channel.__uri
%{php_pear_dir}/.channels/pear.php.net.reg
%{php_pear_dir}/.channels/.alias/pecl.txt
-
%{php_pear_dir}/.channels/pecl.php.net.reg
%{php_pear_dir}/.registry/.channel.pecl.php.net
+%{php_pear_dir}/.channels/.alias/phpdocs.txt
+%{php_pear_dir}/.channels/doc.php.net.reg
+%{php_pear_dir}/.registry/.channel.doc.php.net
+
+# addon channels
%{php_pear_dir}/.channels/.alias/phpunit.txt
%{php_pear_dir}/.channels/pear.phpunit.de.reg
%{php_pear_dir}/.registry/.channel.pear.phpunit.de
%{php_pear_dir}/.channels/.alias/firephp.txt
%{php_pear_dir}/.channels/pear.firephp.org.reg
+%{php_pear_dir}/.registry/.channel.pear.firephp.org
+
+%{php_pear_dir}/.channels/.alias/symfony.txt
+%{php_pear_dir}/.channels/pear.symfony-project.com.reg
+%{php_pear_dir}/.registry/.channel.pear.symfony-project.com
+
+%{php_pear_dir}/.channels/.alias/phpseclib.txt
+%{php_pear_dir}/.channels/phpseclib.sourceforge.net.reg
+%{php_pear_dir}/.registry/.channel.phpseclib.sourceforge.net
+
+%{php_pear_dir}/.channels/.alias/horde.txt
+%{php_pear_dir}/.channels/pear.horde.org.reg
+%{php_pear_dir}/.registry/.channel.pear.horde.org
+
+%{php_pear_dir}/.channels/.alias/rc.txt
+%{php_pear_dir}/.channels/pear.roundcube.net.reg
+%{php_pear_dir}/.registry/.channel.pear.roundcube.net
+
+%{php_pear_dir}/.channels/.alias/ezc.txt
+%{php_pear_dir}/.channels/components.ez.no.reg
+%{php_pear_dir}/.registry/.channel.components.ez.no
+
+%{php_pear_dir}/.channels/.alias/propel.txt
+%{php_pear_dir}/.channels/pear.propelorm.org.reg
+%{php_pear_dir}/.registry/.channel.pear.propelorm.org
+
+%{php_pear_dir}/.channels/.alias/docblox.txt
+%{php_pear_dir}/.channels/pear.docblox-project.org.reg
+%{php_pear_dir}/.registry/.channel.pear.docblox-project.org
+
+%{php_pear_dir}/.channels/.alias/michelf.txt
+%{php_pear_dir}/.channels/pear.michelf.com.reg
+%{php_pear_dir}/.registry/.channel.pear.michelf.com
+
+%{php_pear_dir}/.channels/.alias/pdepend.txt
+%{php_pear_dir}/.channels/pear.pdepend.org.reg
+%{php_pear_dir}/.registry/.channel.pear.pdepend.org
+
+%{php_pear_dir}/.channels/.alias/phpmd.txt
+%{php_pear_dir}/.channels/pear.phpmd.org.reg
+%{php_pear_dir}/.registry/.channel.pear.phpmd.org
+
+%{php_pear_dir}/.channels/.alias/symfony2.txt
+%{php_pear_dir}/.channels/pear.symfony.com.reg
+%{php_pear_dir}/.registry/.channel.pear.symfony.com