Search code examples
phpcomposer-phpcontao

Is php-http/discovery plugin 1.15.1 still breaking composer install in Contao 4.13 with own module?


There was a problem in php-http/discovery which should be fixed in 1.15.1 and composer 2.5.3

Still I can reproduce an infinite loop with the following (more or less) boiled down composer.json:

{
    "name": "contao/managed-edition",
    "type": "project",
    "description": "Contao Open Source CMS - Bug Repro",
    "license": "LGPL-3.0-or-later",
    "require": {
        "php": "^8.1",
        "contao/conflicts": "*@dev",
        "contao/manager-bundle": "4.13.*",
        "imi/composer-scripts-contao": "^1.0",
        "symfony/http-client": "*"
    },
    "extra": {
        "contao-component-dir": "assets"
    },
    "config": {
        "allow-plugins": {
            "contao-components/installer": true,
            "contao-community-alliance/composer-plugin": true,
            "contao/manager-plugin": true,
            "php-http/discovery": true
        }
    }
}
$ composer install
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 126 installs, 0 updates, 0 removals
  - Locking ausi/slug-generator (v1.1.1)
  - Locking bacon/bacon-qr-code (2.0.8)
  - Locking beberlei/assert (v3.3.2)
  - Locking clue/stream-filter (v1.6.0)
  - Locking composer/ca-bundle (1.3.5)
  - Locking contao-components/ace (1.15.0)
  - Locking contao-components/chosen (1.2.5)
  - Locking contao-components/colorbox (1.6.6)
  - Locking contao-components/colorpicker (1.5.2)
  - Locking contao-components/contao (9.3.2)
  - Locking contao-components/datepicker (2.3.2)
  - Locking contao-components/dropzone (5.9.3)
  - Locking contao-components/installer (1.4.1)
  - Locking contao-components/jquery (3.6.3)
  - Locking contao-components/jquery-ui (1.13.2)
  - Locking contao-components/mediabox (1.5.5)
  - Locking contao-components/mootools (1.6.0.7)
  - Locking contao-components/simplemodal (2.1.1)
  - Locking contao-components/swipe (2.2.0)
  - Locking contao-components/tablesort (4.0.1)
  - Locking contao-components/tablesorter (2.31.3)
  - Locking contao-components/tinymce4 (5.10.7)
  - Locking contao/conflicts (dev-main 2d8ba56)
  - Locking contao/core-bundle (4.13.15)
  - Locking contao/image (1.1.2)
  - Locking contao/imagine-svg (1.0.3)
  - Locking contao/installation-bundle (4.13.15)
  - Locking contao/manager-bundle (4.13.15)
  - Locking contao/manager-plugin (2.12.0)
  - Locking dasprid/enum (1.0.3)
  - Locking dflydev/dot-access-data (v3.0.2)
  - Locking doctrine/annotations (1.14.3)
  - Locking doctrine/cache (2.2.0)
  - Locking doctrine/collections (1.8.0)
  - Locking doctrine/common (3.4.3)
  - Locking doctrine/dbal (3.6.0)
  - Locking doctrine/deprecations (v1.0.0)
  - Locking doctrine/doctrine-bundle (2.8.3)
  - Locking doctrine/event-manager (1.2.0)
  - Locking doctrine/inflector (2.0.6)
  - Locking doctrine/instantiator (1.5.0)
  - Locking doctrine/lexer (2.1.0)
  - Locking doctrine/orm (2.14.1)
  - Locking doctrine/persistence (2.5.7)
  - Locking doctrine/sql-formatter (1.1.3)
  - Locking dragonmantank/cron-expression (v2.3.1)
  - Locking friendsofphp/proxy-manager-lts (v1.0.14)
  - Locking friendsofsymfony/http-cache (2.15.0)
  - Locking friendsofsymfony/http-cache-bundle (2.14.0)
  - Locking imagine/imagine (1.3.3)
  - Locking imi/composer-scripts-contao (1.0.1)
  - Locking imi/database-helper (0.3.1)
  - Locking knplabs/knp-menu (v3.3.0)
  - Locking knplabs/knp-menu-bundle (v3.2.0)
  - Locking knplabs/knp-time-bundle (v1.20.0)
  - Locking laminas/laminas-code (4.8.0)
  - Locking lcobucci/clock (2.3.0)
  - Locking lcobucci/jwt (4.1.5)
  - Locking league/commonmark (2.3.8)
  - Locking league/config (v1.2.0)
  - Locking league/flysystem (3.12.2)
  - Locking league/flysystem-bundle (2.4.0)
  - Locking league/mime-type-detection (1.11.0)
  - Locking matthiasmullie/minify (1.3.70)
  - Locking matthiasmullie/path-converter (1.1.3)
  - Locking monolog/monolog (2.9.1)
  - Locking nelmio/cors-bundle (2.2.0)
  - Locking nelmio/security-bundle (v2.12.0)
  - Locking nette/schema (v1.2.3)
  - Locking nette/utils (v4.0.0)
  - Locking nikic/php-parser (v4.15.3)
  - Locking nyholm/psr7 (1.5.1)
  - Locking paragonie/constant_time_encoding (v2.6.3)
  - Locking paragonie/random_compat (v9.99.100)
  - Locking php-http/client-common (2.6.0)
  - Locking php-http/discovery (1.15.1)
  - Locking php-http/httplug (2.3.0)
  - Locking php-http/message (1.13.0)
  - Locking php-http/message-factory (v1.0.2)
  - Locking php-http/promise (1.1.0)
  - Locking phpspec/php-diff (v1.1.3)
  - Locking psr/cache (2.0.0)
  - Locking psr/clock (1.0.0)
  - Locking psr/container (1.1.2)
  - Locking psr/event-dispatcher (1.0.0)
  - Locking psr/http-client (1.0.1)
  - Locking psr/http-factory (1.0.1)
  - Locking psr/http-message (1.0.1)
  - Locking psr/link (1.1.1)
  - Locking psr/log (1.1.4)
  - Locking scheb/2fa-backup-code (v5.13.2)
  - Locking scheb/2fa-bundle (v5.13.2)
  - Locking scheb/2fa-trusted-device (v5.13.2)
  - Locking scrivo/highlight.php (v9.18.1.10)
  - Locking scssphp/scssphp (v1.11.0)
  - Locking sensiolabs/ansi-to-html (v1.2.1)
  - Locking simplepie/simplepie (1.8.0)
  - Locking spatie/schema-org (3.13.0)
  - Locking spomky-labs/otphp (v10.0.3)
  - Locking stella-maris/clock (0.1.7)
  - Locking symfony-cmf/routing (2.3.4)
  - Locking symfony-cmf/routing-bundle (2.5.1)
  - Locking symfony/contracts (v2.5.2)
  - Locking symfony/monolog-bundle (v3.8.0)
  - Locking symfony/polyfill-ctype (v1.27.0)
  - Locking symfony/polyfill-intl-grapheme (v1.27.0)
  - Locking symfony/polyfill-intl-icu (v1.27.0)
  - Locking symfony/polyfill-intl-idn (v1.27.0)
  - Locking symfony/polyfill-intl-normalizer (v1.27.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php72 (v1.27.0)
  - Locking symfony/polyfill-php73 (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/polyfill-php81 (v1.27.0)
  - Locking symfony/polyfill-uuid (v1.27.0)
  - Locking symfony/symfony (v5.4.20)
  - Locking terminal42/escargot (1.5.1)
  - Locking terminal42/service-annotation-bundle (1.1.4)
  - Locking thecodingmachine/safe (v2.4.0)
  - Locking toflar/psr6-symfony-http-cache-store (3.0.1)
  - Locking twig/extra-bundle (v3.5.1)
  - Locking twig/twig (v3.5.1)
  - Locking ua-parser/uap-php (v3.9.14)
  - Locking webignition/disallowed-character-terminated-string (2.0)
  - Locking webignition/robots-txt-file (3.0)
  - Locking wikimedia/less.php (1.8.2)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 126 installs, 0 updates, 0 removals
  - Installing contao-components/installer (1.4.1): Extracting archive
  - Installing php-http/discovery (1.15.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  - Installing symfony/polyfill-php73 (v1.27.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  - Installing twig/twig (v3.5.1): Extracting archive
  - Installing symfony/polyfill-uuid (v1.27.0): Extracting archive
  - Installing symfony/polyfill-php81 (v1.27.0): Extracting archive
  - Installing symfony/polyfill-php80 (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  - Installing symfony/polyfill-php72 (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-idn (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-icu (v1.27.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  - Installing psr/event-dispatcher (1.0.0): Extracting archive
  - Installing psr/container (1.1.2): Extracting archive
  - Installing psr/cache (2.0.0): Extracting archive
  - Installing symfony/contracts (v2.5.2): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing psr/link (1.1.1): Extracting archive
  - Installing symfony/symfony (v5.4.20): Extracting archive
  - Installing contao/manager-plugin (2.12.0): Extracting archive
  - Installing ausi/slug-generator (v1.1.1): Extracting archive
  - Installing dasprid/enum (1.0.3): Extracting archive
  - Installing bacon/bacon-qr-code (2.0.8): Extracting archive
  - Installing contao-components/ace (1.15.0): Extracting archive
  - Installing contao-components/chosen (1.2.5): Extracting archive
  - Installing contao-components/colorbox (1.6.6): Extracting archive
  - Installing contao-components/colorpicker (1.5.2): Extracting archive
  - Installing contao-components/contao (9.3.2): Extracting archive
  - Installing contao-components/datepicker (2.3.2): Extracting archive
  - Installing contao-components/dropzone (5.9.3): Extracting archive
  - Installing contao-components/jquery (3.6.3): Extracting archive
  - Installing contao-components/jquery-ui (1.13.2): Extracting archive
  - Installing contao-components/mediabox (1.5.5): Extracting archive
  - Installing contao-components/mootools (1.6.0.7): Extracting archive
  - Installing contao-components/simplemodal (2.1.1): Extracting archive
  - Installing contao-components/swipe (2.2.0): Extracting archive
  - Installing contao-components/tablesort (4.0.1): Extracting archive
  - Installing contao-components/tablesorter (2.31.3): Extracting archive
  - Installing contao-components/tinymce4 (5.10.7): Extracting archive
  - Installing contao/conflicts (dev-main 2d8ba56)
  - Installing laminas/laminas-code (4.8.0): Extracting archive
  - Installing friendsofphp/proxy-manager-lts (v1.0.14): Extracting archive
  - Installing doctrine/deprecations (v1.0.0): Extracting archive
  - Installing doctrine/event-manager (1.2.0): Extracting archive
  - Installing doctrine/collections (1.8.0): Extracting archive
  - Installing doctrine/cache (2.2.0): Extracting archive
  - Installing doctrine/persistence (2.5.7): Extracting archive
  - Installing imagine/imagine (1.3.3): Extracting archive
  - Installing contao/image (1.1.2): Extracting archive
  - Installing contao/imagine-svg (1.0.3): Extracting archive
  - Installing twig/extra-bundle (v3.5.1): Extracting archive
  - Installing toflar/psr6-symfony-http-cache-store (3.0.1): Extracting archive
  - Installing monolog/monolog (2.9.1): Extracting archive
  - Installing symfony/monolog-bundle (v3.8.0): Extracting archive
  - Installing composer/ca-bundle (1.3.5): Extracting archive
  - Installing ua-parser/uap-php (v3.9.14): Extracting archive
  - Installing paragonie/random_compat (v9.99.100): Extracting archive
  - Installing nelmio/security-bundle (v2.12.0): Extracting archive
  - Installing nelmio/cors-bundle (2.2.0): Extracting archive
  - Installing psr/http-message (1.0.1): Extracting archive
  - Installing php-http/message-factory (v1.0.2): Extracting archive
  - Installing clue/stream-filter (v1.6.0): Extracting archive
  - Installing php-http/message (1.13.0): Extracting archive
  - Installing psr/http-factory (1.0.1): Extracting archive
  - Installing psr/http-client (1.0.1): Extracting archive
  - Installing php-http/promise (1.1.0): Extracting archive
  - Installing php-http/httplug (2.3.0): Extracting archive
  - Installing php-http/client-common (2.6.0): Extracting archive
  - Installing friendsofsymfony/http-cache (2.15.0): Extracting archive
  - Installing friendsofsymfony/http-cache-bundle (2.14.0): Extracting archive
  - Installing doctrine/sql-formatter (1.1.3): Extracting archive
  - Installing doctrine/dbal (3.6.0): Extracting archive
  - Installing doctrine/doctrine-bundle (2.8.3): Extracting archive
  - Installing sensiolabs/ansi-to-html (v1.2.1): Extracting archive
  - Installing wikimedia/less.php (1.8.2): Extracting archive
  - Installing webignition/disallowed-character-terminated-string (2.0): Extracting archive
  - Installing webignition/robots-txt-file (3.0): Extracting archive
  - Installing doctrine/lexer (2.1.0): Extracting archive
  - Installing doctrine/annotations (1.14.3): Extracting archive
  - Installing terminal42/service-annotation-bundle (1.1.4): Extracting archive
  - Installing nyholm/psr7 (1.5.1): Extracting archive
  - Installing terminal42/escargot (1.5.1): Extracting archive
  - Installing symfony-cmf/routing (2.3.4): Extracting archive
  - Installing symfony-cmf/routing-bundle (2.5.1): Extracting archive
  - Installing thecodingmachine/safe (v2.4.0): Extracting archive
  - Installing paragonie/constant_time_encoding (v2.6.3): Extracting archive
  - Installing beberlei/assert (v3.3.2): Extracting archive
  - Installing spomky-labs/otphp (v10.0.3): Extracting archive
  - Installing spatie/schema-org (3.13.0): Extracting archive
  - Installing simplepie/simplepie (1.8.0): Extracting archive
  - Installing scssphp/scssphp (v1.11.0): Extracting archive
  - Installing scrivo/highlight.php (v9.18.1.10): Extracting archive
  - Installing scheb/2fa-bundle (v5.13.2): Extracting archive
  - Installing psr/clock (1.0.0): Extracting archive
  - Installing stella-maris/clock (0.1.7): Extracting archive
  - Installing lcobucci/clock (2.3.0): Extracting archive
  - Installing lcobucci/jwt (4.1.5): Extracting archive
  - Installing scheb/2fa-trusted-device (v5.13.2): Extracting archive
  - Installing scheb/2fa-backup-code (v5.13.2): Extracting archive
  - Installing phpspec/php-diff (v1.1.3): Extracting archive
  - Installing nikic/php-parser (v4.15.3): Extracting archive
  - Installing matthiasmullie/path-converter (1.1.3): Extracting archive
  - Installing matthiasmullie/minify (1.3.70): Extracting archive
  - Installing league/mime-type-detection (1.11.0): Extracting archive
  - Installing league/flysystem (3.12.2): Extracting archive
  - Installing league/flysystem-bundle (2.4.0): Extracting archive
  - Installing nette/utils (v4.0.0): Extracting archive
  - Installing nette/schema (v1.2.3): Extracting archive
  - Installing dflydev/dot-access-data (v3.0.2): Extracting archive
  - Installing league/config (v1.2.0): Extracting archive
  - Installing league/commonmark (2.3.8): Extracting archive
  - Installing knplabs/knp-time-bundle (v1.20.0): Extracting archive
  - Installing knplabs/knp-menu (v3.3.0): Extracting archive
  - Installing knplabs/knp-menu-bundle (v3.2.0): Extracting archive
  - Installing dragonmantank/cron-expression (v2.3.1): Extracting archive
  - Installing doctrine/instantiator (1.5.0): Extracting archive
  - Installing doctrine/inflector (2.0.6): Extracting archive
  - Installing doctrine/common (3.4.3): Extracting archive
  - Installing doctrine/orm (2.14.1): Extracting archive
  - Installing contao/core-bundle (4.13.15): Extracting archive
  - Installing contao/installation-bundle (4.13.15): Extracting archive
  - Installing contao/manager-bundle (4.13.15): Extracting archive
  - Installing imi/database-helper (0.3.1): Extracting archive
  - Installing imi/composer-scripts-contao (1.0.1): Extracting archive
29 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
49 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
49 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
49 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Loading composer repositories with package information
$ composer --version
Composer version 2.5.3 2023-02-10 13:23:52

The imi/composer-scripts-contao module does (I believe) not do anything special concerning composer plugins.

If I remove our (own) module imi/composer-scripts-contao or disable the plugin php-http/discovery it works.

Of course I could do one of both options (we even want to replace that own module), but I would like to understand the root cause of this problem and if the php-http/discovery still causes problems here.


Solution

  • This is a bug, fixed by https://github.com/php-http/discovery/pull/219

    Next time, please open a new issue on the affected repository 🙏