binary packages
| From: | Greg Beaver | Date: | Wed, 08 Jun 2005 04:49:38 +0000 |
| Subject: | binary packages | ||
| Groups: | php.pecl.dev | ||
| Request: | Send a blank email to pecl-dev+get-2438@lists.php.net to get a copy of this message | ||
Hello all,
If you would be so kind, I would like to ask for a review of the binary
package feature in PEAR 1.4.0. We are nearing feature-freezeability,
and now is the time to pipe up with objections/suggestions.
http://pear.php.net/dtd/package-2.0.xsd
http://pear.php.net/manual/en/guide.developers.package2.pecl.php
http://pear.php.net/manual/en/guide.developers.package2.release.php#guide.developers.package2.release.extsrcrelease
Here's how it works currently.
extension foo, a pecl source package, distributes its source in the
package "Foo" and distributes a windows .dll in the package "Foo_win"
the package.xml for Foo specifies the binary packages to search for with
this tag sequence:
<extsrcrelease>
<binarypackage>Foo_win</binarypackage>
</extsrcrelease>
Both packages have a
<providesextension>foo</providesextension>
tag. The binary package Foo_win has this tag sequence in it:
<srcpackage>Foo</srcpackage>
<extbinrelease/>
That's all that is needed in order for the installer to automatically
install binary packages.
If an extension developer wants to distribute binary packages for more
than one OS in a single package, that is also possible.
<srcpackage>Foo</srcpackage>
<extbinrelease>
<installconditions>
<os>
<name>windows</name>
</os>
</installconditions>
<install name="foo_windows.dll" as "foo.dll"/>
</extbinrelease>
<extbinrelease>
<installconditions>
<arch>
<pattern>linux-i386</pattern>
</arch>
</installconditions>
<install name="foo_linux_i386.so" as "foo.so"/>
</extbinrelease>
<extbinrelease>
<installconditions>
<os>
<name>darwin</name>
</os>
</installconditions>
<install name="foo_darwin.so" as "foo.so"/>
</extbinrelease>
The only thing needed at pecl.php.net is to create the binary package
and to sync version numbers/state with the source package.
I have three main goals:
1) make it easy for maintainers to maintain the package.xml for an
extension binary/source release of an extension package
2) allow separate maintainers for source/binary packages
3) make installation of the binary package automatic if compiling the
extension fails and one is available for the user's OS.
Note that packages for windows like Winbinder would also be distributing
the source and .dll in separate packages - package.xml 2.0 enforces this
separation to make installation of binary packages possible.
This will obviously benefit Windows users more than others, but it will
also generate tons more interest in PECL, as evidenced by what happened
to PEAR when it became accessible to windows folks.
Greg