diff --git a/docker/uwsgi-base/Dockerfile b/docker/uwsgi-base/Dockerfile index 8d61969f6e..a31e6a55d2 100644 --- a/docker/uwsgi-base/Dockerfile +++ b/docker/uwsgi-base/Dockerfile @@ -14,12 +14,27 @@ # limitations under the License. ARG PYTHON_VERSION=3.7 -FROM docker.io/opendevorg/python-builder:${PYTHON_VERSION} as builder +ARG DEBIAN_VERSION=buster +FROM docker.io/opendevorg/python-builder:${PYTHON_VERSION}-${DEBIAN_VERSION} as builder + +ARG PYTHON_VERSION COPY . /tmp/src -RUN assemble uWSGI +# We set pip verbosity because this seems to make the uWSGI wheel builds +# more reliable on bullseye. Is it crazy to rely on this? Absolutely. But +# uWSGI's build system is a ball of fun. There is an upstream pull request +# that appears to be fixing this issue: +# https://github.com/unbit/uwsgi/pull/2362 +# jrosser also indicates this can be fixed by not overriding function names: +# https://paste.opendev.org/show/811669/ +# Until a fix lands use this verbosity flag to work around it. +# +# Older python bundles older pip and doesn't understand non binary +# verbosity values. We explicitly invoke bash here to get access to [[ +# in order to check the version against a pattern. test doesn't cut it. +RUN /bin/bash -c "if [[ $PYTHON_VERSION == 3.7* ]] ; then exit 0 ; else exit 1 ; fi" && PIP_VERBOSE=1 assemble uWSGI || PIP_VERBOSE=3 assemble uWSGI -FROM docker.io/opendevorg/python-base:${PYTHON_VERSION} +FROM docker.io/opendevorg/python-base:${PYTHON_VERSION}-${DEBIAN_VERSION} COPY --from=builder /output/ /output RUN /output/install-from-bindep && \ diff --git a/docker/uwsgi-base/bindep.txt b/docker/uwsgi-base/bindep.txt index 670f7d05a7..ba01cbbda5 100644 --- a/docker/uwsgi-base/bindep.txt +++ b/docker/uwsgi-base/bindep.txt @@ -1,5 +1,6 @@ gcc [compile] libc6-dev [compile] libffi-dev [compile platform:dpkg] -libffi6 [platform:dpkg] +libffi7 [platform:dpkg !platform:ubuntu-bionic !platform:debian-buster] +libffi6 [platform:ubuntu-bionic platform:debian-buster] libssl-dev [compile platform:dpkg]