Search code examples
dockerdrupalcomposer-phpwindows-subsystem-for-linuxddev

Why does composer create-project for Drupal fail in WSL2?


I am a Drupal site builder experimenting with WSL2 and I am finding the routine creating a Drupal project with composer does not complete.

My PC has 16GB RAM and composer is allowed unlimited memory. To the best of my understanding I have Docker configured correctly for WSL2.

The create-project process starts normally but then stalls when installing drupal/core (9.0.2). This appears to be so whether downloading from source or from cache. After a considerable time the process will fail. The contents of the project folder are largely incomplete.

I first attempted this with a Drupal 9 recipe for DDEV, a container based local dev environment which includes composer.

Not wishing to point the finger at DDEV, I then installed composer via Homebrew in the Home directory of WSL2 and tried again, independently of DDEV or Docker. After running composer create-project drupal/recommended-project my_site_name_dir I find that composer fails in exactly the same way.

Composer output follows;

paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ composer create-project drupal/recommended-project my_site_name_dir Creating a "drupal/recommended-project" project at "./my_site_name_dir" Installing drupal/recommended-project (9.0.2)

  • Installing drupal/recommended-project (9.0.2): Loading from cache Created project in /mnt/c/Users/Paul/Sites/D9/my_site_name_dir Loading composer repositories with package information Installing dependencies (including require-dev) from lock file Package operations: 59 installs, 0 updates, 0 removals
  • Installing composer/installers (v1.9.0): Loading from cache
  • Installing drupal/core-composer-scaffold (9.0.2): Loading from cache
  • Installing drupal/core-project-message (9.0.2): Loading from cache
  • Installing typo3/phar-stream-wrapper (v3.1.4): Loading from cache
  • Installing symfony/polyfill-mbstring (v1.17.0): Loading from cache
  • Installing symfony/polyfill-ctype (v1.17.0): Loading from cache
  • Installing twig/twig (v2.12.5): Loading from cache
  • Installing symfony/yaml (v4.4.9): Loading from cache
  • Installing symfony/polyfill-php80 (v1.17.0): Loading from cache
  • Installing symfony/var-dumper (v5.1.0): Loading from cache
  • Installing symfony/translation-contracts (v2.1.2): Loading from cache
  • Installing symfony/validator (v4.4.9): Loading from cache
  • Installing symfony/translation (v4.4.9): Loading from cache
  • Installing psr/container (1.0.0): Loading from cache
  • Installing symfony/service-contracts (v2.1.2): Loading from cache
  • Installing symfony/serializer (v4.4.9): Loading from cache
  • Installing symfony/routing (v4.4.9): Loading from cache
  • Installing symfony/polyfill-php72 (v1.17.0): Loading from cache
  • Installing symfony/polyfill-intl-idn (v1.17.0): Loading from cache
  • Installing symfony/mime (v5.1.0): Loading from cache
  • Installing symfony/http-foundation (v4.4.9): Loading from cache
  • Installing psr/http-message (1.0.1): Loading from cache
  • Installing symfony/psr-http-message-bridge (v2.0.0): Loading from cache
  • Installing symfony/process (v4.4.9): Loading from cache
  • Installing symfony/polyfill-php73 (v1.17.0): Loading from cache
  • Installing symfony/polyfill-iconv (v1.17.0): Loading from cache
  • Installing symfony/event-dispatcher-contracts (v1.1.7): Loading from cache
  • Installing symfony/event-dispatcher (v4.4.9): Loading from cache
  • Installing psr/log (1.1.3): Loading from cache
  • Installing symfony/debug (v4.4.9): Loading from cache
  • Installing symfony/error-handler (v4.4.9): Loading from cache
  • Installing symfony/http-kernel (v4.4.9): Loading from cache
  • Installing symfony/dependency-injection (v4.4.9): Loading from cache
  • Installing symfony/console (v4.4.9): Loading from cache
  • Installing symfony-cmf/routing (2.3.2): Loading from cache
  • Installing stack/builder (v1.0.6): Loading from cache
  • Installing ralouphie/getallheaders (3.0.3): Loading from cache
  • Installing psr/http-factory (1.0.1): Loading from cache
  • Installing pear/pear_exception (v1.0.1): Loading from cache
  • Installing pear/console_getopt (v1.4.3): Loading from cache
  • Installing pear/pear-core-minimal (v1.10.10): Loading from cache
  • Installing pear/archive_tar (1.4.9): Loading from cache
  • Installing masterminds/html5 (2.7.0): Loading from cache
  • Installing laminas/laminas-zendframework-bridge (1.0.4): Loading from cache
  • Installing laminas/laminas-stdlib (3.2.1): Loading from cache
  • Installing laminas/laminas-escaper (2.6.1): Loading from cache
  • Installing laminas/laminas-feed (2.12.2): Loading from cache
  • Installing laminas/laminas-diactoros (2.3.0): Loading from cache
  • Installing guzzlehttp/psr7 (1.6.1): Loading from cache
  • Installing guzzlehttp/promises (v1.3.1): Loading from cache
  • Installing guzzlehttp/guzzle (6.5.4): Loading from cache
  • Installing doctrine/lexer (1.2.1): Loading from cache
  • Installing egulias/email-validator (2.1.17): Loading from cache
  • Installing doctrine/annotations (1.10.3): Loading from cache
  • Installing doctrine/reflection (1.2.1): Loading from cache
  • Installing composer/semver (1.5.1): Loading from cache
  • Installing asm89/stack-cors (1.3.0): Loading from cache
  • Installing drupal/core (9.0.2): Loading from cache Failed to download drupal/core from dist: Could not delete /mnt/c/Users/Paul/Sites/D9/my_site_name_dir/vendor/composer/782129de/drupal-core-ea6e0ce/lib/Drupal/Core: Now trying to download from source
  • Installing drupal/core (9.0.2): Cloning ea6e0cef32 from cache

[Symfony\Component\Process\Exception\ProcessTimedOutException] The process "git checkout '9.0.2' --" exceeded the timeout of 300 seconds.

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [] [] []

paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ paul@DESKTOP-TQA1I7L:/mnt/c/Users/Paul/Sites/D9$ composer create-project drupal/recommended-project my_site_name_dir Creating a "drupal/recommended-project" project at "./my_site_name_dir"

[InvalidArgumentException] Project directory "/mnt/c/Users/Paul/Sites/D9/my_site_name_dir" is not empty.

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-reqs] [--] [] [] []


Solution

  • After reading some updated documentation I now understand the problem was that I was attempting to perform this operation under the Windows file system at .mnt/c/Users/Paul instead of the Linux location of /home/paul

    As well as completing without errors, performance is vastly improved.