Exemple #1
0
 /**
  * 
  */
 static function calculate($package)
 {
     $deps = new Deps();
     if ($package instanceof Package) {
         $di = new DepsItem($package);
     } else {
         $nvr = PackageManager::parseNRV($package);
         $di = new DepsItem($nvr['name']);
         $di->merge($nvr['version'], $nvr['rel']);
         if (count($di->getFiltered()) == 0) {
             return false;
         }
     }
     //if ( count($di->getFiltered()) == 1 &&
     // Лучший из доступных пакетов установлен?
     if (PackageManager::getInstalledPackage($di->getPackageName(), $di->getFiltered(true)->version)) {
         return $di->getFiltered(true);
     }
     $deps->queue = array(&$di);
     while (!is_null($fpi = $di->popNext()) && !$deps->push($fpi)) {
         $deps->queue = array(&$di);
     }
     // restore queue
     if (is_null($fpi)) {
         return false;
     }
     $di->pushBack($fpi);
     return $deps->getPackagesToDeploy();
 }