[infra][magnum][ci] Issues installing bashate and coverage

Jeremy Stanley fungi at yuggoth.org
Tue Dec 8 17:12:48 UTC 2020

On 2020-12-08 13:36:09 +0100 (+0100), Spyros Trigazis wrote:
> openstack-tox-lower-constraints fails for bashate and coverage.
> (Maybe more, I bumped bashate and it failed for coverage. I don;t
> want to waste more resources on our CI)
> eg https://review.opendev.org/c/openstack/magnum/+/765881
> https://review.opendev.org/c/openstack/magnum/+/765979
> Do we miss something?

Pip 20.3.0, released 8 days ago, turned on a new and much more
thorough dependency resolver. Earlier versions of pip did not try
particularly hard to make sure the dependencies claimed by packages
were all satisfied. Virtualenv 20.2.2 released yesterday and
increased the version of pip it's vendoring to a version which uses
the new solver as well. These changes mean that latent version
conflicts are now being correctly identified as bugs, and these jobs
will do a far better job of actually confirming the declared
versions of dependencies are able to be tested.

One thing which looks really weird and completely contradictory to
me is that your lower-constraints job on change 765881 is applying
both upper and lower constraints lists to the pip install command.
Maybe the lower constraints list is expected to override the earlier
upper constraints, but is that really going to represent a
compatible set? That aside, trying to reproduce locally I run into
yet a third error:

    Could not find a version that satisfies the requirement
        warlock!=1.3.0,<2,>=1.0.1 (from python-glanceclient)

And indeed, python-glanceclient insists warlock 1.3.0 should be
skipped, while magnum's lower-constraints.txt says you must install
warlock==1.3.0 so that's a clear contradiction as well.

My recommendation is to work on reproducing this locally first and
play a bit of whack-a-mole with the entries in your
lower-constraints.txt to find versions of things which will actually
be coinstallable with current versions of pip. You don't need to run
the full tox testenv, just try installing your constrainted deps
into a venv with upgraded pip like so:

    python3.8 -m venv foo
    foo/bin/pip install -U pip
    foo/bin/pip install -c lower-constraints.txt \
        -r test-requirements.txt -r requirements.txt

You'll also likely want to delete and recreate the venv each time
you try, since pip will now also try to take the requirements of
already installed packages into account, and that might further
change the behavior you see. Hope that helps!
Jeremy Stanley
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20201208/04d4b817/attachment.sig>

More information about the openstack-discuss mailing list