Re: Patch version 2: automatic dependency resolution, and new install options --alldeps, plus order-independent unin

From: Date: Sat, 23 Aug 2003 07:18:37 +0000
Subject: Re: Patch version 2: automatic dependency resolution, and new install options --alldeps, plus order-independent unin
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-20429@lists.php.net to get a copy of this message
On 23 Aug 2003 at 3:14, Greg Beaver wrote: > As requested, order of packages no longer matters for pear uninstall. > To test try this: > > pear install -a Mail > > pear uninstall Net_Socket Net_SMTP Mail > > These are in exactly backwards order, and with the patch, it > uninstalls perfectly :) > > I should note that without this patch, upgrade-all will not work in > certain situations because order of upgrading is important, and in > some cases, new versions add dependencies. It's not currently in the > patch, but it would be possible to add --alldeps and --allreqdeps to > upgrade-all as options as well. It would literally involve only > adding them to the list of command-line options, as the functionality > is independent from command. The question is whether this might be a > ridiculous amount of processing/download time, since XML_RPC is used > to retrieve the list of releases for every dependency that has not > already been processed. Of course, upgrade-all is pretty intensive, > so maybe the penalty is worth it to those users? Any opinions? Maybe automatically add an --allreqdeps when doing an upgrade / upgrade-all? Still optionally allow --alldeps. Just a thought Stefan > Greg Beaver wrote: > > Hi, > > > > As I mentioned a few days ago in another thread, I've been > > struggling with how many dependencies phpDocumentor 2.0 can have on > > existing PEAR packages, and how to solve this problem. Well, the > > solution to one major stumbling block is attached to this email :). > > > > The attached patch brings PEAR installation to the same level of > > sophistication that apt possesses. For the first time, automatic > > dependency resolution and install is possible. It is experimental, > > but fully tested. I'd love it if a few brave souls would be willing > > to back up their existing pear/PEAR directory and try this patch > > out, to assist in the development. I'm also not particularly happy > > with the length of the command-line to PEAR_Installer::download() > > and if anyone can see a refinement, I've love to get that in here. > > Note that the patch was made against the HEAD of php-src/pear, *NOT* > > version 1.2.1. > > > > What does the patch do? > > ----------------------- > > > > * makes the order of packages passed to pear install/pear upgrade > > unimportant > > > > In previous versions this would fail: > > > > pear install HTTP_Request Net_URL > > > > With this patch, it correctly switches the install order so that > > dependencies are installed first. > > > > * adds the new install options --alldeps and --allreqdeps > > > > --alldeps instructs pear to recursively find and install all > > required and all optional dependencies --allreqdeps instructs pear > > to recursively find and install all required dependencies only > > > > usage example: pear install --alldeps SOAP > > usage example: pear install --a SOAP > > > > These examples will find the dependencies of SOAP: Mail_Mime, > > HTTP_Request, Net_URL, and Net_DIME and download them. > > > > Then it will find all the dependencies of the dependencies, and > > download Net_Socket as a result (Net_URL will not be downloaded > > twice). If any of these dependencies are installed and up to date, > > they will not be downloaded. If they are installed and not up to > > date, they will be upgraded. > > > > Finally, the packages will be sorted into the order needed to > > install them, and installed. I've tested with both Cache (3 levels > > of dependency) and SOAP (2 levels plus common dependency across > > levels) > > > > > > usage example: pear install --allreqdeps > > pearcvs/pear/Perm_LiveUser/package.xml > > usage example: pear install --A > > pearcvs/pear/Perm_LiveUser/package.xml > > > > These examples assume pearcvs/ is a cvs checkout of the pear/ module > > from cvs.php.net > > > > This one will install LiveUser 0.8 from CVS, and skip the download > > and install of MDB, DB and HTTP_Request > > > > * splits PEAR_Installer::install() into 3 methods: private > > _downloadFile(), public download() and public install(). This split > > allows the download of all files prior to any installation attempt, > > to allow full dependency resolution and sorting for installation. > > > > * Numerous important failure tests > > - failure on package not existing, or having no releases yet > > - failure if the preferred state is too high for dependencies to be > > > > installed (Net_DIME only has beta releases, for example, so if > > preferred_state is stable, it will fail on installation) > > > > What doesn't the patch do? > > -------------------------- > > * Major issue: no check for major version upgrade/install - waiting > > for resolution on how major upgrade/install will be handled (this is > > an existing issue in the pear installer, so I decided not to "fix" > > it) > > > > * No change is made to pear uninstall. > > > > "pear uninstall Net_URL HTTP_Request" will still fail due to > > incorrect ordering of packages on the command-line, and "pear > > uninstall SOAP" will not attempt to uninstall any dependencies. I > > didn't feel comfortable with the safety of adding --alldeps or > > --allreqdeps to uninstall, but if there is a demand for it, it can > > be easily added. (uninstalling dependencies is MUCH simpler than > > installing them). > > > > :) > > Greg

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