cvs: pearweb /rfc 003-dependencies.txt
| From: | Stig Bakken | Date: | Tue, 28 Aug 2001 11:14:06 +0000 |
| Subject: | cvs: pearweb /rfc 003-dependencies.txt | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-675@lists.php.net to get a copy of this message | ||
ssb Tue Aug 28 07:14:06 2001 EDT
Added files:
/pearweb/rfc 003-dependencies.txt
Log:
* "RFC" document for dependencies
Index: pearweb/rfc/003-dependencies.txt
+++ pearweb/rfc/003-dependencies.txt
Title: Dependencies in PEAR Packages
Version: $Revision: 1.1 $
Status: proposal
Maintainer: Stig S. Bakken <ssb@fast.no>
Created: 2001-08-28
Modified: 2001-08-28
1. Introduction
This document describes how PEAR should manage dependencies between
packages, or between packages and external components, operating
environment and other factors.
2. Dependency Phases
There are three phases where dependencies need to be considered:
* When a package is built (for packages with C code)
* When a package is installed
* When a package is used
When building a package, there may be dependencies to external
libraries, to a certain PHP version or maybe to a specific operating
system or web server. If the dependencies in this phase are not
satisfied, we'll never get to the next phase.
When installing a package, there may also be dependencies to external
libraries, especially if it contains a C extension linked with a
shared library. The most typical install-time dependencies are to
have another package installed, to have a bundled PHP feature enabled
or to have a specific or minimum PHP version.
Finally there are run-time dependencies. Hopefully everything should
be working fine when we get here, but there may be some code that
relies on configuration options that may be changed run-time, and the
installer has no way of checking that. Run-time dependencies should
be handled much more gracefully than build/install-time ones, applying
workarounds wherever possible. Php.ini options are typical examples
of run-time dependencies: whether the URL fopen wrappers are enabled,
whether PHP is running in safe mode, and so on.
3. Dependency Types
These are the different types of dependencies we would like to
support:
* another PEAR package installed
* specific version of another PEAR package installed
* minimum version of another PEAR package installed
* bundled PHP extension available
* specific version of PHP with bundled extension available
* minimum version of PHP with bundled extension available
* specific version of PHP
* minimum version of PHP
* external program
* external library for linking
* external runtime library
* operating system
* specific version of operating system
* minimum version of operating system
* web server
* specific version of web server
* minimum version of web server
* SAPI backend
* specific version of PHP with SAPI backend
* minimum version of PHP with SAPI backend