Jordi Boggiano
e753bf08b1
Minor tweaks
6 years ago
Nils Adermann
6c32393fd7
Merge pull request #7644 from naderman/pool-builder-prune-impossible-versions
...
PoolBuilder: prune impossible versions before pool creation
6 years ago
Jordi Boggiano
2e0f31106a
Merge remote-tracking branch 'origin/master' into 2.0
6 years ago
Gabriel Caruso
2a13bb2649
Fixes from PHPStan ( #7687 )
...
* fix docblocks
* remove redundant conditional
* fix wrong variable name
* fix wrong namespaces
* add missing private members
* remove unused/redundant arguments
* move testcase class
* exclude TestCase.php
* Tweak RuleWatchGraph type hints
* Tweak doc comment
6 years ago
Nils Adermann
537f4fbc3b
Prune unreachable required versions correctly for aliased packages
...
In trials this seems pointless, so maybe better to skip aliases and
reduce memory and cpu wasted on looking these things up
6 years ago
Nils Adermann
83efeaec5c
Attempt to prune versions which are impossible to install during pool building
6 years ago
Nils Adermann
53c5e3c076
Merge pull request #7633 from naderman/remove-pool-whitelist
...
Remove pool whitelist
6 years ago
Nils Adermann
7c2d3518e5
Remove whitelisting of required package names, done by pool builder now
6 years ago
Nils Adermann
902cb290e7
Only load package versions which fit the root composer.json constraints
6 years ago
Nils Adermann
81bb8f81ad
Set all package ids only once the pool is created
...
They all get set in one place only and at a specific time when nothing
else will possibly change them anymore
6 years ago
Nils Adermann
5c491ecc9b
Merge pull request #7625 from naderman/repository-set
...
Separate RepositorySet from Package Pool, load only metadata of packages directly required
6 years ago
Nils Adermann
261efe1e8e
Implement loadPackages on Composer repositories with providers
6 years ago
Nils Adermann
c0f19f6c57
Move construction of pool from repo set into a pool builder
...
Pool construction depends on the install request now, so only required
packages get loaded, add some structure for future asynchronously
loading composer repositories
6 years ago
Nils Adermann
b6e2d60c9e
Create the pool in the installer before giving it to the solver
6 years ago
Nils Adermann
1228bcdffc
Internalize pool creation in repository set, store root aliases in set
...
The pool is still exposed too early in a few places which will require
further refactoring
6 years ago
Nils Adermann
6ef65e5319
Add a new RepositorySet class and restrict pool usage to the solver
...
Breaking change for the plugin interface so bumping the version of
composer-plugin-api to 2.0.0
First step for a refactoring of the package metadata loading mechanism
6 years ago
Gabriel Caruso
71c8735e11
Use combined assignment operators
6 years ago
Christophe Coevoet
e5b948c683
Refactor the handling of conflict rules in the solver
...
Conflict rules are not added in the solver based on the packages loaded in the
solver by require rules, instead of loading remote metadata for them. This has
2 benefits:
- it reduces the number of conflict rules in the solver in case of conflict
rules targetting packages which are not required
- it fixes the behavior of replaces, which is meant to conflict with all
versions of the replaced package, without introducing a performance
regression (this behavior was changed when optimizing composer in the past).
6 years ago
Jordi Boggiano
ff59bbdab0
CS fixer
6 years ago
Jordi Boggiano
0d92c8df63
Merge pull request #7480 from staabm/patch-3
...
Simplify Rule->getJob()
6 years ago
Markus Staab
05499099a0
Simplify Rule->getJob()
6 years ago
Markus Staab
f7a1c34c92
Removed unused variables
6 years ago
Markus Staab
50565cb0c8
Use variable to call count() less often
6 years ago
Rob
68d468d683
Merge pull request #7450 from staabm/simpler-hash
...
Use a simpler hashing for the Rule2Literal case
6 years ago
Rob
1e9136f086
Merge pull request #7456 from staabm/simpler-equals
...
Specialize Rule2Literal->equals(Rule2Literal) for speedup
6 years ago
Rob
7079cdb70d
Merge pull request #7458 from staabm/patch-3
...
Define variable only when actually used
6 years ago
Rob
b350c09c7e
Merge pull request #7457 from staabm/patch-2
...
Remove unnecessary abs() calls
6 years ago
Markus Staab
86d5de2965
Define variable only when actually used
6 years ago
Markus Staab
42516901f1
Removed another unnecessary abs() call
6 years ago
Markus Staab
0e16dbabde
Removed another unnecessary abs() call
6 years ago
Markus Staab
e3a23f4ae6
Remove unnecessary abs() calls
...
Literal cannot be negative at this point
6 years ago
Markus Staab
7a4937bbcc
Specialize Rule2Literal->equals(Rule2Literal) for speedup
6 years ago
Markus Staab
07383552b3
Temporary save the package-name into a variable
...
this reduces number of unnecessary function calls in the hot path of "composer update"
6 years ago
Markus Staab
0aa7ec2d2c
Use a simpler hashing for the Rule2Literal case
...
this speeds up "composer update" by ~18%
6 years ago
Gabriel Caruso
7d9f8e2247
Improvements
...
Small improvements, such as remove unused imports, unecessaries casts, parentheses, etc.
6 years ago
Yanick Witschi
d82bdc04ac
Improved debugging output
6 years ago
Yanick Witschi
5435877bd9
Improve SAT resolving developer debug information
6 years ago
Jordi Boggiano
dae3c5bc2d
Merge branch '1.6'
7 years ago
Jordi Boggiano
766ed9555e
Only show override description if there is one, refs #7011
7 years ago
Vic Metcalfe
fa5a94143a
Show reason for php version package mismatch due to config.platform
7 years ago
Jordi Boggiano
ad8b44a4c8
Merge branch '1.6'
7 years ago
Jordi Boggiano
471b012e3a
Fix problem report when requiring "ext-zend opcache", refs #2509
7 years ago
Gabriel Caruso
3d262bd637
Fixes from PHPStan level 0
...
More fixes from PHPStan level 0
7 years ago
Gabriel Caruso
32a409a3ee
Clean elses
7 years ago
Jordi Boggiano
0b3bc4ccb9
Merge branch '1.5'
7 years ago
Nils Adermann
f40f95b269
Add a note that a user could have forgotten to add a custom repo if package not found
7 years ago
Jordi Boggiano
c0eb32669a
Remove comment
7 years ago
Vladimir Reznichenko
c8615358cb
SCA with PHP Inspections (EA Extended)
7 years ago
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