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.
All the tools require openstack_requirements to be installed (e.g. in a Python virtualenv). They all have help, which is the authoritative documentation.
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.
Compile a constraints file showing the versions resulting from installing all
generate-constraints -p /usr/bin/python2.7 -p /usr/bin/python3 \ -b blacklist.txt -r global-requirements.txt > new-constraints.txt
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"
Look at the Review Guidelines and make sure your change meets them.
All changes to
global-requirements.txt may dramatically alter the contents
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
currenty requires adjusting the
lower-constraints.txt file alongside with the
new constrainted coinstallable version of minimums.
Regenerating involves five steps.
Install the dependencies needed to compile various Python packages:
sudo apt-get install $(bindep -b)
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
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
diff -p baseline updated
Apply the patch to
upper-constraints.txt. This may require some fiddling.
edit-constraintcan do this for you when the change does not involve multiple lines for one package.