Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Solver] Error updating deps after adding AsseticBundle #133

Closed
jmikola opened this issue Nov 25, 2011 · 9 comments · Fixed by #309
Closed

[Solver] Error updating deps after adding AsseticBundle #133

jmikola opened this issue Nov 25, 2011 · 9 comments · Fixed by #309
Assignees
Labels

Comments

@jmikola
Copy link
Contributor

jmikola commented Nov 25, 2011

My project's composer.json file looked like this:

{
    "require": {
        "doctrine/data-fixtures": "master-dev",
        "doctrine/mongodb-odm": "master-dev",
        "jms/security-extra-bundle": "master-dev",
        "monolog/monolog": "master-dev",
        "sensio/distribution-bundle": "master-dev",
        "sensio/framework-extra-bundle": "master-dev",
        "sensio/generator-bundle": "master-dev",
        "symfony/mongodb-odm-bundle": "master-dev",
        "symfony/symfony": "2.1.0-dev",
        "twig/twig": "1.4.0-dev"
    }
}

Running ./composer.phar install --dev downloaded all of the deps (and VCS info) just fine. I then added the following dependency:

        "symfony/assetic-bundle": "master-dev",

And re-ran: ./composer.phar update --dev, which yielded the error:

[arsjerm.net] master $ ./composer.phar update --dev
> Updating dependencies.
PHP Notice:  Undefined property: Composer\DependencyResolver\Solver::$learnedLiterals in phar:///home/jmikola/workspace/arsjerm.net/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/jmikola/workspace/arsjerm.net/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Warning:  assert(): Assertion failed in phar:///home/jmikola/workspace/arsjerm.net/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Notice:  Undefined offset: -1 in phar:///home/jmikola/workspace/arsjerm.net/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Fatal error:  Call to a member function getPackageId() on a non-object in phar:///home/jmikola/workspace/arsjerm.net/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
@jmikola
Copy link
Contributor Author

jmikola commented Nov 25, 2011

If I wipe out my lock file and vendors/ directory, re-installing all of the deps (including AsseticBundle) works fine.

@henrikbjorn
Copy link
Contributor

This have happend quite a few times for me aswell with other various bundles.

@kostiklv
Copy link
Contributor

I think I've hit the same problem today. Here are the steps to reproduce:

I've added the following composer.json to an empty folder:

{
    "require": {
        "symfony/symfony": "v2.0.6",
        "twig/twig": "v1.1.2",
        "monolog/monolog": "1.0.2",
        "doctrine/common": "2.1.*",
        "doctrine/dbal": "2.1.*",
        "doctrine/orm": "2.1.*",
        "kriswallsmith/assetic": "master",
        "twig/extensions": "master",
        "metadata/metadata": "master",
        "swiftmailer/swiftmailer": "v4.1.3",
        "sensio/framework-extra-bundle": "master",
        "jms/security-extra-bundle": "master",
        "symfony/assetic-bundle": "master",
        "sonata/admin-bundle": "master",
        "knplabs/knp-menu": "1.0"
    }
}

Then I've ran php composer.phar install

Later, I've added "knplabs/knp-menu-bundle": "master" to the json file, ran php composer.phar update and got the same error:

> Updating dependencies.
PHP Notice:  Undefined property: Composer\DependencyResolver\Solver::$learnedLiterals in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

Notice: Undefined property: Composer\DependencyResolver\Solver::$learnedLiterals in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Warning:  Invalid argument supplied for foreach() in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

Warning: Invalid argument supplied for foreach() in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Warning:  assert(): Assertion failed in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

Warning: assert(): Assertion failed in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Notice:  Undefined offset: -1 in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

Notice: Undefined offset: -1 in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2
PHP Fatal error:  Call to a member function getPackageId() on a non-object in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

Fatal error: Call to a member function getPackageId() on a non-object in phar:///home/sites/kostja/web/composer-test/composer.phar/src/Composer/DependencyResolver/Solver.php on line 2

I've downloaded the composer sources and tried to run it once again to see the actual error line numbers. Here they are:

> Updating dependencies.
PHP Notice:  Undefined property: Composer\DependencyResolver\Solver::$learnedLiterals in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1503

Notice: Undefined property: Composer\DependencyResolver\Solver::$learnedLiterals in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1503
PHP Warning:  Invalid argument supplied for foreach() in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1503

Warning: Invalid argument supplied for foreach() in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1503
PHP Warning:  assert(): Assertion failed in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1484

Warning: assert(): Assertion failed in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1484
PHP Notice:  Undefined offset: -1 in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1487

Notice: Undefined offset: -1 in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1487
PHP Fatal error:  Call to a member function getPackageId() on a non-object in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1489

Fatal error: Call to a member function getPackageId() on a non-object in /home/sites/kostja/web/composer/src/Composer/DependencyResolver/Solver.php on line 1489

Solver.php line 1503 references $this->learnedLiterals, which seems to mean $learnedLiterals (since there are no learnedLiterals property in the class). However, fixing it didn't help to cure the problem. Somehow the analyze() method comes to a point where it tries to process negative $decisionId.

From just quickly looking into the code I can tell that it's something wrong with $l1num variable. The only exit conditions of the outer loop is !$l1num (seen 2 times preceding break 2 statement), however $l1num is never decreased inside the loop.
Probably $l1num = 0 initial assignment should be moved inside the outer while (true) loop. I've tried and it helped. But this is just a GUESS, unfortunately I didn't have time to get deep into this.

@ghost ghost assigned naderman Dec 3, 2011
@digitalkaoz
Copy link
Contributor

this issue should be fixed with #147

@kostiklv
Copy link
Contributor

kostiklv commented Dec 7, 2011

No, the fixing the typo doesn't fix the problem - see the second half of my
previous comment

On Dec 7, 2011 9:34 PM, "Robert Schnthal" <
reply@reply.github.com>
wrote:

this issue should be fixed with #147


Reply to this email directly or view it on GitHub:
#133 (comment)

@stof
Copy link
Contributor

stof commented Dec 8, 2011

@naderman this seems an issue for you

@naderman
Copy link
Member

Should be fixed now. Please try again.

@jmikola
Copy link
Contributor Author

jmikola commented Feb 18, 2012

This still fails, but I'm inclined to think it might be a package database error because GitHub was offline again today:

[avocado: foo] $ ./composer.phar -V
Composer version cac51b1

[avocado: foo] $ cat composer.json 
{
    "require": {
        "doctrine/data-fixtures": "master-dev",
        "doctrine/mongodb-odm": "master-dev",
        "jms/security-extra-bundle": "master-dev",
        "monolog/monolog": "master-dev",
        "sensio/distribution-bundle": "master-dev",
        "sensio/framework-extra-bundle": "master-dev",
        "sensio/generator-bundle": "master-dev",
        "symfony/mongodb-odm-bundle": "master-dev",
        "symfony/symfony": "2.1.0-dev",
        "symfony/assetic-bundle": "master-dev",
        "twig/twig": "1.4.0-dev"
    }
}

[avocado: foo] $ ./composer.phar install --dry-run --verbose
Installing dependencies



  [UnexpectedValueException]                                                                                                                                  
  Package symfony/assetic-bundle can not be installed, either because its version constraint is incorrect, or because one of its dependencies was not found.  



Exception trace:
 () at phar:///home/jmikola/foo/composer.phar/src/Composer/Command/InstallCommand.php:10
 Composer\Command\InstallCommand->install() at phar:///home/jmikola/foo/composer.phar/src/Composer/Command/InstallCommand.php:10
 Composer\Command\InstallCommand->execute() at phar:///home/jmikola/foo/composer.phar/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:2
 Symfony\Component\Console\Command\Command->run() at phar:///home/jmikola/foo/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:2
 Symfony\Component\Console\Application->doRun() at phar:///home/jmikola/foo/composer.phar/src/Composer/Console/Application.php:2
 Composer\Console\Application->doRun() at phar:///home/jmikola/foo/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:2
 Symfony\Component\Console\Application->run() at phar:///home/jmikola/foo/composer.phar/src/Composer/Console/Application.php:2
 Composer\Console\Application->run() at phar:///home/jmikola/foo/composer.phar/bin/composer:13
 require() at /home/jmikola/foo/composer.phar:15


install [--prefer-source] [--dry-run] [--no-install-recommends] [--install-suggests]

[avocado: foo] $ 

@Seldaek
Copy link
Member

Seldaek commented Feb 18, 2012

This is just because there is no "master-dev" release of assetic-bundle. Use 2.1-dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants