Search code examples
firebasegoogle-cloud-platformgoogle-cloud-firestorecomposer-php

Can not update google/cloud-firestore [composer]


Now, I am using google/cloud-firestore ^0.8.1 and I want to update this library to latest version (0.14.0). My composer.json now looks like:

"require": {
"grpc/grpc": "^1.10",
"google/protobuf": "^3.5",
"google/gax": "^0.31.3",
"google/cloud-firestore": "^0.8.1",
"firebase/php-jwt": "^5.0",
}

When I try to update firestore library with php composer.phar require google/cloud-firestore , I got:

Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for google/cloud-firestore ^0.14.0 -> satisfiable by google/cloud-firestore[v0.14.0].
    - google/cloud-firestore v0.14.0 requires google/gax ^0.37 -> satisfiable by google/gax[0.37.0] but these conflict with your requirements or minimum-stability.


Installation failed, reverting ./composer.json to its original content.

After that, I tried with php composer.phar require google/gax and got:

Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - google/cloud-firestore v0.8.1 requires google/gax ^0.31.1 -> satisfiable by google/gax[0.31.x-dev].
    - google/cloud-firestore v0.8.1 requires google/gax ^0.31.1 -> satisfiable by google/gax[0.31.x-dev].
    - google/cloud-firestore v0.8.1 requires google/gax ^0.31.1 -> satisfiable by google/gax[0.31.x-dev].
    - Can only install one of: google/gax[0.37.0, 0.31.x-dev].
    - Installation request for google/gax ^0.37 -> satisfiable by google/gax[0.37.0].
    - Installation request for google/cloud-firestore ^0.8.1 -> satisfiable by google/cloud-firestore[v0.8.1].


Installation failed, reverting ./composer.json to its original content.

I added "minimum-stability": "dev" to composer.json but that didn't resolve problem. How to properly update these libraries and fix dependencies between them?


Solution

  • The semantic versioning operator (^) behaves slightly different with pre-1.0 releases (see https://getcomposer.org/doc/articles/versions.md#caret-version-range-):

    For pre-1.0 versions it also acts with safety in mind and treats ^0.3 as ?>=0.3.0 <0.4.0.

    This means that you will have to update both packages like this:

    composer require google/cloud-firestore:^0.14 google/gax:^0.37