zendframework / zend-expressive-migration

ZendFramework Expressive Migration Tools
BSD 3-Clause "New" or "Revised" License
4 stars 3 forks source link

Migration fails due to unsatisfied deps #11

Closed weirdan closed 6 years ago

weirdan commented 6 years ago

Provide a narrative description of what you are trying to accomplish:' I'm updating Expressive 2.2 app to Expressive 3.0, following the migration guide

Code to reproduce the issue

$ composer require --dev zendframework/zend-expressive-migration
$  ./vendor/bin/expressive-migration migrate

Expected results

Upgrade should complete (I think)

Actual results

Upgrade proceeds apparently fine, but eventually emits the following failure:

composer require --dev zendframework/zend-component-installer zendframework/zend-expressive-too
ling --no-interaction
Using version ^2.1 for zendframework/zend-component-installer
Using version ^1.0 for zendframework/zend-expressive-tooling
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - zendframework/zend-httphandlerrunner 1.0.1 requires psr/http-message-implementation ^1.0
-> no matching package found.
    - zendframework/zend-expressive-tooling 1.0.0 requires zendframework/zend-expressive ^3.0 -> satisfiable by zendframework/zend-expressive[3.0.0].
    - zendframework/zend-expressive 3.0.0 requires zendframework/zend-httphandlerrunner ^1.0.1 -> satisfiable by zendframework/zend-httphandlerrunner[1.0.1].
    - Installation request for zendframework/zend-expressive-tooling ^1.0 -> satisfiable by zendframework/zend-expressive-tooling[1.0.0].

Then a couple of following steps fail like this:

Please provide the path to the application sources [src]:
Provided directory is: src
> expressive 'migrate:interop-middleware' '--src' 'src'
sh: 1: expressive: not found
Script expressive handling the expressive event returned with error code 127
Please provide the path to the application actions to be converted to request handlers [src]:
Provided directory is: src
> expressive 'migrate:middleware-to-request-handler' '--src' 'src'
sh: 1: expressive: not found
Script expressive handling the expressive event returned with error code 127
michalbundyra commented 6 years ago

@weirdan Is it the only error you getting? What version of zend-expressive-migration you have installed (composer show)?

We had this issue straight after release, but it was resolved with zend-expressive-migration 0.1.2. Before expressive requires diactoros, now you can use any PSR-7 implementation, and the fix in migration tool was to require diactoros, just in case it was not installed explicitly before.

weirdan commented 6 years ago

it was 0.1.2:

❯ composer require --dev zendframework/zend-expressive-migration
Using version ^0.1.2 for zendframework/zend-expressive-migration

When going through the log output I don't see attempts to install zend-diactoros. On the contrary, it's removed but not installed. z-e-m issues the following sequence of composer commands:

composer remove -q zendframework/zend-expressive-migration
composer remove --dev zendframework/zend-diactoros zendframework/zend-expressive zendframework/zend-expressive-csrf zendframework/zend-expressive-fastroute zendframework/zend-expressive-flash zendframework/zend-expressive-helpers zendframework/zend-expressive-router zendframework/zend-expressive-session-ext zendframework/zend-stratigility zendframework/zend-component-installer zendframework/zend-expressive-tooling zendframework/zend-expressive zendframework/zend-expressive-fastroute zendframework/zend-expressive-helpers zendframework/zend-expressive-csrf zendframework/zend-expressive-flash zendframework/zend-expressive-session-ext zendframework/zend-expressive-tooling --no-interaction
composer remove zendframework/zend-diactoros zendframework/zend-expressive zendframework/zend-expressive-csrf zendframework/zend-expressive-fastroute zendframework/zend-expressive-flash zendframework/zend-expressive-helpers zendframework/zend-expressive-router zendframework/zend-expressive-session-ext zendframework/zend-stratigility zendframework/zend-component-installer zendframework/zend-expressive-tooling zendframework/zend-expressive zendframework/zend-expressive-fastroute zendframework/zend-expressive-helpers zendframework/zend-expressive-csrf zendframework/zend-expressive-flash zendframework/zend-expressive-session-ext zendframework/zend-expressive-tooling --no-interaction
composer update --no-interaction
composer require --dev zendframework/zend-component-installer zendframework/zend-expressive-tooling --no-interaction

So it's removed on line 3, and not installed back by the time line 6 runs, where it fails.

weirdan commented 6 years ago

Ah, I see it's required silently (with direct call to exec() without outputting the command to the screen). Still, it's removed a bit later, as you can see.

weirdan commented 6 years ago

I have a repo where where you can reproduce this: https://github.com/weirdan/z-e-m-dep-bug https://github.com/weirdan/z-e-m-dep-bug/tree/b8324f1182513cdf4356154aabbd32f63a42b5ba - this commit fails https://github.com/weirdan/z-e-m-dep-bug/tree/e1a981ca544cb014340d9aa1d1e81a4eed4ef64d - this commit works fine The only difference is explicitly required zend-diactoros.