sonos icon indicating copy to clipboard operation
sonos copied to clipboard

Composer setup failed

Open gpatry opened this issue 2 years ago • 6 comments

Hi,

First thanks for your lot of work since many years for giving us a php library for interacting with sonos systems.

I setup a fresh symfony 6.2 webapp and then try to install your sonos library. When simply running composer require duncan3dc/sonos, I got v0.8.8 installed ...

./composer.json has been updated Running composer update duncan3dc/sonos Loading composer repositories with package information Updating dependencies Lock file operations: 4 installs, 0 updates, 0 removals - Locking duncan3dc/domparser (2.1.0) - Locking duncan3dc/helpers (1.7.0) - Locking duncan3dc/serial (0.4.0) - Locking duncan3dc/sonos (0.8.8) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 4 installs, 0 updates, 0 removals - Installing duncan3dc/serial (0.4.0): Extracting archive - Installing duncan3dc/helpers (1.7.0): Extracting archive - Installing duncan3dc/domparser (2.1.0): Extracting archive - Installing duncan3dc/sonos (0.8.8): Extracting archive Generating autoload files 109 packages you are using are looking for funding. Use the composer fund command to find out more! Run composer recipes at any time to see the status of your Symfony recipes. Executing script cache:clear [OK] Executing script assets:install public [OK] Executing script requirements-checker [OK] No security vulnerability advisories found Using version ^0.8.8 for duncan3dc/sonos

Now if I want to force latest version (eg 2.2.2 according to your latest tags) by setting it in composer.json, I've got this errors ... composer file update : "duncan3dc/sonos": "^2.0", or with "duncan3dc/sonos": "^2.2.2",

running composer update : Loading composer repositories with package information Info from https://repo.packagist.org: #StandWithUkraine Restricting packages listed in "symfony/symfony" to "6.2.*" Updating dependencies Your requirements could not be resolved to an installable set of packages. Problem 1 - duncan3dc/sonos[2.2.0, ..., 2.2.2] require duncan3dc/speaker ^1.0 -> satisfiable by duncan3dc/speaker[1.0.0, ..., 1.4.0]. - duncan3dc/speaker 1.4.0 requires duncan3dc/exec ^0.4 || ^1.0 -> satisfiable by duncan3dc/exec[0.4.0, 1.0.0]. - duncan3dc/sonos[2.0.0, ..., 2.1.1] require php ^7.1 -> your php version (8.1.14) does not satisfy that requirement. - duncan3dc/exec[0.4.0, 1.0.0] require symfony/console ^4.2 || ^5.0 -> found symfony/console[v4.2.0, ..., v4.4.49, v5.0.0, ..., v5.4.17] but it conflicts with your root composer.json require (6.2.*). - duncan3dc/speaker[1.0.0, ..., 1.1.0] require symfony/process ^2.3 -> found symfony/process[v2.3.0, ..., v2.8.52] but it conflicts with your root composer.json require (6.2.*). - duncan3dc/speaker 1.2.0 requires symfony/process ^2.8|^3.0 -> found symfony/process[v2.8.0, ..., v2.8.52, v3.0.0, ..., v3.4.47] but it conflicts with your root composer.json require (6.2.*). - duncan3dc/speaker[1.3.0, ..., 1.3.1] require php ^7.2 -> your php version (8.1.14) does not satisfy that requirement. - Root composer.json requires duncan3dc/sonos ^2.0 -> satisfiable by duncan3dc/sonos[2.0.0, ..., 2.2.2]. Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

If I run composer with -W option, some symfony packages are downgraded and I don't want it.

here is the command I ran to setup my project : symfony new SonosManager --version="6.2.*" --webapp cd SonosManager composer require logger composer require annotations composer remove sensio/framework-extra-bundle composer require symfony/profiler-pack composer require symfony/debug-pack composer require twig composer require symfony/requirements-checker composer require symfony/apache-pack

Can you help me ?

gpatry avatar Jan 16 '23 00:01 gpatry

Hi @gpatry, this library doesn't directly depend on Symfony components, but I guess some dependencies do, let me take a look and see what I can do to allow compatibility with Symfony 6

duncan3dc avatar Jan 17 '23 11:01 duncan3dc

Can you try again Guillaume? I think it should work now :crossed_fingers:

duncan3dc avatar Jan 17 '23 12:01 duncan3dc

Hi @duncan3dc ,

I test again, if I run composer require duncan3cd/sonos the result is the same as before : install version 0.8.8 of the library

If I mention explicitly duncan3dc/sonos:^2.2.2 in my composer.json, install failed again with a requirement on psr/log 1.1 instead of psr/log 3.0 added by symfony 6.2

Loading composer repositories with package information Restricting packages listed in "symfony/symfony" to "6.2.*" Updating dependencies Your requirements could not be resolved to an installable set of packages. ` Problem 1` ` - Root composer.json requires duncan3dc/sonos ^2.2.2 -> satisfiable by duncan3dc/sonos[2.2.2].` ` - duncan3dc/sonos 2.2.2 requires psr/log ^1.1 -> found psr/log[1.1.0, ..., 1.1.4] but it conflicts with your root composer.json require (^3.0).` Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

And thanks for your quick answser already given. Guillaume

gpatry avatar Jan 17 '23 20:01 gpatry

Hi @duncan3dc ,

After exploring versions of psr/log and psr/cache and differents requirements of symfony, I think this issue could be solved by updating your composer.json like this :

remove : "psr/log": "^1.1", "psr/simple-cache": "^1.0", add : "psr/log": "^1.1 || ^2.0 || ^3.0", "psr/simple-cache": "^1.0 || ^2.0 || ^3.0",

psr/log and psr/cache requires PHP >= 8.0.0 so it could probably break compatibility ?

gpatry avatar Jan 17 '23 21:01 gpatry

I created a pull-request with changes proprosal (Full support for PHP 8.2 and Symfony 6.2 #125) I run composer test and all test are OK.

I also notice that phpstan/phpstan is outdate. I tried to update it to the latest version and correct the 85 errors. If I have time, I will suggest corrections too.

gpatry avatar Jan 17 '23 23:01 gpatry

I go forward in testing. I replace the 0.8.8 src in my vendor dir with the 2.2.2 src and try to use latest version.

I don't know if it is due to psr/log 3.0 compatibility, but have this issue when using it :

Compile Error: Declaration of duncan3dc\Sonos\Devices\Discovery::setLogger(Psr\Log\LoggerInterface $logger) must be compatible with Psr\Log\LoggerAwareInterface::setLogger(Psr\Log\LoggerInterface $logger): void

Stack trace :

Symfony\Component\ErrorHandler\Error\FatalError:
Compile Error: Declaration of duncan3dc\Sonos\Devices\Discovery::setLogger(Psr\Log\LoggerInterface $logger) must be compatible with Psr\Log\LoggerAwareInterface::setLogger(Psr\Log\LoggerInterface $logger): void

  at vendor/duncan3dc/sonos/src/Devices/Discovery.php:58

gpatry avatar Jan 17 '23 23:01 gpatry