From 6647e3656e3b097096f081023e4708645c8a2a3c Mon Sep 17 00:00:00 2001 From: Mark McLoughlin Date: Tue, 2 Jul 2013 12:25:58 +0100 Subject: [PATCH] Fix issue with pip installing oslo.config-1.2.0 Fixes bug #1194807 Firstly, we update the oslo.config dep to 1.2.0a3 because of the issue with namespace packages (bug #1194742). But the main issue here is that if you currently do: $> pip install -r quantum/requirements.txt then you end up with the oslo.config 1.1.1 code installed. This is because oslo.config>=1.1.0 gets pulled in as a transitive dep and pip gets confused. You can reproduce with e.g. $> pip install \ http://.../oslo.config-1.2.0a3.tar.gz#egg=oslo.config-1.2.0a3 \ python-keystoneclient $> pip freeze | grep oslo.config oslo.config-1.2.0a3 $> python -c 'from oslo.config.cfg import DeprecatedOpt' Traceback (most recent call last): File "", line 1, in ImportError: cannot import name DeprecatedOpt This is because of a bug with pip where it sees oslo.config-1.2.0a3 and oslo.config as two unrelated things. It should strip the version part of the egg= fragment before using it as a package name, but it doesn't. However, we can simply use the -f/--find-links pip option in our requirements.txt to add the tarball URL to the list of URLs considered and also add the oslo.config>=1.2.0a3 dependency: $> pip install \ -f http://.../oslo.config-1.2.0a3.tar.gz#egg=oslo.config-1.2.0a3 \ 'oslo.config>=1.2.0a3' \ python-keystoneclient $> pip freeze | grep oslo.config oslo.config-1.2.0a3 $> python -c 'from oslo.config.cfg import DeprecatedOpt' This is actually exactly the semantics we want and we go to great lengths in pbr to get these semantics while using a single tarball URL. The only downside to this --find-links strategy is that we gain an extra line in our requirements.txt ... but it does work around the pip bug. Change-Id: I6f3eb5fd2c75615d9a1cae172aed859b36b27d4c --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0d91e31fa..417c2a5ac 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,10 +18,12 @@ sqlalchemy>=0.7.8,<=0.7.99 WebOb>=1.2 python-keystoneclient>=0.2.0 alembic>=0.4.1 -http://tarballs.openstack.org/oslo.config/oslo.config-1.2.0a2.tar.gz#egg=oslo.config-1.2.0a2 six stevedore>=0.9 +-f http://tarballs.openstack.org/oslo.config/oslo.config-1.2.0a3.tar.gz#egg=oslo.config-1.2.0a3 +oslo.config>=1.2.0a3 + # Cisco plugin dependencies python-novaclient # End Cisco dependencies