What about to start discussing about managment of binary pecl
packages?

I'm not the best person for listing the requirements, but here are some
ideas:

pecl package name
-----------------

The name of the extension would be:

peclfoo-bin-<OS>-<ARCH>-3.1.2-<STATE>.tgz

The os (Operating system) and arch (CPU type), would be the value
returned by the OS_Guess class. STATE is a valid PEAR_Common package
state.

package creation
----------------

pear build -b peclfoo-3.1.2.tgz

The -b (or --bin) option generates the package containing only the
compiled extension and the files marked with role "php", "doc", "test",
"data" or "script" with the original package.xml modified
automagically (explained in the next point).

Without args it compiles the extension as it does nowadays.

An idea would be to create a COMPILED_AT.txt file with some data about
the env where the extension was compiled at, like the
php version, the php_uname(), the extra libs versions, os vendor
version, /etc/shadow file, etc.

package.xml
-----------

As a binary release shares the same release data with the source
distrib, except the filelist (please confirm if an
extension compiled may have different dependencies across different
platforms), the same package.xml file could be used for all kind of
distribs. Let's say something like:

<release>
         <version>...
         <date>
         <notes>
         <filelist>..
                     <file role="ext" os="" arch="">
</release>


installation
------------

pear install -b peclfoo (download and install the binary distrib of
peclfoo for your current OS-ARCH)

pear install peclfoo-bin-<OS>-<ARCH>-3.1.2-<STATE>.tgz

All the files with role="ext" would be installed
in "ext_dir" (pear cmd setting). The user can config it with "pear config-set 
ext_dir=XXX".
If this var is not explicitly set, the following will be used for
finding a default location:

if (getenv('PHP_PEAR_EXTENSION_DIR')) {
     define('PEAR_CONFIG_DEFAULT_EXT_DIR', getenv('PHP_PEAR_EXTENSION_DIR'));
 } else {
    if (ini_get('extension_dir')) {
        define('PEAR_CONFIG_DEFAULT_EXT_DIR', ini_get('extension_dir'));
    } elseif (defined('PEAR_EXTENSION_DIR') && @is_dir(PEAR_EXTENSION_DIR)) {
        define('PEAR_CONFIG_DEFAULT_EXT_DIR', PEAR_EXTENSION_DIR);
    } elseif (defined('PHP_EXTENSION_DIR')) {
        define('PEAR_CONFIG_DEFAULT_EXT_DIR', PHP_EXTENSION_DIR);
    } else {
        define('PEAR_CONFIG_DEFAULT_EXT_DIR', '.');
    }
}

Listing in the web
------------------

A new column "Type" should be added to the release listing under the
package home page at pear.php.net, saying that the package is a binary
distrib compiled for OS X and ARCH Y or sources.

-- 
 Tomas V.V.Cox                          mailto:[EMAIL PROTECTED]



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to