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

Steven Dake (stdake) stdake at cisco.com
Mon Nov 28 12:00:45 UTC 2016


Tony

A+ on the explanation.

Thanks, dude, you rock!  That solves the exact problem.  I think what we need is an override for upper-constraints.txt in Kolla.

Regards
-steve

-----Original Message-----
From: Tony Breeds <tony at bakeyournoodle.com>
Reply-To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org>
Date: Monday, November 28, 2016 at 2:06 AM
To: "OpenStack Development Mailing List (not for usage questions)" <openstack-dev at lists.openstack.org>
Subject: Re: [openstack-dev] [kolla][release][requirements] providing constraints for transitive dependencies

    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:
        openstack/nova:requirements.txt
        openstack/nova:test-requirements.txt
        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.
    



More information about the OpenStack-dev mailing list