Fix selection of best package to force update of dev packages, fixes #1252
parent
125ff3e4f5
commit
9856e9e3f5
|
@ -429,27 +429,33 @@ class Installer
|
|||
continue;
|
||||
}
|
||||
|
||||
$newPackage = null;
|
||||
// find similar packages (name/version) in all repositories
|
||||
$matches = $pool->whatProvides($package->getName(), new VersionConstraint('=', $package->getVersion()));
|
||||
foreach ($matches as $match) {
|
||||
foreach ($matches as $index => $match) {
|
||||
// skip local packages
|
||||
if (!in_array($match->getRepository(), $repositories, true)) {
|
||||
unset($matches[$index]);
|
||||
continue;
|
||||
}
|
||||
|
||||
// skip providers/replacers
|
||||
if ($match->getName() !== $package->getName()) {
|
||||
unset($matches[$index]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$newPackage = $match;
|
||||
break;
|
||||
$matches[$index] = $match->getId();
|
||||
}
|
||||
|
||||
// select prefered package according to policy rules
|
||||
if ($matches = $policy->selectPreferedPackages($pool, array(), $matches)) {
|
||||
$newPackage = $pool->literalToPackage($matches[0]);
|
||||
|
||||
if ($newPackage && $newPackage->getSourceReference() !== $package->getSourceReference()) {
|
||||
$operations[] = new UpdateOperation($package, $newPackage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// force installed package to update to referenced version if it does not match the installed version
|
||||
$references = $this->package->getReferences();
|
||||
|
|
Loading…
Reference in New Issue