Re: a case for subpackages

From: Date: Wed, 27 Aug 2003 10:47:57 +0000
Subject: Re: a case for subpackages
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-20617@lists.php.net to get a copy of this message
Excuse me but I don't see the need quiet clear. $ pear install Submain Submain needs Main $ pear install Main ok $ pear install Submain ok $ pear uninstall Main can not uninstall, Submain depends on Main Where's the problem? I guess that "subpackages" adds extra overhead we don't really need, without saying that we have to warn the user that we are going to uninstall his packages :) Tomas V.V.Cox On Monday, August 25, 2003 6:56, Greg Beaver wrote: > Hi, > I'd like to make a case for subpackages in PEAR. First of all, the > definition of a subpackage is dependency-based, and would not require > any modification at all to package.dtd, or installation code (even the > patch I provided for automatic dependency resolution would be unaffected). > A subpackage is a package that depends on another package that > optionally depends on the subpackage. > In package.xml terms that means: > Package Main's package.xml dependencies: > <deps> > <dep type="pkg" ... optional="yes">Main_Subpackage</dep> > </deps> > Package Main_Subpackage's package.xml dependencies: > <deps> > <dep type="pkg" ... optional="no">Main</dep> > </deps> > This relationship will never occur in a standard dependency. > In practical terms, this means that subpackages must be uninstalled with > the main package, but need not be installed with the main package. > Obviously, anything that must be installed with the main package is > either a standard dependency or a part of the main package itself. > Subpackages by definition cannot exist as standalone packages - they > depend on the main package to exist at all. > A side effect of this definition is obvious: if one wants to uninstall > the main package, it would be pointless to keep any subpackages > installed, as they can't be used without the main package. There are > countless examples. MDB drivers, phpDocumentor Converters, Log > children, Cache containers - all of these are subpackages, and it should > be possible to install some, all, or none of them (for the odd cases > where a user only uses a custom driver/converter/container). > Why separate subpackages from the main package? > 1) Subpackages often have a very different stability level from the main > package, and users who only want stable code should not be forced to > read documentation just to determine the stability of a package. > 2) Upgrading a subpackage that has changes is much more efficient in > both time and bandwidth than upgrading the entire package at once. New > subpackages can be released without a new release of the main package > 3) Applications can depend on a minimal set of subpackages, reducing > dependency bloat > This patch implements subpackage handling for uninstall. If --nodeps is > passed, subpackage uninstall will not occur. Note that the patch was > made against CVS - if you wish to test both this and the > auto-dependency-resolution patch, this one must be applied first, as all > modifications to Installer.php in this patch occur after the install() > method > Greg -- Tomas V.V.Cox mailto:cox@idecnet.com

« previous php.pear.dev (#20617) next »