Global requirements for OpenStack
Python Shell
Clone or download
Permalink
Failed to load latest commit information.
.zuul.d trigger requirements-check if the lower-constraints.txt file changes Mar 29, 2018
babel-test Babel Integration tests Apr 24, 2016
doc/source Fix bug URL for report a bug link Aug 27, 2017
openstack_requirements make requirements check job check for minimum version definitions. Jun 11, 2018
playbooks skip virtualenv setup when there is already a virtualenv Apr 11, 2018
tools Fix typo in fix-lower-constraints.py Jun 7, 2018
.gitignore add stestr directory to gitignore May 29, 2018
.gitreview Added .gitreview Aug 6, 2012
.stestr.conf Move requirements to the PTI May 21, 2018
MANIFEST.in Make openstack.requirements installable. Jul 5, 2013
README.rst remove readme content that moved to project-team-guide Apr 12, 2018
bindep.txt Update bindep.txt for ubuntu-bionic Mar 7, 2018
blacklist.txt Allow Pygments in openstack/requirements May 17, 2018
detail.py Trivial: Update pypi url to new url Apr 21, 2018
global-requirements.txt Exclude dulwich 0.19.3 from global requirements Jun 21, 2018
lower-constraints-xfails.txt remove mitmproxy Mar 22, 2018
lower-constraints.txt Update lower constraints for heat-translator 1.1.0 Jun 21, 2018
projects.txt Merge "Add metalsmith to projects.txt" Jun 6, 2018
requirements.txt Updated from global requirements Mar 4, 2018
setup.cfg Update and replace http with https for doc links Jul 22, 2017
setup.py Updated from global requirements Mar 2, 2017
test-requirements.txt Move requirements to the PTI May 21, 2018
tox.ini Move requirements to the PTI May 21, 2018
update.py Move commands into cmds subdir. Jun 29, 2015
upper-constraints-xfails.txt remove mitmproxy Mar 22, 2018
upper-constraints.txt Rollback dulwich to 0.19.2 Jun 21, 2018

README.rst

Global Requirements for OpenStack Projects

Why Global Requirements?

Refer to the Dependency Management section of the Project Team Guide for information about the history of the project and the files involved.

Tools

All the tools require openstack_requirements to be installed (e.g. in a Python virtualenv). They all have help, which is the authoritative documentation.

update-requirements

This will update the requirements in a project from the global requirements file found in .. Alternatively, pass --source to use a different global requirements file:

update-requirements --source /opt/stack/requirements /opt/stack/nova

Entries in all requirements files will have their versions updated to match the entries listed in the global requirements. Excess entries will cause errors in hard mode (the default) or be ignored in soft mode.

generate-constraints

Compile a constraints file showing the versions resulting from installing all of global-requirements.txt:

generate-constraints -p /usr/bin/python2.7 -p /usr/bin/python3 \
  -b blacklist.txt -r global-requirements.txt > new-constraints.txt

edit-constraints

Replace all references to a package in a constraints file with a new specification. Used by DevStack to enable git installations of libraries that are normally constrained:

edit-constraints oslo.db "-e file://opt/stack/oslo.db#egg=oslo.db"

Proposing changes

Look at the Review Guidelines and make sure your change meets them.

All changes to global-requirements.txt may dramatically alter the contents of upper-constraints.txt due to adding or removing transitive dependencies. As such you should always generate a diff against the current merged constraints, otherwise your change may fail if it is incompatible with the current tested constraints.

A change to the minimum specified vesion of a library in global-requirements.txt currenty requires adjusting the lower-constraints.txt file alongside with the new constrainted coinstallable version of minimums.

Regenerating involves five steps.

  1. Install the dependencies needed to compile various Python packages:

    sudo apt-get install $(bindep -b)
    
  2. Create a reference file (do this without your patch applied):

    generate-constraints -p /usr/bin/python2.7 -p /usr/bin/python3 \
      -b blacklist.txt -r global-requirements.txt > baseline
    
  3. Apply your patch and generate a new reference file:

    generate-constraints -p /usr/bin/python2.7 -p /usr/bin/python3 \
      -b blacklist.txt -r global-requirements.txt > updated
    
  4. Diff them:

    diff -p baseline updated
    
  5. Apply the patch to upper-constraints.txt. This may require some fiddling. edit-constraint can do this for you when the change does not involve multiple lines for one package.

Resources