commit
2a8ea0bcc9
18
.php_cs
18
.php_cs
|
@ -1,5 +1,15 @@
|
|||
<?php
|
||||
|
||||
$header = <<<EOF
|
||||
This file is part of Composer.
|
||||
|
||||
(c) Nils Adermann <naderman@naderman.de>
|
||||
Jordi Boggiano <j.boggiano@seld.be>
|
||||
|
||||
For the full copyright and license information, please view the LICENSE
|
||||
file that was distributed with this source code.
|
||||
EOF;
|
||||
|
||||
$finder = Symfony\CS\Finder\DefaultFinder::create()
|
||||
->files()
|
||||
->name('*.php')
|
||||
|
@ -15,9 +25,14 @@ return Symfony\CS\Config\Config::create()
|
|||
'@PSR2' => true,
|
||||
'duplicate_semicolon' => true,
|
||||
'extra_empty_lines' => true,
|
||||
'header_comment' => array('header' => $header),
|
||||
'include' => true,
|
||||
'long_array_syntax' => true,
|
||||
'method_separation' => true,
|
||||
'multiline_array_trailing_comma' => true,
|
||||
'namespace_no_leading_whitespace' => true,
|
||||
'no_blank_lines_after_class_opening' => true,
|
||||
'no_empty_lines_after_phpdocs' => true,
|
||||
'object_operator' => true,
|
||||
'operators_spaces' => true,
|
||||
'phpdoc_align' => true,
|
||||
|
@ -30,7 +45,10 @@ return Symfony\CS\Config\Config::create()
|
|||
'phpdoc_type_to_var' => true,
|
||||
'psr0' => true,
|
||||
'return' => true,
|
||||
'remove_leading_slash_use' => true,
|
||||
'remove_lines_between_uses' => true,
|
||||
'single_array_no_trailing_comma' => true,
|
||||
'single_blank_line_before_namespace' => true,
|
||||
'spaces_cast' => true,
|
||||
'standardize_not_equal' => true,
|
||||
'ternary_spaces' => true,
|
||||
|
|
|
@ -1,14 +1,19 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is copied from the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
namespace Composer\Autoload;
|
||||
|
|
|
@ -20,6 +20,8 @@ use Composer\Package\PackageInterface;
|
|||
interface PolicyInterface
|
||||
{
|
||||
public function versionCompare(PackageInterface $a, PackageInterface $b, $operator);
|
||||
|
||||
public function findUpdatePackages(Pool $pool, array $installedMap, PackageInterface $package);
|
||||
|
||||
public function selectPreferredPackages(Pool $pool, array $installedMap, array $literals);
|
||||
}
|
||||
|
|
|
@ -23,25 +23,44 @@ class Solver
|
|||
const BRANCH_LITERALS = 0;
|
||||
const BRANCH_LEVEL = 1;
|
||||
|
||||
/** @var PolicyInterface */
|
||||
protected $policy;
|
||||
/** @var Pool */
|
||||
protected $pool;
|
||||
/** @var RepositoryInterface */
|
||||
protected $installed;
|
||||
/** @var Ruleset */
|
||||
protected $rules;
|
||||
/** @var RuleSetGenerator */
|
||||
protected $ruleSetGenerator;
|
||||
protected $updateAll;
|
||||
/** @var array */
|
||||
protected $jobs;
|
||||
|
||||
protected $addedMap = array();
|
||||
/** @var int[] */
|
||||
protected $updateMap = array();
|
||||
/** @var RuleWatchGraph */
|
||||
protected $watchGraph;
|
||||
/** @var Decisions */
|
||||
protected $decisions;
|
||||
/** @var int[] */
|
||||
protected $installedMap;
|
||||
|
||||
/** @var int */
|
||||
protected $propagateIndex;
|
||||
/** @var array[] */
|
||||
protected $branches = array();
|
||||
/** @var Problem[] */
|
||||
protected $problems = array();
|
||||
/** @var array */
|
||||
protected $learnedPool = array();
|
||||
/** @var array */
|
||||
protected $learnedWhy = array();
|
||||
|
||||
/**
|
||||
* @param PolicyInterface $policy
|
||||
* @param Pool $pool
|
||||
* @param RepositoryInterface $installed
|
||||
*/
|
||||
public function __construct(PolicyInterface $policy, Pool $pool, RepositoryInterface $installed)
|
||||
{
|
||||
$this->policy = $policy;
|
||||
|
@ -50,12 +69,16 @@ class Solver
|
|||
$this->ruleSetGenerator = new RuleSetGenerator($policy, $pool);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getRuleSetSize()
|
||||
{
|
||||
return count($this->rules);
|
||||
}
|
||||
|
||||
// aka solver_makeruledecisions
|
||||
|
||||
private function makeAssertionRuleDecisions()
|
||||
{
|
||||
$decisionStart = count($this->decisions) - 1;
|
||||
|
@ -135,6 +158,9 @@ class Solver
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $ignorePlatformReqs
|
||||
*/
|
||||
protected function checkForRootRequireProblems($ignorePlatformReqs)
|
||||
{
|
||||
foreach ($this->jobs as $job) {
|
||||
|
@ -169,6 +195,11 @@ class Solver
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Request $request
|
||||
* @param bool $ignorePlatformReqs
|
||||
* @return array
|
||||
*/
|
||||
public function solve(Request $request, $ignorePlatformReqs = false)
|
||||
{
|
||||
$this->jobs = $request->getJobs();
|
||||
|
@ -243,6 +274,8 @@ class Solver
|
|||
|
||||
/**
|
||||
* Reverts a decision at the given level.
|
||||
*
|
||||
* @param int $level
|
||||
*/
|
||||
private function revert($level)
|
||||
{
|
||||
|
@ -268,8 +301,7 @@ class Solver
|
|||
}
|
||||
}
|
||||
|
||||
/**-------------------------------------------------------------------
|
||||
*
|
||||
/**
|
||||
* setpropagatelearn
|
||||
*
|
||||
* add free decision (a positive literal) to decision queue
|
||||
|
@ -282,6 +314,11 @@ class Solver
|
|||
*
|
||||
* returns the new solver level or 0 if unsolvable
|
||||
*
|
||||
* @param int $level
|
||||
* @param string|int $literal
|
||||
* @param bool $disableRules
|
||||
* @param Rule $rule
|
||||
* @return int
|
||||
*/
|
||||
private function setPropagateLearn($level, $literal, $disableRules, Rule $rule)
|
||||
{
|
||||
|
@ -331,6 +368,13 @@ class Solver
|
|||
return $level;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $level
|
||||
* @param array $decisionQueue
|
||||
* @param bool $disableRules
|
||||
* @param Rule $rule
|
||||
* @return int
|
||||
*/
|
||||
private function selectAndInstall($level, array $decisionQueue, $disableRules, Rule $rule)
|
||||
{
|
||||
// choose best package to install from decisionQueue
|
||||
|
@ -346,7 +390,12 @@ class Solver
|
|||
return $this->setPropagateLearn($level, $selectedLiteral, $disableRules, $rule);
|
||||
}
|
||||
|
||||
protected function analyze($level, $rule)
|
||||
/**
|
||||
* @param int $level
|
||||
* @param Rule $rule
|
||||
* @return array
|
||||
*/
|
||||
protected function analyze($level, Rule $rule)
|
||||
{
|
||||
$analyzedRule = $rule;
|
||||
$ruleLevel = 1;
|
||||
|
@ -452,7 +501,11 @@ class Solver
|
|||
return array($learnedLiterals[0], $ruleLevel, $newRule, $why);
|
||||
}
|
||||
|
||||
private function analyzeUnsolvableRule($problem, $conflictRule)
|
||||
/**
|
||||
* @param Problem $problem
|
||||
* @param Rule $conflictRule
|
||||
*/
|
||||
private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule)
|
||||
{
|
||||
$why = spl_object_hash($conflictRule);
|
||||
|
||||
|
@ -476,7 +529,12 @@ class Solver
|
|||
$problem->addRule($conflictRule);
|
||||
}
|
||||
|
||||
private function analyzeUnsolvable($conflictRule, $disableRules)
|
||||
/**
|
||||
* @param Rule $conflictRule
|
||||
* @param bool $disableRules
|
||||
* @return int
|
||||
*/
|
||||
private function analyzeUnsolvable(Rule $conflictRule, $disableRules)
|
||||
{
|
||||
$problem = new Problem($this->pool);
|
||||
$problem->addRule($conflictRule);
|
||||
|
@ -533,7 +591,10 @@ class Solver
|
|||
return 0;
|
||||
}
|
||||
|
||||
private function disableProblem($why)
|
||||
/**
|
||||
* @param Rule $why
|
||||
*/
|
||||
private function disableProblem(Rule $why)
|
||||
{
|
||||
$job = $why->getJob();
|
||||
|
||||
|
@ -545,6 +606,7 @@ class Solver
|
|||
|
||||
// disable all rules of this job
|
||||
foreach ($this->rules as $rule) {
|
||||
/** @var Rule $rule */
|
||||
if ($job === $rule->getJob()) {
|
||||
$rule->disable();
|
||||
}
|
||||
|
@ -562,13 +624,13 @@ class Solver
|
|||
$this->makeAssertionRuleDecisions();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------
|
||||
* enable/disable learnt rules
|
||||
*
|
||||
* we have enabled or disabled some of our rules. We now re-enable all
|
||||
* of our learnt rules except the ones that were learnt from rules that
|
||||
* are now disabled.
|
||||
*/
|
||||
/**
|
||||
* enable/disable learnt rules
|
||||
*
|
||||
* we have enabled or disabled some of our rules. We now re-enable all
|
||||
* of our learnt rules except the ones that were learnt from rules that
|
||||
* are now disabled.
|
||||
*/
|
||||
private function enableDisableLearnedRules()
|
||||
{
|
||||
foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) {
|
||||
|
@ -591,22 +653,28 @@ class Solver
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $disableRules
|
||||
*/
|
||||
private function runSat($disableRules = true)
|
||||
{
|
||||
$this->propagateIndex = 0;
|
||||
|
||||
// /*
|
||||
// * here's the main loop:
|
||||
// * 1) propagate new decisions (only needed once)
|
||||
// * 2) fulfill jobs
|
||||
// * 3) fulfill all unresolved rules
|
||||
// * 4) minimalize solution if we had choices
|
||||
// * if we encounter a problem, we rewind to a safe level and restart
|
||||
// * with step 1
|
||||
// */
|
||||
/*
|
||||
* here's the main loop:
|
||||
* 1) propagate new decisions (only needed once)
|
||||
* 2) fulfill jobs
|
||||
* 3) fulfill all unresolved rules
|
||||
* 4) minimalize solution if we had choices
|
||||
* if we encounter a problem, we rewind to a safe level and restart
|
||||
* with step 1
|
||||
*/
|
||||
|
||||
$decisionQueue = array();
|
||||
$decisionSupplementQueue = array();
|
||||
/**
|
||||
* @todo this makes $disableRules always false; determine the rationale and possibly remove dead code?
|
||||
*/
|
||||
$disableRules = array();
|
||||
|
||||
$level = 1;
|
||||
|
|
|
@ -197,162 +197,202 @@ class AliasPackage extends BasePackage implements CompletePackageInterface
|
|||
{
|
||||
return $this->aliasOf->getType();
|
||||
}
|
||||
|
||||
public function getTargetDir()
|
||||
{
|
||||
return $this->aliasOf->getTargetDir();
|
||||
}
|
||||
|
||||
public function getExtra()
|
||||
{
|
||||
return $this->aliasOf->getExtra();
|
||||
}
|
||||
|
||||
public function setInstallationSource($type)
|
||||
{
|
||||
$this->aliasOf->setInstallationSource($type);
|
||||
}
|
||||
|
||||
public function getInstallationSource()
|
||||
{
|
||||
return $this->aliasOf->getInstallationSource();
|
||||
}
|
||||
|
||||
public function getSourceType()
|
||||
{
|
||||
return $this->aliasOf->getSourceType();
|
||||
}
|
||||
|
||||
public function getSourceUrl()
|
||||
{
|
||||
return $this->aliasOf->getSourceUrl();
|
||||
}
|
||||
|
||||
public function getSourceUrls()
|
||||
{
|
||||
return $this->aliasOf->getSourceUrls();
|
||||
}
|
||||
|
||||
public function getSourceReference()
|
||||
{
|
||||
return $this->aliasOf->getSourceReference();
|
||||
}
|
||||
|
||||
public function setSourceReference($reference)
|
||||
{
|
||||
return $this->aliasOf->setSourceReference($reference);
|
||||
}
|
||||
|
||||
public function setSourceMirrors($mirrors)
|
||||
{
|
||||
return $this->aliasOf->setSourceMirrors($mirrors);
|
||||
}
|
||||
|
||||
public function getSourceMirrors()
|
||||
{
|
||||
return $this->aliasOf->getSourceMirrors();
|
||||
}
|
||||
|
||||
public function getDistType()
|
||||
{
|
||||
return $this->aliasOf->getDistType();
|
||||
}
|
||||
|
||||
public function getDistUrl()
|
||||
{
|
||||
return $this->aliasOf->getDistUrl();
|
||||
}
|
||||
|
||||
public function getDistUrls()
|
||||
{
|
||||
return $this->aliasOf->getDistUrls();
|
||||
}
|
||||
|
||||
public function getDistReference()
|
||||
{
|
||||
return $this->aliasOf->getDistReference();
|
||||
}
|
||||
|
||||
public function setDistReference($reference)
|
||||
{
|
||||
return $this->aliasOf->setDistReference($reference);
|
||||
}
|
||||
|
||||
public function getDistSha1Checksum()
|
||||
{
|
||||
return $this->aliasOf->getDistSha1Checksum();
|
||||
}
|
||||
|
||||
public function setTransportOptions(array $options)
|
||||
{
|
||||
return $this->aliasOf->setTransportOptions($options);
|
||||
}
|
||||
|
||||
public function getTransportOptions()
|
||||
{
|
||||
return $this->aliasOf->getTransportOptions();
|
||||
}
|
||||
|
||||
public function setDistMirrors($mirrors)
|
||||
{
|
||||
return $this->aliasOf->setDistMirrors($mirrors);
|
||||
}
|
||||
|
||||
public function getDistMirrors()
|
||||
{
|
||||
return $this->aliasOf->getDistMirrors();
|
||||
}
|
||||
|
||||
public function getScripts()
|
||||
{
|
||||
return $this->aliasOf->getScripts();
|
||||
}
|
||||
|
||||
public function getLicense()
|
||||
{
|
||||
return $this->aliasOf->getLicense();
|
||||
}
|
||||
|
||||
public function getAutoload()
|
||||
{
|
||||
return $this->aliasOf->getAutoload();
|
||||
}
|
||||
|
||||
public function getDevAutoload()
|
||||
{
|
||||
return $this->aliasOf->getDevAutoload();
|
||||
}
|
||||
|
||||
public function getIncludePaths()
|
||||
{
|
||||
return $this->aliasOf->getIncludePaths();
|
||||
}
|
||||
|
||||
public function getRepositories()
|
||||
{
|
||||
return $this->aliasOf->getRepositories();
|
||||
}
|
||||
|
||||
public function getReleaseDate()
|
||||
{
|
||||
return $this->aliasOf->getReleaseDate();
|
||||
}
|
||||
|
||||
public function getBinaries()
|
||||
{
|
||||
return $this->aliasOf->getBinaries();
|
||||
}
|
||||
|
||||
public function getKeywords()
|
||||
{
|
||||
return $this->aliasOf->getKeywords();
|
||||
}
|
||||
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->aliasOf->getDescription();
|
||||
}
|
||||
|
||||
public function getHomepage()
|
||||
{
|
||||
return $this->aliasOf->getHomepage();
|
||||
}
|
||||
|
||||
public function getSuggests()
|
||||
{
|
||||
return $this->aliasOf->getSuggests();
|
||||
}
|
||||
|
||||
public function getAuthors()
|
||||
{
|
||||
return $this->aliasOf->getAuthors();
|
||||
}
|
||||
|
||||
public function getSupport()
|
||||
{
|
||||
return $this->aliasOf->getSupport();
|
||||
}
|
||||
|
||||
public function getNotificationUrl()
|
||||
{
|
||||
return $this->aliasOf->getNotificationUrl();
|
||||
}
|
||||
|
||||
public function getArchiveExcludes()
|
||||
{
|
||||
return $this->aliasOf->getArchiveExcludes();
|
||||
}
|
||||
|
||||
public function isAbandoned()
|
||||
{
|
||||
return $this->aliasOf->isAbandoned();
|
||||
}
|
||||
|
||||
public function getReplacementPackage()
|
||||
{
|
||||
return $this->aliasOf->getReplacementPackage();
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return parent::__toString().' (alias of '.$this->aliasOf->getVersion().')';
|
||||
|
|
|
@ -113,7 +113,6 @@ class ProcessExecutor
|
|||
*
|
||||
* @return string The escaped argument
|
||||
*/
|
||||
|
||||
public static function escape($argument)
|
||||
{
|
||||
return ProcessUtils::escapeArgument($argument);
|
||||
|
|
|
@ -1,5 +1,15 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Autoload;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
|
|
|
@ -1,14 +1,21 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file was copied from the Symfony package.
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is copied from the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Autoload;
|
||||
|
||||
use Composer\Autoload\ClassMapGenerator;
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\DependencyResolver;
|
||||
|
||||
use Composer\Repository\ArrayRepository;
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Util;
|
||||
|
||||
|
|
|
@ -1,4 +1,15 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Composer.
|
||||
*
|
||||
* (c) Nils Adermann <naderman@naderman.de>
|
||||
* Jordi Boggiano <j.boggiano@seld.be>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Composer\Test\Util;
|
||||
|
||||
use Composer\Config;
|
||||
|
|
Loading…
Reference in New Issue