[openstack-dev] [kolla][release][requirements] providing constraints for transitive dependencies

Tony Breeds tony at bakeyournoodle.com
Mon Nov 28 09:06:16 UTC 2016

On Mon, Nov 28, 2016 at 08:15:17AM +0000, Steven Dake (stdake) wrote:
> Tony,
> Are you indicating that all transitive dependencies (e.g. nova depends on x
> depends on y, y = version of dep we want to specify) are in
> global-requirements.txt?

So in order to reduce confusion I'll try to explain this in a little more
detail but the TL;DR is:

No only nova's direct requirements are in global-requirements.txt.  *all*
requirements are in upper-constraints.txt.

Now the longer version:

 * nova requires oslo.messaging, which is listed in openstack/nova:requirements.txt.
 * openstack/nova:requirements.txt is regularly updated by the proposal-bot with
   the relevant parts of global-requirements.txt
 * the nova project runs the 'check-requirements' jobs ensuring that
   everything in:
    and relevant parts of openstack/nova:setup.cfg
   are listed in global-requirements.
 * As oslo.messaging is an OpenStack project it's bound by the same rules above
 * However any non-OpenStack libraries used by either nova or oslo.messaging
   are not in global-requirements.txt.  There is a nightly job that installs
   all of global-requirements.txt (and dependencies) and tracks the exact
   version of each library in a file ... upper-constraints.txt

So anything you need to install to use any part of OpenStack[1] will be listed
in upper-constraints.txt.

So if you really need to install version $x of library $foo you can edit
upper-constraints.txt to state that.

There are a couple of gotchas.  I recommend you use edit-constraints from
openstack-requirements (on pypi) to actually edit the constraints files.  Also if
you're doing anything "too funky" you're probably best actually editing a
requirements and then using generate-constraints to actually generate the
constraints file.  That's time/network expensive but will result in a valid set
where editing the constraints file at will could result in an
incompatible and thus uninstallable system.

I really hope that helps and hasn't just confused the situation.

Yours Tony.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20161128/6d48551d/attachment.pgp>

More information about the OpenStack-dev mailing list