/** * Compare two package's package.xml, and sort * so that dependencies are installed first * * This is a crude compare, real dependency checking is done on install. * The only purpose this serves is to make the command-line * order-independent (you can list a dependent package first, and * installation occurs in the order required) * @access private */ function _sortPkgDeps($p1, $p2) { $p1name = $p1['info']['package']; $p2name = $p2['info']['package']; $p1deps = PEAR_Common::_getPkgDeps($p1); $p2deps = PEAR_Common::_getPkgDeps($p2); if (!count($p1deps) && !count($p2deps)) { return 0; // order makes no difference } if (!count($p1deps)) { return -1; // package 2 has dependencies, package 1 doesn't } if (!count($p2deps)) { return 1; // package 2 has dependencies, package 1 doesn't } // both have dependencies if (in_array($p1name, $p2deps)) { return -1; // put package 1 first } if (in_array($p2name, $p1deps)) { return 1; // put package 2 first } // doesn't really matter if neither depends on the other return 0; }