From 4af74b54e0cc85b9c28fb6f1b6af1a65460d3894 Mon Sep 17 00:00:00 2001 From: Nils Adermann Date: Wed, 2 Mar 2016 13:03:26 +0100 Subject: [PATCH] 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. --- src/Composer/DependencyResolver/Transaction.php | 4 +++- .../Test/Fixtures/installer/circular-dependency2.test | 5 +---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Composer/DependencyResolver/Transaction.php b/src/Composer/DependencyResolver/Transaction.php index b847164ff..7c38d92fb 100644 --- a/src/Composer/DependencyResolver/Transaction.php +++ b/src/Composer/DependencyResolver/Transaction.php @@ -165,7 +165,9 @@ class Transaction $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); foreach ($possibleRequires as $require) { - unset($roots[$require->id]); + if ($require !== $package) { + unset($roots[$require->id]); + } } } } diff --git a/tests/Composer/Test/Fixtures/installer/circular-dependency2.test b/tests/Composer/Test/Fixtures/installer/circular-dependency2.test index 162141daf..c89beef6b 100644 --- a/tests/Composer/Test/Fixtures/installer/circular-dependency2.test +++ b/tests/Composer/Test/Fixtures/installer/circular-dependency2.test @@ -23,10 +23,7 @@ Circular dependencies are possible between packages { "name": "regular/pkg", "version": "1.0.0", - "source": { "reference": "some.branch", "type": "git", "url": "" }, - "__dummy__require": { - "require/itself": "1.0.0" - } + "source": { "reference": "some.branch", "type": "git", "url": "" } } ] }