From d3c6bbc7af83ec064e08717fe90c151ad6b3941c Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Mon, 21 Jan 2019 20:50:43 +0000 Subject: [PATCH] Install python requirements directly There are cases when an issue has been fixed upstream in a dependency but not yet released and it is desirable to install that version in a built image. pbr does not support such urls in requirements files because releasing software that depends on unreleased software is quite dangerous. Update assemble and install-from-bindep to install -r requirements.txt before installing the actual software so that image builds with such requirements lines will work. Change-Id: Ie17a66bdc4ea0609ce4e66051f659cbd829fdd5d --- docker/python-builder/scripts/assemble | 9 ++++++++- docker/python-builder/scripts/install-from-bindep | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docker/python-builder/scripts/assemble b/docker/python-builder/scripts/assemble index 16da554b10..3d0131605b 100755 --- a/docker/python-builder/scripts/assemble +++ b/docker/python-builder/scripts/assemble @@ -59,7 +59,14 @@ python -m venv /tmp/venv /tmp/venv/bin/pip install -U pip wheel # Install everything so that the wheel cache is populated -# with transitive depends. +# with transitive depends. If a requirements.txt file exists, +# install it directly so that people can use git url syntax +# to do things like pick up patched but unreleased versions +# of dependencies. +if [ -f /tmp/src/requirements.txt ] ; then + /tmp/venv/bin/pip install --cache-dir=/output/wheels -r /tmp/src/requirements.txt + cp /tmp/src/requirements.txt /output/requirements.txt +fi /tmp/venv/bin/pip install --cache-dir=/output/wheels /output/wheels/*whl # Install each of the extras so that we collect all possibly diff --git a/docker/python-builder/scripts/install-from-bindep b/docker/python-builder/scripts/install-from-bindep index 609a666bb2..4733ac9e31 100755 --- a/docker/python-builder/scripts/install-from-bindep +++ b/docker/python-builder/scripts/install-from-bindep @@ -18,6 +18,13 @@ set -e apt-get update apt-get -y install $(cat /output/bindep/run.txt) +# If a requirements.txt file exists, +# install it directly so that people can use git url syntax +# to do things like pick up patched but unreleased versions +# of dependencies. +if [ -f /output/requirements.txt ] ; then + pip install --cache-dir=/output/wheels -r /output/requirements.txt +fi pip install --cache-dir=/output/wheels /output/wheels/*.whl # clean up after ourselves