changes to package.xml 2.0
| From: | Greg Beaver | Date: | Thu, 16 Sep 2004 01:47:42 +0000 |
| Subject: | changes to package.xml 2.0 | ||
| Groups: | php.pear.dev | ||
| Request: | Send a blank email to pear-dev+get-33396@lists.php.net to get a copy of this message | ||
Hi all,
The most recent changes to package.xml are reflected in the package.xml for PEAR that is attached. I haven't yet fixed the xsl or the php code that can convert a package.xml 1.0 to 2.0, but this implements the changes I spoke of in an email earlier today, plus a few other refinements to make validation via xschema more portable. xschema support really sucks pretty much everywhere, so I am going to also make a relaxNG schema, if possible, that will do all the same stuff.
The biggest change is that dependencies' optional attribute no longer exists. Instead, dependencies are grouped into either a group of required dependencies, or named groups of optional dependencies. If a group that is named "default" is present, it will be installed as if the dependencies were required, unless another optional dep group is specifically requested.
The PEAR package, for instance, could easily define a web installer optional dependency group, and a gtk installer optional dependency group that would automatically determine the correct versions to download and install of the packages that are required to use these installers.
This obsoletes the need for --alldeps and --onlyreqdeps. I've also written code for two simple xml-rpc functions that will allow complete dependency resolution BEFORE downloading any code. I'm working on the extremely complicated client-side algorithm for checking all deps (you should see the UML diagram I wrote up to help me out :). The combination of determining whether the parameters are local files, remote URLs, or package names, checking out all deps and then seeing if the user passed in a missing dependency as another install parameter, or whether the package is already installed, and then retrieving deps from the installed info is pretty intense stuff.
I also added a 'bundle' release type that easily implements the "empty package" bundles that have been requested.
Greg