RealestatePointe / d8-pantheon-composer

Install drops-8 with Composer on Pantheon.
MIT License
0 stars 0 forks source link

Fix stability and version constraints to avoid updating to dev version of core #4

Open tmanhollan opened 5 years ago

tmanhollan commented 5 years ago

Starting around 10/15/2019, drupal/core started updating to the latest dev version (8.9.x-dev) instead of the latest stable release (8.7.8). Prior to that, I always got the expected releases of core, contrib, and all their dependencies. The big jump in the core version also caused a cascade of dependency updates and errors with the scaffolding steps.

minimum-stability is set to "dev" because we were initially developing our custom installation profile and some custom modules and wanted them to be reusable so did them as external projects, and composer-required them at dev-master so we could develop on it a as part of the project without having to tag new releases for each incremental change as the project evolved. The website projects require the installation profile as an external project, and the installation profile requires our shared modules and base theme as external requirements.

prefer-stable set to true, which I expected would result in stable versions of any requirements not explicitly requesting unstable versions, but perhaps I'm worng.

We've updated all of the external shared projects to tagged releases. Updating their version constraints and bumping the minimum-stability resolved the issue on the first site and restored the proper version of core and expected dependency updates.

tmanhollan commented 5 years ago

Some additional troubleshooting information:

After the unexpected update to 8.9.x-dev, composer why drupal/core shows webflo/drupal-core-strict is the only component requiring drupal/core at 8.9.x-dev and the root composer.json is the only thing requiring webflo/drupal-core-strict, but it is constrained to ^8.6.15. I understand that minimum-stability: dev is allowing this to happen, but with prefer-stable and nothing specifying the dev version of anything in this dependency chain, I don't understand why I'm getting it.

Also, at the time of updating, there was an alpha release of drupal/core 8.8, but it did not update to that version when minimum-stability was bumped to alpha. Instead, it went back to 8.7.8 as intended.

composer why drupal/core

drupal/address                         1.7.0                     requires  drupal/core (^8.6)
drupal/admin_toolbar                   1.27.0                    requires  drupal/core (*)
drupal/adminimal_admin_toolbar         1.10.0                    requires  drupal/core (~8.0)
drupal/adminimal_theme                 1.5.0                     requires  drupal/core (~8.0)
drupal/bootstrap                       3.20.0                    requires  drupal/core (~8.0)
drupal/captcha                         1.0.0-beta4               requires  drupal/core (*)
drupal/config_direct_save              1.0.0                     requires  drupal/core (~8.0)
drupal/config_installer                1.8.0                     requires  drupal/core (~8.0)
drupal/ctools                          3.2.0                     requires  drupal/core (^8.5)
drupal/devel                           2.1.0                     requires  drupal/core (~8.0)
drupal/entity_reference_revisions      1.5.0                     requires  drupal/core (~8.0)
drupal/environment_indicator           3.7.0                     requires  drupal/core (*)
drupal/google_analytics                2.4.0                     requires  drupal/core (~8.5)
drupal/imce                            1.7.0                     requires  drupal/core (~8.0)
drupal/metatag                         1.10.0                    requires  drupal/core (*)
drupal/pantheon_advanced_page_cache    1.0.0                     requires  drupal/core (~8.0)
drupal/paragraphs                      1.9.0                     requires  drupal/core (~8)
drupal/pathauto                        1.6.0-alpha1              requires  drupal/core (^8.6)
drupal/recaptcha                       2.4.0                     requires  drupal/core (~8.0)
drupal/redirect                        1.4.0                     requires  drupal/core (~8)
drupal/simple_block                    1.0.0-beta1               requires  drupal/core (*)
drupal/smtp                            1.0.0-beta6               requires  drupal/core (~8.0)
drupal/token                           1.5.0                     requires  drupal/core (^8.5)
drupal/twig_vardumper                  1.2.0                     requires  drupal/core (~8.0)
drupal/viewsreference                  1.4.0                     requires  drupal/core (~8.0)
drupal/webform                         5.4.0                     requires  drupal/core (*)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  requires  drupal/core (^8.6.15)
webflo/drupal-core-strict              8.9.x-dev                 requires  drupal/core (8.9.x-dev)

composer why webflo/drupal-core-strict

realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  requires  webflo/drupal-core-strict (^8.6.15)

composer why-not drupal/core:8.7.8

webflo/drupal-core-strict              8.9.x-dev                 requires          drupal/core (8.9.x-dev)
drupal/core                            8.7.8                     requires          typo3/phar-stream-wrapper (^2.1.1)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  typo3/phar-stream-wrapper (but v3.1.3 is installed)

composer why-not webflo/drupal-core-strict:8.7.8

webflo/drupal-core-strict              8.7.8                     requires          composer/installers (v1.6.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  composer/installers (but v1.7.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          doctrine/annotations (v1.2.7)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  doctrine/annotations (but v1.4.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          doctrine/collections (v1.3.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  doctrine/collections (but v1.4.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          doctrine/common (v2.6.2)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  doctrine/common (but v2.7.3 is installed)
webflo/drupal-core-strict              8.7.8                     requires          doctrine/inflector (v1.1.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  doctrine/inflector (but v1.2.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          doctrine/lexer (v1.0.1)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  doctrine/lexer (but 1.0.2 is installed)
webflo/drupal-core-strict              8.7.8                     requires          egulias/email-validator (2.1.7)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  egulias/email-validator (but 2.1.11 is installed)
webflo/drupal-core-strict              8.7.8                     requires          guzzlehttp/psr7 (1.4.2)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  guzzlehttp/psr7 (but 1.6.1 is installed)
webflo/drupal-core-strict              8.7.8                     requires          paragonie/random_compat (v2.0.18)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  paragonie/random_compat (but v9.99.99 is installed)
webflo/drupal-core-strict              8.7.8                     requires          pear/archive_tar (1.4.6)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  pear/archive_tar (but 1.4.8 is installed)
webflo/drupal-core-strict              8.7.8                     requires          pear/console_getopt (v1.4.1)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  pear/console_getopt (but v1.4.2 is installed)
webflo/drupal-core-strict              8.7.8                     requires          pear/pear-core-minimal (v1.10.7)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  pear/pear-core-minimal (but v1.10.9 is installed)
webflo/drupal-core-strict              8.7.8                     requires          psr/log (1.0.2)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  psr/log (but 1.1.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/class-loader (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/class-loader (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/console (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/console (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/debug (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/debug (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/dependency-injection (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/dependency-injection (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/event-dispatcher (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/event-dispatcher (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/http-foundation (v3.4.27)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/http-foundation (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/http-kernel (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/http-kernel (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/polyfill-ctype (v1.11.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/polyfill-ctype (but v1.12.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/polyfill-iconv (v1.11.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/polyfill-iconv (but v1.12.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/polyfill-mbstring (v1.11.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/polyfill-mbstring (but v1.12.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/polyfill-php70 (v1.11.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/polyfill-php70 (but v1.12.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/process (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/process (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/routing (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/routing (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/serializer (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/serializer (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/translation (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/translation (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/validator (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/validator (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          symfony/yaml (v3.4.26)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  symfony/yaml (but v3.4.32 is installed)
webflo/drupal-core-strict              8.7.8                     requires          twig/twig (v1.38.4)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  twig/twig (but v1.42.3 is installed)
webflo/drupal-core-strict              8.7.8                     requires          typo3/phar-stream-wrapper (v2.1.2)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  typo3/phar-stream-wrapper (but v3.1.3 is installed)
webflo/drupal-core-strict              8.7.8                     requires          zendframework/zend-diactoros (1.4.1)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  zendframework/zend-diactoros (but 1.8.7 is installed)
webflo/drupal-core-strict              8.7.8                     requires          zendframework/zend-escaper (2.5.2)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  zendframework/zend-escaper (but 2.6.1 is installed)
webflo/drupal-core-strict              8.7.8                     requires          zendframework/zend-feed (2.7.0)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  zendframework/zend-feed (but 2.12.0 is installed)
webflo/drupal-core-strict              8.7.8                     requires          zendframework/zend-stdlib (3.0.1)
realestatepointe/d8-pantheon-composer  dev-clu-2019-08-01-13-02  does not require  zendframework/zend-stdlib (but 3.2.1 is installed)

Full output of composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 47 updates, 1 removal
  - Removing brumann/polyfill-unserialize (v1.0.3)
  - Installing drupal/core-vendor-hardening (8.9.x-dev 3e396cb): Downloading (100%)
  - Updating composer/installers (v1.6.0 => v1.7.0): Downloading (100%)
  - Updating zendframework/zend-diactoros (1.4.1 => 1.8.7): Downloading (100%)
  - Updating typo3/phar-stream-wrapper (v2.1.2 => v3.1.3): Downloading (100%)
  - Updating pear/console_getopt (v1.4.1 => v1.4.2): Downloading (100%)
    Cleaning: pear/console_getopt
  - Updating pear/pear-core-minimal (v1.10.7 => v1.10.9): Downloading (100%)
    Cleaning: pear/pear-core-minimal
  - Updating pear/archive_tar (1.4.6 => 1.4.8): Downloading (100%)
    Cleaning: pear/archive_tar
  - Updating zendframework/zend-stdlib (3.0.1 => 3.2.1): Downloading (100%)
    Cleaning: zendframework/zend-stdlib
  - Updating zendframework/zend-escaper (2.5.2 => 2.6.1): Downloading (100%)
    Cleaning: zendframework/zend-escaper
  - Updating zendframework/zend-feed (2.7.0 => 2.12.0): Downloading (100%)
    Cleaning: zendframework/zend-feed
  - Updating symfony/polyfill-ctype (v1.11.0 => v1.12.0): Downloading (100%)
  - Updating twig/twig (v1.38.4 => v1.42.3): Downloading (100%)
    Cleaning: twig/twig
  - Updating symfony/yaml (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/yaml
  - Updating symfony/polyfill-mbstring (v1.11.0 => v1.12.0): Downloading (100%)
  - Updating symfony/translation (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/translation
  - Updating symfony/validator (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/validator
  - Updating symfony/serializer (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/serializer
  - Updating symfony/routing (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/routing
  - Updating paragonie/random_compat (v2.0.18 => v9.99.99): Downloading (100%)
    Cleaning: paragonie/random_compat
  - Updating symfony/polyfill-php70 (v1.11.0 => v1.12.0): Downloading (100%)
  - Updating symfony/http-foundation (v3.4.27 => v3.4.32): Downloading (100%)
    Cleaning: symfony/http-foundation
  - Updating symfony/process (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/process
  - Updating symfony/polyfill-iconv (v1.11.0 => v1.12.0): Downloading (100%)
  - Updating symfony/event-dispatcher (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/event-dispatcher
  - Updating psr/log (1.0.2 => 1.1.0): Downloading (100%)
  - Updating symfony/debug (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/debug
  - Updating symfony/http-kernel (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/http-kernel
  - Updating symfony/dependency-injection (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/dependency-injection
  - Updating symfony/console (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/console
  - Updating symfony/class-loader (v3.4.26 => v3.4.32): Downloading (100%)
    Cleaning: symfony/class-loader
  - Installing ralouphie/getallheaders (3.0.3): Downloading (100%)
  - Updating guzzlehttp/psr7 (1.4.2 => 1.6.1): Downloading (100%)
    Cleaning: guzzlehttp/psr7
  - Updating doctrine/lexer (v1.0.1 => 1.0.2): Downloading (100%)
  - Updating egulias/email-validator (2.1.7 => 2.1.11): Downloading (100%)
    Cleaning: egulias/email-validator
  - Updating doctrine/annotations (v1.2.7 => v1.4.0): Downloading (100%)
  - Updating doctrine/collections (v1.3.0 => v1.4.0): Downloading (100%)
    Cleaning: doctrine/collections
  - Updating doctrine/inflector (v1.1.0 => v1.2.0): Downloading (100%)
    Cleaning: doctrine/inflector
  - Updating doctrine/common (v2.6.2 => v2.7.3): Downloading (100%)
    Cleaning: doctrine/common
  - Removing drupal/core (8.7.8)
  - Installing drupal/core (8.9.x-dev 244875b): Downloading (100%)
  - Updating webflo/drupal-core-strict (8.7.8 => 8.9.x-dev 3a5ff78)
  - Updating commerceguys/addressing (v1.0.5 => v1.0.6): Loading from cache
  - Downgrading tmanhollan/realestatepointe (dev-master 4113112 => 1.0.0): Downloading (100%)
  - Updating squizlabs/php_codesniffer (3.5.0 => 3.5.1): Loading from cache
    Cleaning: squizlabs/php_codesniffer
  - Updating drupal/adminimal_admin_toolbar (1.9.0 => 1.10.0): Loading from cache
  - Updating drupal/pathauto (1.4.0 => 1.6.0-alpha1): Downloading (100%)
  - Updating drupal/smtp (1.0.0-beta5 => 1.0.0-beta6): Loading from cache
  - Updating drupal/captcha (1.0.0-beta3 => 1.0.0-beta4): Loading from cache
  - Updating tmanhollan/pivot dev-master (9223458 => 1f8410f):  Checking out 1f8410f386
  - Removing tmanhollan/realestatepointe_standard (dev-master 2393cae)
  - Installing tmanhollan/realestatepointe_standard (dev-master 32a8e3b): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating optimized autoload files
Hardening vendor directory with .htaccess and web.config files.
PHP CodeSniffer Config installed_paths set to ../../drupal/coder/coder_sniffer
  - .gitattributes (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/.gitattributes): Downloading (failed)
  - .ht.router.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/.ht.router.php): Downloading (failed)
  - index.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/index.php): Downloading (failed)
  - robots.txt (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/robots.txt): Downloading (failed)
  - sites/default/default.services.yml (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.services.yml): Downloading (failed)
  - sites/default/default.settings.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.settings.php): Downloading (failed)
  - sites/development.services.yml (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/development.services.yml): Downloading (failed)
  - sites/example.settings.local.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/example.settings.local.php): Downloading (failed)
  - sites/example.sites.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/example.sites.php): Downloading (failed)
  - update.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/update.php): Downloading (failed)
  - sites/default/default.services.pantheon.preproduction.yml (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.services.pantheon.preproduction.yml): Downloading (failed)
  - sites/default/settings.pantheon.php (https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/settings.pantheon.php): Downloading (failed)

  - Has failed with the last source: https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/{version}/{path}

  [Exception]
  Failed to download:
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/.gitattributes
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/.ht.router.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/index.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/robots.txt
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.services.yml
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.settings.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/development.services.yml
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/example.settings.local.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/example.sites.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/update.php
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/default.services.pantheon.preproduction.yml
  https://raw.githubusercontent.com/pantheon-systems/drops-8-scaffolding/8.9.x/sites/default/settings.pantheon.php

update [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--lock] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [--with-dependencies] [--with-all-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>]...
tmanhollan commented 5 years ago

Stability and Dependencies of Dependencies

Stability flags (e.g. @dev) apply only to dependencies in the root package. Dependencies of those dependencies need to meet the minimum stability set in the root package.

See composer stability constraints and package links.

I tested out a few combinations of flags and minimum stability values and it looks like I need to either set minimum stability at the root to satisfy any dependencies not specified in the root, or explicitly require them in the root package with stability flags that override minimum stability.

Looks like we need a few beta versions but no alpha and I think allowing the shared projects to manage their own dependencies is better than explicitly requiring them at the root, at least for now.