Hi,
I plan to work on PHP spec file for Arch Specific Requires (the %{?_isa} macro use)
Some changes are quite trivial
Requires: php-common%{?_isa} = %{version}-%{release}
But we have a lot of virtual provides which need to be fixed
Provides: php-bz2%{?_isa}, php-calendar%{?_isa}, php-ctype%{?_isa}... (keeping the non-arch specific ones for noarch package)
Shouldn't we also use version in this ? Provides: php-bz2%{?_isa} = %{version}-%{release}
If we also change Provides: php(api)%{?_isa} = %{apiver} Provides: php(zend-abi)%{?_isa} = %{zendver}
This will requires a Guidelines change for pecl package to use Requires: php(zend-abi)%{?_isa} = %{php_zend_api} Requires: php(api)%{?_isa} = %{php_core_api}
@Joe, do you plan to change httpd ? to be able to Requires: httpd-mmn%{?_isa} = %{httpd_mmn}
In which branch should we do this change ?
Thanks for your feedbacks
Remi.
On Sat, Feb 12, 2011 at 11:17:20AM +0100, Remi Collet wrote:
Hi,
I plan to work on PHP spec file for Arch Specific Requires (the %{?_isa} macro use)
Great, thanks!
Some changes are quite trivial
Requires: php-common%{?_isa} = %{version}-%{release}
But we have a lot of virtual provides which need to be fixed
Provides: php-bz2%{?_isa}, php-calendar%{?_isa}, php-ctype%{?_isa}... (keeping the non-arch specific ones for noarch package)
Sounds good. Is this backwards-compatible, such that any package which
Requires: php-bz2
will still work a php package using the arch-specific provides? It's not obvious from the guideline drafts.
Shouldn't we also use version in this ? Provides: php-bz2%{?_isa} = %{version}-%{release}
This came up before. We can... but some (though possibly a minority) of the bundled extensions do encode an "extension version" which is *different* to the PHP version.
$ php --re spl | head -1 Extension [ <persistent> extension #22 SPL version 0.2 ] {
so should we use %{version} for spl or 0.2?
If we also change Provides: php(api)%{?_isa} = %{apiver} Provides: php(zend-abi)%{?_isa} = %{zendver}
This will requires a Guidelines change for pecl package to use Requires: php(zend-abi)%{?_isa} = %{php_zend_api} Requires: php(api)%{?_isa} = %{php_core_api}
@Joe, do you plan to change httpd ? to be able to Requires: httpd-mmn%{?_isa} = %{httpd_mmn}
I don't get from the drar
In which branch should we do this change ?
master + f15?
Regards, Joe
Le 12/02/2011 17:05, Joe Orton a écrit :
Provides: php-bz2%{?_isa}, php-calendar%{?_isa}, php-ctype%{?_isa}... (keeping the non-arch specific ones for noarch package)
Sounds good. Is this backwards-compatible, such that any package which
Requires: php-bz2
will still work a php package using the arch-specific provides? It's not obvious from the guideline drafts.
Yes.. not obvious.
For "real" package, RPM generate 2 provides, for example
php-mysql php-mysql(x86-64)
So, for virtual, i think we need to do the same
php-mysqli php-mysqli(x86-64) which is my plan.
@Joe, do you plan to change httpd ? to be able to Requires: httpd-mmn%{?_isa} = %{httpd_mmn}
I don't get from the drar
Sorry... I don't understand your answer..
I think this is really not clear, and this should be raised on the packaging ML.
I have notice than xulrunner already provides the 2
Provides: gecko-libs = %{gecko_verrel} Provides: gecko-libs%{?_isa} = %{gecko_verrel}
but this is probably a terrible issue for php, httpd, ... as we will have to maintain distinct spec file in each branch for each extension (pecl ones)....
Remi.
On Wed, Feb 16, 2011 at 07:12:17PM +0100, Remi Collet wrote:
Le 12/02/2011 17:05, Joe Orton a écrit :
@Joe, do you plan to change httpd ? to be able to Requires: httpd-mmn%{?_isa} = %{httpd_mmn}
I don't get from the drar
Sorry... I don't understand your answer..
Sorry, I didn't finish writing that sentence.
We could just make the mmn include the arch for httpd, to avoid changing all mod_* packages, as far as I can tell.
httpd Provides: httpd-mmn = 20051115-x86-64, httpd-mmn = 20051115
/usr/include/httpd/.mmn contains 20051115-x86-64
so all future mod_* package rebuilds pick up the arch-specific mmn without change, and httpd is backwards-compat with old packages.
Does that seem reasonable? (We should make this list lamp-devel@ or something :)
Regards, Joe
Le 17/02/2011 13:09, Joe Orton a écrit :
We could just make the mmn include the arch for httpd, to avoid changing all mod_* packages, as far as I can tell.
httpd Provides: httpd-mmn = 20051115-x86-64, httpd-mmn = 20051115
Sounds really good for me.
/usr/include/httpd/.mmn contains 20051115-x86-64
so all future mod_* package rebuilds pick up the arch-specific mmn without change, and httpd is backwards-compat with old packages.
Yes :) And of course, old provides can be removed when value change from 20051115
I have make first changes / tests on php package (only a test package of php 5.3.6RC1 on my repository)
This imply quite a lot of (but simple) changes : https://github.com/remicollet/remirepo/commit/79885a3e6bad3fa13c81e5cde9c536...
With the same solution,
# rpm -q --provides php-common php-pdo | grep -i abi php-zend-abi = 20090626 php(zend-abi) = 20090626 php-zend-abi = 20090626-x86-64 php(zend-abi) = 20090626-x86-64 php-pdo-abi = 20080721 php-pdo-abi = 20080721-x86-64
I will do some more tests before pushing this to rawhide (and probably with 5.3.6 which should be available soon)
Only 1 minor issue detected for now, the test (used by pecl ext.) %if %{?php_zend_api}0
Must be changed to %if 0%{?php_zend_api:1}
Trivial to fix .
Remi.
On Thu, Feb 17, 2011 at 06:31:36PM +0100, Remi Collet wrote:
Le 17/02/2011 13:09, Joe Orton a écrit :
We could just make the mmn include the arch for httpd, to avoid changing all mod_* packages, as far as I can tell.
httpd Provides: httpd-mmn = 20051115-x86-64, httpd-mmn = 20051115
Sounds really good for me.
OK cool, I'll make this change for f15+master.
/usr/include/httpd/.mmn contains 20051115-x86-64
so all future mod_* package rebuilds pick up the arch-specific mmn without change, and httpd is backwards-compat with old packages.
Yes :) And of course, old provides can be removed when value change from 20051115
Yup.
I have make first changes / tests on php package (only a test package of php 5.3.6RC1 on my repository)
This imply quite a lot of (but simple) changes : https://github.com/remicollet/remirepo/commit/79885a3e6bad3fa13c81e5cde9c536...
Looks great, thanks, please go ahead and push when you're ready.
One issue that these bits:
sed -e "s/@PHP_APIVER@/%{apiver}-%{?__isa}/"
are going to have unexpected outcome for older RPM without __isa defined. Maybe at the top use:
%if %{?__isa:1} %define isasuffix -%{__isa} %else %define isasuffix %nil %endif
and use that in place of -%{?__isa} throughout?
Regards, Joe
php-devel@lists.fedoraproject.org