Denis Brumann
2df1a69287
Improve IDE autocompletion
...
According to type 2nd constructor-argument `$reasonData` can either be a Link or a PackageInterface. IDEs like PhpStorm won't be able to provide autocompletion since both classes are from a different namespace.
In order to provide better autocompletion for `$reasonData` and by extension `$this->reasonData` the use statements should be included or the type hint should use the fully qualified class name.
For the same reason I added the docblock on the protected method `formatePackagesUnique()`.
7 years ago
Jordi Boggiano
122e422682
CS fixes
7 years ago
rubenrua
8fccbaa4a4
Improve memory usage resolving dependencies II
...
Optimize `rulesByHash` in `Composer\DependencyResolver\RuleSet` to only
use an array with the second element, event with very low probability.
7 years ago
rubenrua
4e1887a721
Improve memory usage resolving dependencies
...
It is known that composer update takes a lot of memory: #5915 , #5902 ,
I am playing with a profiler (@blackfireio) to make a demo in my local
PHP meetup (@phpvigo) and I found out a way to use less memory. These
are my first tests:
* Private project using PHP 5.6:
* Memory: from 1.31GB to 1.07GB
* Wall Time: from 2min 8s to 1min 33s
* symfony-demo using PHP 7.1 in my old mac book:
* Memory: from 667MB to 523MB
* Wall Time: from 5min 29s to 5min 28s
Not use an array inside conflict rules is this improvement main idea:
```php
<?php
//Memory 38MB
gc_collect_cycles();
gc_disable();
class Rule
{
public $literals;
public function __construct(array $literals)
{
$this->literals = $literals;
}
}
$rules = array();
$i = 0;
while ($i<80000){ //
$i++;
$array = array(-$i, $i);
$rule = new Rule($array);
$rules[] = $rule;
}
```
```php
<?php
//Memory 11.1MB
gc_collect_cycles();
gc_disable();
class Rule2Literals
{
public $literal1;
public $literal2;
public function __construct($literal1, $literal2)
{
$this->literal1 = $literal1;
$this->literal2 = $literal2;
}
}
$rules = array();
$i = 0;
while ($i<80000){ //
$i++;
$rule = new ConflictRule(-$i, $i);
$rules[] = $rule;
}
```
More info https://github.com/composer/composer/pull/6168
7 years ago
johnstevenson
379fb70ad9
Use random name for tmp ini and delete after use
...
Thanks to Patrick Rose for reporting this issue.
8 years ago
Nicolas Grekas
daf84bea33
Enhance solver perf by removing count()
8 years ago
Yanick Witschi
7b5fe5c7d4
CS
8 years ago
Yanick Witschi
a9e88a27b3
CS
8 years ago
Yanick Witschi
4a769a785c
Reduce calls on Rule::getHash()
8 years ago
ReenExe
53fc30fe56
clear code
8 years ago
Lucas CHERIFI
7e34d9ab97
Typo fix ;-)
8 years ago
Jordi Boggiano
feda2a283f
Improve error reporting some more, fixes #4310
8 years ago
Jordi Boggiano
3b0a1c6f70
Run cs fixer and update config to latest master
8 years ago
Niels Keurentjes
818c3e707a
Ton of phpDoc fixes.
8 years ago
Jordi Boggiano
c74e6df65d
Fix strings being passed to an int arg, fixes 7.1 build
8 years ago
Jordi Boggiano
623c0dcda7
Improve solver error reporting, fixes #5086 , fixes #2575 , fixes #2661
8 years ago
Niels Keurentjes
8e78ce9a43
Add extra logging before and after SAT solving
8 years ago
Nils Adermann
4af74b54e0
Ignore self references when anlaysing independent root requirements
...
When creating a transaction we try to identify all requirements that are
not themselves required by any other package. If a package references
itself this should not mark it as being required by another package.
8 years ago
Niels Keurentjes
b059cbe37c
Removed unused variables and includes, fixed functions being called with more arguments than declared.
8 years ago
Jordi Boggiano
c9436438ff
Add memoization to parseConstraints, saves some (6-7% here) RAM and marginal CPU time
8 years ago
Niels Keurentjes
ebfceefca6
Removed long deprecated functions that were no longer referenced anywhere.
8 years ago
Rob Bast
baabc612f6
adjust message, skip test
...
currently we have no way to put dynamic values or wildcards in EXPECT-OUTPUT
9 years ago
Rob Bast
94daeca57b
add test and adjust rule error message
9 years ago
Jefferson Carpenter
8d57c3e743
Update SolverProblemsException.php
9 years ago
Jordi Boggiano
1818b95149
CS fixes
9 years ago
Jordi Boggiano
e0ff9598c3
Tweak wording a bit, refs #3177
9 years ago
Radek Benkel
09417cae50
Composer gives .ini hints about missing extensions
9 years ago
Wouter J
d0e4c5f71e
Use "value" instead of "setting"
9 years ago
Wouter J
b156ad0345
Improve error message
9 years ago
Jordi Boggiano
f5e0fc14b3
Clarify some error messages, fixes #3770
9 years ago
Jordi Boggiano
125dc62fab
Make trigger error visible
9 years ago
Rob Bast
1c7016de45
remove dead code/class
9 years ago
Rob Bast
1bf03e9621
fixed various docblocks and class properties in solver
9 years ago
Rob Bast
b523fc0b7b
ran fixers
9 years ago
Jordi Boggiano
ce08582671
Fix CS
9 years ago
Rob Bast
a1427d7fd6
replace all occurences in code and comments
9 years ago
Rob Bast
51ef7b5eef
instead of generic be more verbose about possible causes
9 years ago
Rob Bast
77f1d5945f
make sure php version errors are less misleading
...
* determine conflicting version in problem using pool package
* hide version in rule to keep it generic rather than possibly misleading
fixes #4319
9 years ago
Nils Adermann
cf1af58514
Use bitwise operators directly in rules instead of get/set Bitfield
9 years ago
Nils Adermann
956035e641
Remove the unnecessary return statements from setters
9 years ago
Nils Adermann
f535542fca
Use constants with names for bitfield offsets
9 years ago
Nils Adermann
329ab5cf41
Rename blob rule property to bitfield
9 years ago
Nils Adermann
961ea868ac
Use an integer bitfield for rule properties instead of a string binary blob
9 years ago
Nils Adermann
6e81f63635
Reduce memory footprint of rules by storing data in blob
...
Not declaring the job property saves significant amounts of memory as
most rules leave it as null
9 years ago
Nils Adermann
c7e1f49e78
Rule hashes are only used in the rule set, so no need to store them
9 years ago
Nils Adermann
15d572da4c
Use 4 byte integer from raw md5 instead of 5 hex representation chars
...
The hash is necessary as comparisons are significantly too slow
otherwise. The old hash function used substr on the hexadecimal
representation of the md5 hash, rather than the raw binary output. This
wastes a significant amount of memory, as each byte can only be used to
store up to 4 bit of information. The new hash has 32bit instead of
20bit and uses only a 4 byte integer instead of a 5 byte string.
9 years ago
Nils Adermann
5b1b96b61e
Output the number of rules used in the solver for profiling purposes
9 years ago
Nils Adermann
07e1d227c9
Output the size of the pool after dependency resolution for users
9 years ago
Kunal Mehta
f634c6946d
Update callers of VersionParser::formatVersion()
...
Tests were moved to BasePackageTest.
9 years ago
Jordi Boggiano
79f9158fb2
Merge pull request #4192 from localheinz/fix/import
...
Fix: Add missing imports
9 years ago
Jordi Boggiano
6a64041055
CS fixes
9 years ago
Andreas Möller
12ffe2b4d4
Fix: Add missing imports
9 years ago
Andreas Möller
e184118d76
Fix: Docblock
9 years ago
Nils Adermann
75c501251d
Revert "Merge remote-tracking branch 'naderman/load-no-providers'"
...
This reverts commit 3e85f82373
, reversing
changes made to b025d0982b
.
9 years ago
Jordi Boggiano
3e85f82373
Merge remote-tracking branch 'naderman/load-no-providers'
9 years ago
Nils Adermann
cfd0e44312
Move private function further down in pool
9 years ago
Nils Adermann
ec5416f03c
loadDev parameter is nonsense, properly load packages in create command
9 years ago
Nils Adermann
da02c53540
Update the composer repository whatprovides test to a loadrecursively test
9 years ago
Nils Adermann
b99c03ea04
Entirely remove whatProvides from Composer repository
9 years ago
Nils Adermann
090711b21c
Completely move loading of packages from composer repo to pool
9 years ago
Possum
2e99b9fdf5
Use https where possible
9 years ago
Nils Adermann
4d0db5add6
POC Implementation of loading only explicitly named package data
9 years ago
Nils Adermann
b4ed331168
The Solver Request no longer depends on the Pool
9 years ago
Jordi Boggiano
d6620195e5
Prioritize repository over package versions in the default policy, fixes #3509
9 years ago
Markus Staab
c9bdf3a07a
added the actual phpversion into the error message when phpversion doesn satisfy the requirement
9 years ago
Jordi Boggiano
05e08889ed
Add BC method for old usage, refs #3857
9 years ago
Jordi Boggiano
6b3178b169
Merge remote-tracking branch 'isoroku/fix-misspellings'
...
Conflicts:
doc/articles/handling-private-packages-with-satis.md
9 years ago
Hannes Van De Vreken
d017fa4a1d
Unused variable
9 years ago
isoroku
e0657b60a2
Fix misspellings
9 years ago
Jordi Boggiano
3ba581f0df
Improve error messages for required hhvm/php versions, fixes #3767
9 years ago
Vladimir Kartaviy
813fd0b703
Added missing $learnedWhy property
10 years ago
Nicolas Grekas
4a0feb0189
add --prefer-lowest-stable to update command
10 years ago
Steve Preston
dfe18d2e7f
Fixed dependency problem caused by pull request #3482
10 years ago
Nils Adermann
4a945da55b
Avoid generating duplicate conflict rules
...
For each version of each package we create a conflict rule with each
other version. These are then added to the rule set and skipped if
duplicate so instead we can just generate them only once to begin with
and avoid unnecessary memory allocation and duplication lookups.
10 years ago
Nils Adermann
6f41e99fe2
Add back ruleById function for BC
10 years ago
Nils Adermann
2c43a3bcd0
Improve docblocks of public properties
10 years ago
Nils Adermann
107a736440
Recreate getLiterals method for BC
10 years ago
Nils Adermann
26598c4a9a
Remove unnecessary pool reference from rules
10 years ago
Nils Adermann
d77400ade2
Make ruleById lookup table in rule set public
...
Saves about 500k function calls on a packagist update
10 years ago
Nils Adermann
5c0efdcaa2
Move public properties to top and document them
10 years ago
Nils Adermann
c6af09b1da
Make project id public
...
Reduction of rougly 1.3 million function calls on packagist update
10 years ago
Nils Adermann
ef41f136f8
Literals on rule are now public
...
This causes a reduction of ~500k function calls for packagist composer
update (~14 million total).
10 years ago
Nils Adermann
5333017aea
Remove unused selectNewestPackages method in DefaultPolicy
...
Unused as of 1b6f57e651
10 years ago
Nils Adermann
dccb728e10
Remove further unnecessary checks for packages being arrays
10 years ago
Nils Adermann
89bd9be295
This entirely removes StreamableRepositories and minimal package arrays
10 years ago
Sam Mousa
670ca2f889
Fixed issue #3441
10 years ago
Nils Adermann
83159dc153
Use elseif instead of else { if {
10 years ago
Nils Adermann
0daaa1a902
Reduce whatProvides overhead
10 years ago
Nils Adermann
ee56db8767
Remove the handling of updates in the generator
...
Updates are implicitly handled by whatProvides for install requests
10 years ago
Jordi Boggiano
94926218e8
CS fixes
10 years ago
Jordi Boggiano
ec0463a400
Add tests for platform packages required by root and avoid creating rules altogether instead of disabling them, refs #3320
10 years ago
alu
b7fa302b90
add ignore-platform-package-requirements for update/install commands.
10 years ago
Ryan Weaver
947db97e33
[ #2492 ] Removing an unused variable and use statement, fixing phpdoc
10 years ago
Thai Phan
e6fdefb869
Update RuleWatchNode.php
10 years ago
Jordi Boggiano
ac497feaba
CS fixes
10 years ago
Jordi Boggiano
e23665be59
Fix replacers being picked if whatProvide was called before building the package whitelist, fixes #2991 , fixes #2962
10 years ago
Nils Adermann
78f2ad95a9
Correctly add decision reason to transaction
10 years ago
Christian Flothmann
0e9325da79
for AliasPackages check that the aliased package is white listed so that version constraints of AliasPackages are taken into account when computing package provisions
10 years ago
Nils Adermann
aa74818fe0
Handle array candidates in whatProvides
11 years ago
Nils Adermann
eb5c785dcd
Remove superfluous string casts
11 years ago
Nils Adermann
5b80144ad0
Resolve job packages after whitelist generation
11 years ago
Nils Adermann
bc7008270f
Properly limit to name matches only if necessary
11 years ago
Nils Adermann
3148ffd355
Whitelist packages with names matching those specified before generating rules
...
Addresses #2690 doesn't do any performance optimisations yet which we
could do now
11 years ago
Jordi Boggiano
51e6c3a466
Optimize solving by removing packages that are excluded by the root package requires
11 years ago
Jordi Boggiano
0a3df27403
Remove dead code, fixes #2363
11 years ago
Jordi Boggiano
11a0d16ccc
CS fixes
11 years ago
Jordi Boggiano
cc37e4b0b8
Show defaulted version if phpversion() returns nothing, fixes #2313
11 years ago
Nils Adermann
8369624c49
Correctly set watch2 on rule watch nodes for learned rules fixes #2181
11 years ago
Jordi Boggiano
051d219438
Fix whatProvides returning too many results when no constraint is given
11 years ago
Jordi Boggiano
8d0b7f278e
CS fixes
11 years ago
Jordi Boggiano
6f6228fb1d
Remove unneeded use
11 years ago
Pavel Savinov
b72c4cfe97
PHPDoc fix
11 years ago
Pavel Savinov
831bd844bd
Almost PHPDoc problems fixed
11 years ago
Jordi Boggiano
7449162aa4
Report ICU failures as the intl extension being missing, refs #1939
11 years ago
Jordi Boggiano
e848c76cbc
Only compare branches as versions in the policy to sort packages, but not in the solver, fixes #1817
11 years ago
Jordi Boggiano
326faf2b51
Minor cleanups
11 years ago
Jordi Boggiano
faa419cc0e
Merge remote-tracking branch 'hason/alias'
11 years ago
Jordi Boggiano
cc9dac8fe2
Fix tests and convert all package lists to Name[Versions] format
11 years ago
Jordi Boggiano
201cde05be
Show reasons why an operation is executed in -vv mode, fixes #1063
11 years ago
Robert Gruendler
5160dd2f5e
Return different error code for SolverProblemsException
...
To make it easier for external tools to detect SolverProblems and react
to them accordingly,
this PR introduces a new exit code.
11 years ago
Jordi Boggiano
0700cd9186
Adjust according to feedback
11 years ago
Jordi Boggiano
db4055b778
Put a higher prio on replacers of the same vendor as the required package
11 years ago
Martin Hasoň
753a8345cb
Added support for the alias of an aliased package
11 years ago
Jordi Boggiano
a0d1d59868
Fix handling of aliases in streamable repos, fixes #1776 , fixes #1749
11 years ago
Jordi Boggiano
2b385cbe58
Fix dependency flags not applying to provides/replaces, fixes #1771
11 years ago
Jordi Boggiano
b0297ef67a
Add prefer-stable flag to pick stable package over unstable ones when possible
11 years ago
Jordi Boggiano
514a3cde77
CS fixes
12 years ago
Jordi Boggiano
da5ee6e2d7
Add warning for invalid chars in package names
12 years ago
Jordi Boggiano
62bf84fc4f
Rename var
12 years ago
Jordi Boggiano
1c39ad779b
Fix wording
12 years ago
Jordi Boggiano
5d78fa6ce6
Report typos in package name if no version matches
12 years ago
Jordi Boggiano
f18839c350
Fix var override, fixes #1061
12 years ago
Pascal Borreli
83fd3967f0
Fixed PHPDoc
12 years ago
Pascal Borreli
5eead93250
Fixed typos
12 years ago
Jordi Boggiano
125ff3e4f5
Fix root aliasing with new providers repo format
12 years ago
Jordi Boggiano
eceda0ffc7
Fix regression introduced in beb9a5bd72
12 years ago
Jordi Boggiano
5978197b5d
Reset package IDs before they can be used in the pool in case there are already some in the cache
12 years ago
Jordi Boggiano
6a03e4f9ac
Code optimizations: Avoiding counting repeatedly
12 years ago
Jordi Boggiano
beb9a5bd72
Code optimizations: avoid loops in match()
12 years ago
Jordi Boggiano
21a0ae9cad
Cache whatProvide calls
12 years ago
Jordi Boggiano
a3f9accd37
Fix various dumb issues
12 years ago
Jordi Boggiano
9369f48dcd
Fix package id
12 years ago
Jordi Boggiano
18492a1f84
Remove Pool::getMaxId and the solver's reliance on it
12 years ago
Jordi Boggiano
c0e5736ae7
Add support for one-file-per-provider composer repositories
12 years ago
Jordi Boggiano
a8171f5be0
Display prettier messages for second-degree required exts to avoid confusion
12 years ago
Jordi Boggiano
ded485dd60
Fix root aliasing and allow aliasing using the branch-alias as source
12 years ago
Tim Heil
6c1820d006
Add troubleshooting URL to error message
12 years ago
Jordi Boggiano
6f77df296a
Speed up Pool::match for common case
12 years ago
Jordi Boggiano
9965f02951
Clean up link creation
12 years ago
Jordi Boggiano
8a275336a1
CS cleanups
12 years ago
Jordi Boggiano
e46d26cb9b
Add loadAliasPackage to the StreamableRepositoryInterface and clear up responsibilities between Pool and Repositories
12 years ago
Jordi Boggiano
9a1fd450b0
Remove code duplication
12 years ago
Jordi Boggiano
62ead24b61
Rename variable for clarity
12 years ago
Jordi Boggiano
25142c5351
Clarify variable variable usage
12 years ago
Jordi Boggiano
2d4076e9b2
Add support for aliases in streamed repos
12 years ago
Jordi Boggiano
c8a685be6b
Reduce memory usage by only loading packages that are actually needed, fixes #456
12 years ago
Nils Adermann
27d8904abe
resetToOffset method was moved to the Decisions class a while ago
12 years ago
Jordi Boggiano
ef637c8f1a
CS fixes
12 years ago
Nils Adermann
84dd1fc1bf
Merge pull request #898 from Seldaek/providefix
...
Fix hijacking possibility via provide bug
12 years ago
Adrien Brault
4263fe9255
Fix Solver CS
12 years ago
Jordi Boggiano
2f7130200a
Prevent seeing dev versions as equal when they are not, fixes #848
12 years ago
Jordi Boggiano
2d19cf2a00
Fix hijacking possibility via provide bug
12 years ago
Jordi Boggiano
6573fd3f77
Add hint in solver exceptions as to what may be wrong
12 years ago
Jordi Boggiano
f4409d9168
Fix problem output formatting, fixes #871
12 years ago
Jordi Boggiano
e6f7150196
Change default minimum-stability to "stable", fixes #744
12 years ago
Nils Adermann
f0345f0592
Aliases cannot be updated, they must be uninstalled, fixes #803
12 years ago
Jordi Boggiano
07a266793d
Fix invalid function call
12 years ago
Jordi Boggiano
698c642a9f
Deduplicate packages with a similar name/version in the error output
12 years ago
Nils Adermann
cc7632489d
Make problem report messages more readable
...
Added pretty strings to constraints
12 years ago
Nils Adermann
dc2a9bfe62
Ignore null rules in rule generator
...
Fixes #806
12 years ago
Nils Adermann
5bea5974f7
Improve error messages for solver problems
12 years ago
Nils Adermann
12abff8b4c
Simplify branch handling code
12 years ago
Nils Adermann
76f8642feb
Remove duplicate function from decisions
12 years ago
Nils Adermann
5b1a48663e
DecisionQueueFree is no longer needed
12 years ago
Nils Adermann
2fbc04b950
Make decisions countable and use foreach to iterate them in solver
12 years ago
Nils Adermann
1211d8f7d4
Correctly generate conflict and alias rules for installed packages
12 years ago
Nils Adermann
d592c0a55e
Remove only branches on right levels in revert
12 years ago
Nils Adermann
ac762ba6e9
Correctly resolve branches if necessary
12 years ago
Nils Adermann
67fde90666
Correctly sort operations within transactions using DFS
...
Fixes #655
12 years ago
Nils Adermann
26e051cb76
Decisions are now encapsulated in a separate object
12 years ago
Jordi Boggiano
d21032ace5
CS fixes
12 years ago
Jordi Boggiano
c440b4594a
More PSR-2 goodness
12 years ago
Jordi Boggiano
713309b38c
Show exact version being installed in create-project, fixes #724
12 years ago
Nils Adermann
16a51daac8
Fix typo in comment
12 years ago
Jordi Boggiano
1bd4ccbd54
php-cs-fixer magic
12 years ago
Jordi Boggiano
4ea9b33a6c
Merge remote-tracking branch 'naderman/solver-refactor'
12 years ago
Nils Adermann
21c7e219e2
Change "else if" to "elseif"
12 years ago
Nils Adermann
99200af51b
Correctly indent break statements
12 years ago
Nils Adermann
f193d61dfe
Remove unecessary brackets
12 years ago
Nils Adermann
7f9c5ffeef
Add documentation to RuleWatchChain and RuleWatchNode
12 years ago
Nils Adermann
76d3950992
Document the RuleWatchGraph
12 years ago
Martin Shwalbe
9d80a4e220
Wrong variable used for foreach. Fixes issue 674.
12 years ago
Nils Adermann
265533d390
Rename watches array to watchChains to make clearer what they are
12 years ago
Nils Adermann
e817a2e2d7
Move public members above protected members in rule watch node
12 years ago
Nils Adermann
c869566868
Make ruleHash a protected member of rules
12 years ago
Nils Adermann
fa7bd35413
Make debug solver methods protected
12 years ago
Nils Adermann
2dfea8a5e0
Only consider undecided literals for selectAndInstall
...
Fixes #707
12 years ago
Nils Adermann
dd527a4049
Remove weak rules
...
Since we no longer have suggest/recommend rules and no longer use any update
or feature rules so packages are removed by default, we do not need weak rules
anymore.
12 years ago
Nils Adermann
025581b365
Rename walkLiteral method to more explicitly say what it does
12 years ago
Nils Adermann
a395bc04d7
Get rid of continue 2; and use array_filter instead of manual looping
12 years ago