It seems I added this --force with the original commit
(I4943ae723b06b0ad808e7c7f20788109e21aa8bf) but I'm not really sure
why. If we have built any siblings their wheels should have higher
version numbers (e.g. like pbr versioning with a "dev" on it).
Thus we shouldn't need to force the wheels to be installed. The
--force here causes a lot of uninstalls that take up quite a bit of
time, especialy under emulation.
Change-Id: I88b824058dc1cee90bfe4c8c4fd43a86472bc478
The pip install -f flag is for find-links which is a list of locations
to look for python packages. What we hvae at this path for extras
installation is a list of packages themselves not locations to find
them. We need to use the -r flag for requirements lists to specify this
instead.
This change should update our zuul and nodepool images to include useful
debugging extras.
Change-Id: I647bb835d0c85c3772e1593866a54cfc5ea1db2f
python-builder is for building docker images. As such, we almost
certainly don't want to be prompted for debconf questions.
Set DEBIAN_FRONTEND=noninteractive so that things like krb5-user
can be installed.
Change-Id: Ieff0555a57e7dbc1b7c4a059b1d0351d016a0c86
Our docker python-base image is a python3 image where python and python3
point to the same version of python which happens to be a 3.x depending
on the specific base image.
One of the things that came up at the PTG is that we'd like to start
identifying where we use python2 in order to port to python3. That is
made a bit more difficult when we use `python` assuming it is `python3`
as we do in our docker images.
Update the images to use `python3` to make this a lot more explicit and
clear that we don't need to port these items.
Change-Id: I54e8f128f0cb8fbbdf54e3748384470262bef3a9
If the extras includes a '#' inside of it, it means that it is
probably followed up with a comment such as license for that package and
it will fail to install because pip will try to use that literal #.
Change-Id: I31c5ffe3dda3ced4b6a412cc955c73321d4af507
This lets you build an image to install a package or set of packages
without having to build a fake pbr install.
Change-Id: I6c171881283b89a14a532f31aedb33e223a0ea1f
We produce lists of extras requirements to install, but installing
them takes an extra step. Allow it to be done all at once by accepting
names of extras on the install-from-bindep command line.
Change-Id: Ie75b9a668569c759f78b70617e311ed6f025039a
We need to run bindep before installing git, because otherwise if
a project needs git in its bindep, it won't show up because it'll
be on the build host.
Split the function in two and call them before and after the git
installation.
Change-Id: I316b1bc643eb9293500b31e676361eec7060701d
In the dependent change, the docker roles will add sibling packages to
the .zuul-siblings directory of the checked-out source.
Refactor the "assemble" script to handle this. Essentially we build
the wheel for "." and then iterate over ZUUL_SIBLINGS subdirectories
(set in a --build-arg by the role in dependent change) to also build
the sibling packages. Note we concatenate the bindep.txt files, so
that we end up with the complete package list required by the main
code and its dependencies.
"install-from-bindep" now installs all the wheels, using --force to
make sure we re-install the speculatively built packages.
This means that a single Dockerfile works under Zuul when
ZUUL_SIBLINGS is set, pointing to Zuul's checkouts; but it also works
stand-alone -- in this case ZUUL_SIBLINGS is empty and we just install
from upstream as usual.
Depends-On: https://review.opendev.org/696987
Change-Id: I4943ae723b06b0ad808e7c7f20788109e21aa8bf
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
This is a builder image intended to make it easy to build
images for projects that use pbr and bindep.
Also, build a python-base image for use with python-builder
pbrx installed dumb-init in a base image and used it as an
entrypoint for the image. This is a good pattern that we should
continue. Make a python-base image that can be used in the FROM
line of consuming final images.
Change-Id: I8da39e680e9c5ca0d8f603a2645e83fc3be87a8b