composer / composer

Dependency Manager for PHP
https://getcomposer.org/
MIT License
28.53k stars 4.53k forks source link

Return value of Composer\Repository\Vcs\SvnDriver::getComposerInformation() must be of the type array or null, string returned #10751

Closed ravage84 closed 2 years ago

ravage84 commented 2 years ago

As of Composer 2.3.0 throughout 2.3.5, we are experiencing an issue with a private package on a SVN repo when updating our dependencies.

My composer.json:

{
<snip>
    "require": {
<snip>
        "some-vendor/some-package-on-svn": "^0.6.5",
<snip>
    },
<snip>
    "repositories": {
<snip>
        "some-package-on-svn": {
            "type": "svn",
            "url": "https://some.company.host/svn/some-package-on-svn/"
        }
    },
<snip>
}

Output of composer diagnose:

Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0  87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B  0C708369 153E328C AD90147D AFE50952
OK
Checking composer version: OK
Composer version: 2.3.5
PHP version: 7.0.22 - Package overridden via config.platform, actual: 7.3.22
PHP binary path: C:\xampp\php\php.exe
OpenSSL version: OpenSSL 1.1.1g  21 Apr 2020
cURL version: 7.70.0 libz 1.2.11 ssl OpenSSL/1.1.1g
zip: extension present, unzip not available, 7-Zip present (7z)

When I run this command:

composer update

I get the following output:

Running 2.3.5 (2022-04-13 16:43:00) with PHP 7.3.22 on Windows NT / 10.0
Reading ./composer.json (C:\xampp\htdocs\some-project\composer.json)            
Loading config file ./composer.json (C:\xampp\htdocs\some-project\composer.json)
Checked CA file C:\xampp\apache\bin\curl-ca-bundle.crt: valid
Executing command (C:\xampp\htdocs\some-project): git branch -a --no-color --no-abbrev -v
Executing async command (C:\xampp\htdocs\some-project): git rev-list master..SOMEBRANCH
Executing async command (C:\xampp\htdocs\some-project): git rev-list remotes/origin/master..SOMEBRANCH
Reading C:/Users/some.user/AppData/Roaming/Composer/composer.json (C:\Users\some.user\AppData\Roaming\Composer\composer.json)
Loading config file C:/Users/some.user/AppData/Roaming/Composer/composer.json (C:\Users\some.user\AppData\Roaming\Composer\composer.json)                      
Reading C:\xampp\htdocs\some-project/vendor/composer/installed.json (C:\xampp\htdocs\some-project\vendor\composer\installed.json)                                          
Reading C:/Users/some.user/AppData/Roaming/Composer/vendor/composer/installed.json (C:\Users\some.user\AppData\Roaming\Composer\vendor\composer\installed.json)
Loading plugin Cake\Composer\Plugin (from cakephp/plugin-installer)                                                                                                
Loading plugin Icanhazstring\Composer\Unused\UnusedPlugin (from icanhazstring/composer-unused, installed globally)
Loading plugin Pyrech\ComposerChangelogs\ChangelogsPlugin (from pyrech/composer-changelogs, installed globally)
Reading ./composer.lock (C:\xampp\htdocs\some-project\composer.lock)
Loading composer repositories with package information
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-vendor_phpcs-standard/trunk
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-vendor_phpcs-standard/branches
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-vendor_phpcs-standard/tags
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-trunk--38.json from cache
Reading composer.json of some-vendor/phpcs-standard (2.0.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2.0.0--13.json from cache
Importing tag 2.0.0 (2.0.0.0)
Reading composer.json of some-vendor/phpcs-standard (2.0.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2.0.1--21.json from cache
Importing tag 2.0.1 (2.0.1.0)
Reading composer.json of some-vendor/phpcs-standard (2.0.2)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2.0.2--24.json from cache
Importing tag 2.0.2 (2.0.2.0)
Reading composer.json of some-vendor/phpcs-standard (2.0.3)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2.0.3--26.json from cache
Importing tag 2.0.3 (2.0.3.0)
Reading composer.json of some-vendor/phpcs-standard (2.0.4)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2.0.4--30.json from cache
Importing tag 2.0.4 (2.0.4.0)
Reading composer.json of some-vendor/phpcs-standard (2014-09-22)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2014-09-22--7.json from cache
Importing tag 2014-09-22 (2014.09.22)
Reading composer.json of some-vendor/phpcs-standard (2014-12-18)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-2014-12-18--12.json from cache
Importing tag 2014-12-18 (2014.12.18)
Reading composer.json of some-vendor/phpcs-standard (3.0.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-3.0.0--16.json from cache
Importing tag 3.0.0 (3.0.0.0)
Reading composer.json of some-vendor/phpcs-standard (4.0.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-tags-4.0.0--39.json from cache
Importing tag 4.0.0 (4.0.0.0)
Reading composer.json of some-vendor/phpcs-standard (trunk)
Importing branch trunk (dev-trunk)
Reading composer.json of some-vendor/phpcs-standard (2.x)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-vendor-phpcs-standard/-branches-2.x--29.json from cache
Importing branch 2.x (2.x-dev)
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-package-on-svn/trunk
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-package-on-svn/branches
Executing command (CWD): svn ls --verbose --non-interactive  -- https://some.company.host/svn/some-package-on-svn/tags
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-trunk--250.json from cache
Reading composer.json of some-vendor/some-package-on-svn (0.1.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.1.0--8.json from cache
Importing tag 0.1.0 (0.1.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.1.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.1.1--10.json from cache
Importing tag 0.1.1 (0.1.1.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.0--14.json from cache
Importing tag 0.2.0 (0.2.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.1--18.json from cache
Importing tag 0.2.1 (0.2.1.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.2)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.2--23.json from cache
Importing tag 0.2.2 (0.2.2.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.3)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.3--29.json from cache
Importing tag 0.2.3 (0.2.3.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.4)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.4--34.json from cache
Importing tag 0.2.4 (0.2.4.0)
Reading composer.json of some-vendor/some-package-on-svn (0.2.5)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.2.5--36.json from cache
Importing tag 0.2.5 (0.2.5.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.0--46.json from cache
Importing tag 0.3.0 (0.3.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.1--50.json from cache
Importing tag 0.3.1 (0.3.1.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.2)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.2--53.json from cache
Importing tag 0.3.2 (0.3.2.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.3)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.3--55.json from cache
Importing tag 0.3.3 (0.3.3.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.4)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.4--57.json from cache
Importing tag 0.3.4 (0.3.4.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.5)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.5--62.json from cache
Importing tag 0.3.5 (0.3.5.0)
Reading composer.json of some-vendor/some-package-on-svn (0.3.6)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.3.6--66.json from cache
Importing tag 0.3.6 (0.3.6.0)
Reading composer.json of some-vendor/some-package-on-svn (0.4.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.4.0--88.json from cache
Importing tag 0.4.0 (0.4.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.0--120.json from cache
Importing tag 0.5.0 (0.5.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.1--129.json from cache
Importing tag 0.5.1 (0.5.1.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.2)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.2--133.json from cache
Importing tag 0.5.2 (0.5.2.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.3)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.3--136.json from cache
Importing tag 0.5.3 (0.5.3.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.4)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.4--141.json from cache
Importing tag 0.5.4 (0.5.4.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.5)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.5--153.json from cache
Importing tag 0.5.5 (0.5.5.0)
Reading composer.json of some-vendor/some-package-on-svn (0.5.6)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.5.6--158.json from cache
Importing tag 0.5.6 (0.5.6.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.0)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.0--206.json from cache
Importing tag 0.6.0 (0.6.0.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.1)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.1--217.json from cache
Importing tag 0.6.1 (0.6.1.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.2)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.2--221.json from cache
Importing tag 0.6.2 (0.6.2.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.3)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.3--224.json from cache
Importing tag 0.6.3 (0.6.3.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.4)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.4--233.json from cache
Importing tag 0.6.4 (0.6.4.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.5)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.5--239.json from cache
Importing tag 0.6.5 (0.6.5.0)
Reading composer.json of some-vendor/some-package-on-svn (0.6.6)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-tags-0.6.6--244.json from cache
Importing tag 0.6.6 (0.6.6.0)
Reading composer.json of some-vendor/some-package-on-svn (trunk)
Importing branch trunk (dev-trunk)
Reading composer.json of some-vendor/some-package-on-svn (Tag)
Reading C:/Users/some.user/AppData/Local/Composer/repo/https---some-company-host-svn-some-package-on-svn/-branches-Tag--86.json from cache

In SvnDriver.php line 140:

  [TypeError]
  Return value of Composer\Repository\Vcs\SvnDriver::getComposerInformation() must be of the type array or null, string returned  

Exception trace:
  at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/Vcs/SvnDriver.php:140
 Composer\Repository\Vcs\SvnDriver->getComposerInformation() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/VcsRepository.php:371
 Composer\Repository\VcsRepository->initialize() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/ArrayRepository.php:311
 Composer\Repository\ArrayRepository->getPackages() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/ArrayRepository.php:62
 Composer\Repository\ArrayRepository->loadPackages() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/PoolBuilder.php:381
 Composer\DependencyResolver\PoolBuilder->loadPackagesMarkedForLoading() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/PoolBuilder.php:234
 Composer\DependencyResolver\PoolBuilder->buildPool() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Repository/RepositorySet.php:260
 Composer\Repository\RepositorySet->createPool() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer.php:436
 Composer\Installer->doUpdate() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Installer.php:279
 Composer\Installer->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Command/UpdateCommand.php:241
 Composer\Command\UpdateCommand->execute() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Command/Command.php:298
 Symfony\Component\Console\Command\Command->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Application.php:1015
 Symfony\Component\Console\Application->doRunCommand() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Application.php:299
 Symfony\Component\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Console/Application.php:334
 Composer\Console\Application->doRun() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/vendor/symfony/console/Application.php:171
 Symfony\Component\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/Console/Application.php:130
 Composer\Console\Application->run() at phar://C:/ProgramData/ComposerSetup/bin/composer.phar/bin/composer:88
 require() at C:\ProgramData\ComposerSetup\bin\composer.phar:29

update [--with WITH] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--dry-run] [--dev] [--no-dev] [--lock] [--no-install] [--no-autoloader] [--no-suggest] [--no-progress] [-w|--with-dependencies] [-W|--with-all
-dependencies] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs]
 [--prefer-stable] [--prefer-lowest] [-i|--interactive] [--root-reqs] [--] [<packages>...]

The file in question, -branches-Tag--86.json contains this:

""

This is probably related to https://github.com/composer/composer/issues/10680 and https://github.com/composer/composer/pull/10681 respectively.

An empty string probably needs to be cast into an array to prevent this.

ravage84 commented 2 years ago

Downgrading to Composer 2.2.12 with composer self-update 2.2.12 works.