Prevent a package from having duplicate names

main
Jordi Boggiano 13 years ago
parent d03fb4804c
commit c425b8b6cb

@ -104,6 +104,7 @@ class DefaultPolicy implements PolicyInterface
public function compareByPriorityPreferInstalled(Pool $pool, array $installedMap, PackageInterface $a, PackageInterface $b, $ignoreReplace = false) public function compareByPriorityPreferInstalled(Pool $pool, array $installedMap, PackageInterface $a, PackageInterface $b, $ignoreReplace = false)
{ {
if ($a->getRepository() === $b->getRepository()) { if ($a->getRepository() === $b->getRepository()) {
// prefer aliases to the original package
if ($a->getName() === $b->getName()) { if ($a->getName() === $b->getName()) {
$aAliased = $a instanceof AliasPackage; $aAliased = $a instanceof AliasPackage;
$bAliased = $b instanceof AliasPackage; $bAliased = $b instanceof AliasPackage;

@ -73,18 +73,18 @@ abstract class BasePackage implements PackageInterface
public function getNames() public function getNames()
{ {
$names = array( $names = array(
$this->getName(), $this->getName() => true,
); );
foreach ($this->getProvides() as $link) { foreach ($this->getProvides() as $link) {
$names[] = $link->getTarget(); $names[$link->getTarget()] = true;
} }
foreach ($this->getReplaces() as $link) { foreach ($this->getReplaces() as $link) {
$names[] = $link->getTarget(); $names[$link->getTarget()] = true;
} }
return $names; return array_keys($names);
} }
/** /**

Loading…
Cancel
Save