Paulo Martinez a écrit :
It should be enough to specify Require/Provides-tags. As done in php-5.2.6-2.el5s2.src.rpm and php-mcrypt (src: php-extras) via
%define apiver xxxxxxx
php-5.2.6-2.el5s2.src.rpm defines apiver 20041225. And here comes my question: It defines this ^^ ?
rpm -q php-common-5.2.6-2.el5s2 --provides | grep api php(api) = 20041225 php-api = 20041225
I saw ; rpm -qp --provides php-common-5.2.6-2.el5s2.x86_64.rpm php(api) = 20041225 php(zend-abi) = 20060613 php-api = 20041225
php(api) is not meanfull since it haven't chance for years (2004) Only php(zend-api) is useful
php 5.1.x => 20050922 php 5.2.x => 20060613 php 5.3.x => 20090115
so far on rpms site. But
php -i | grep -P 'PHP API|PHP Version' PHP Version => 5.2.6 PHP API => 20041225
Check "phpize -v" : Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519
contrary to above log errors (API=20060613).
Exactly what I write above. "PHP Api Version" as no sense as the php extension loader check the "Zend Module Api No"
Anyway, it explains why ex. php-mcrypt did't bleated at installation time about different APIs - it was satisfied.
php-mcrypt (src: php-extras) define apiver on compile time
%global apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1)
Should use (simpler) %php_core_api and %php_zend_api from /etc/rpm/macros.php.
Generally Fedora package use something like :
%global php_apiver %((echo 0; php -i 2>/dev/null | sed -n 's/^PHP API => //p') | tail -1)
%if %{?php_zend_api}0 # For php 5.2.x use macros from /etc/rpm/macros.php Requires: php(zend-abi) = %{php_zend_api} Requires: php(api) = %{php_core_api} %else # Poor check for older PHP Requires: php-api = %{php_apiver} %endif
+