1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-09 16:42:57 +00:00

Deduplicate solver problems which list problems for dev-master AND 9999999-dev

This commit is contained in:
Jordi Boggiano 2020-03-13 09:50:28 +01:00
parent ce8e9d24bd
commit 8945936dbd
No known key found for this signature in database
GPG key ID: 7BBD42C429EC80BC
5 changed files with 136 additions and 8 deletions

View file

@ -15,6 +15,7 @@ namespace Composer\DependencyResolver;
use Composer\Package\CompletePackage;
use Composer\Package\Link;
use Composer\Package\PackageInterface;
use Composer\Package\AliasPackage;
use Composer\Repository\RepositorySet;
/**
@ -153,7 +154,7 @@ abstract class Rule
return 'Root composer.json requires '.$packageName.($constraint ? ' '.$constraint->getPrettyString() : '').' -> satisfiable by '.$this->formatPackagesUnique($pool, $packages).'.';
case self::RULE_FIXED:
$package = $this->reasonData['package'];
$package = $this->deduplicateMasterAlias($this->reasonData['package']);
if ($this->reasonData['lockable']) {
return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion().' and an update of this package was not requested.';
}
@ -161,14 +162,14 @@ abstract class Rule
return $package->getPrettyName().' is present at version '.$package->getPrettyVersion() . ' and cannot be modified by Composer';
case self::RULE_PACKAGE_CONFLICT:
$package1 = $pool->literalToPackage($literals[0]);
$package2 = $pool->literalToPackage($literals[1]);
$package1 = $this->deduplicateMasterAlias($pool->literalToPackage($literals[0]));
$package2 = $this->deduplicateMasterAlias($pool->literalToPackage($literals[1]));
return $package2->getPrettyString().' conflicts with '.$package1->getPrettyString().'.';
case self::RULE_PACKAGE_REQUIRES:
$sourceLiteral = array_shift($literals);
$sourcePackage = $pool->literalToPackage($sourceLiteral);
$sourcePackage = $this->deduplicateMasterAlias($pool->literalToPackage($sourceLiteral));
$requires = array();
foreach ($literals as $literal) {
@ -279,4 +280,13 @@ abstract class Rule
return $names;
}
private function deduplicateMasterAlias(PackageInterface $package)
{
if ($package instanceof AliasPackage && $package->getPrettyVersion() === '9999999-dev') {
$package = $package->getAliasOf();
}
return $package;
}
}