fix(drupal-core): install Drush via Guzzle alias while Drush lags core's Guzzle 8 bump#178
Merged
Conversation
Drupal core main moved to guzzlehttp/guzzle ^8.0 on 2026-07-24 (drupal.org issue #3612544) while every Drush version still requires ^7.0, so `ddev composer require drush/drush` became unsatisfiable against Drupal 12 HEAD and every drupal12 workspace failed to install Drupal. Guzzle 8 works with Drush at runtime — verified drush 14.x-dev against guzzle 8.0.0 with `drush si demo_umami`, `drush cr` and `drush status`. So retry the require with an inline alias presenting the locked Guzzle version as a 7.x one. Composer only accepts an exact version as an alias source, hence reading it from composer.lock, and the fallback is gated on Guzzle 8.x so it cannot misfire on 11.x/10.x workspaces. The plain require still runs first, so this fallback stops being reached once Drush ships Guzzle 8 support (drush-ops/drush#6602) and can then be deleted. Also treat a Drush install failure as fatal. Every later step (site install, cache rebuild, uli) runs through Drush, so the old "non-critical" warning just produced a cascade of "drush is not available" errors that buried the real cause. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Member
Author
|
Tracking issue for removing this workaround once Drush supports Guzzle 8: #179 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Drupal core
mainmoved toguzzlehttp/guzzle: "^8.0"on 2026-07-24 (drupal.org #3612544, core commit6e1efec8a) while every Drush version still requires^7.0. That makesddev composer require drush/drushunsatisfiable against Drupal 12 HEAD, so everydrupal12workspace has been failing its Drupal install for the last day — the setup log showsFailed to install Drush (non-critical)followed by a cascade ofdrush is not availableerrors fromdrush si/drush cr.Nothing in this repo, DDEV, or the add-on is involved: the same conflict reproduces from a 6-line
composer.jsonwith no site and no DDEV.composer require "guzzlehttp/guzzle:<locked> as 7.99.0" drush/drush -Winstalls unmodified upstream Drush from Packagist. The version is read fromcomposer.lockbecause Composer rejects a range as an alias source (the alias source must be an exact version), and the fallback is gated on Guzzle8.*so it can't misfire on 11.x/10.x workspaces.uli) runs through Drush, so the old "non-critical" warning only buried the real cause under downstream errors.drupal-core/scripts/test-issue-branches.sh, and capture the require's exit code there — the previouscmd | tail -5form meant the script testedtail's status, so a failure wouldn't have been detected withoutpipefail.Test plan
terraform fmt -recursivecleanterraform validatepasses fordrupal-coreterraform testpasses fordrupal-core(6 passed)bash -n drupal-core/scripts/test-issue-branches.shcleandrupal-coreworkspace on core HEAD: plainddev composer require drush/drushexits 1;-Walso fails withConclusion: don't install drupal/core 12.x-devdrush/drush 14.x-devagainstguzzlehttp/guzzle 8.0.0, thendrush si -y demo_umami→[OK] Installation complete,drush crOK,drush status→Drupal bootstrap: Successful,Install profile: demo_umamidrupal/recommended-projectD12 site (outside Coder)drupal12workspace build from the pushed template (not yet run — the fallback was exercised by hand in an existing workspace, in the same order the template runs it)Notes
drupal-contribwith Drupal Version = 12 is very likely broken the same way — it addsdrush/drushtorequire-devand resolves viaddev poser. Not addressed here: it defaults to11, and the fix there can't read a lock file (the solve fails before one exists), so it needs a different, separately tested approach.test-*-functionaljobs. I confirmed which jobs failed but didn't read the CircleCI logs, so I can't say whether that's real Guzzle 8 breakage in paths beyond the three commands exercised above. The workaround produces the same runtime state the merged PR would, either way.🤖 Generated with Claude Code