ARG IMAGE_VERSION FROM docker.io/rockdrilla/angie-conv:${IMAGE_VERSION}-base AS base ## --- FROM base AS setup SHELL [ "/bin/sh", "-ec" ] COPY /scripts/* /usr/local/sbin/ COPY /extra-scripts/* /usr/local/sbin/ ADD https://angie.software/keys/angie-signing.gpg /tmp/angie.gpg.bin COPY /apt/sources.angie /etc/apt/sources.list.d/angie.txt RUN pkg='gnupg' ; \ apt-install.sh ${pkg} ; \ ## process Angie GPG keyring / APT sources gpg-export.sh /tmp/angie.gpg.bin /etc/apt/keyrings/angie.gpg.asc ; \ rm -f /tmp/angie.gpg.bin ; \ env -C /etc/apt/sources.list.d mv angie.txt angie.sources ; \ ## verify sources! apt-env.sh apt-get update ; \ apt-remove.sh ${pkg} ; \ apt-clean.sh ENV INSTALL_WHEELS='jinja2 netaddr psutil pyyaml wcmatch' ENV DEV_PACKAGES='libyaml-dev' # markupsafe, psutil ENV CIBUILDWHEEL=1 # pyyaml ENV PYYAML_FORCE_CYTHON=1 RUN w=$(mktemp -d) ; : "${w:?}" ; \ { apt-mark showauto ; apt-mark showmanual ; } | sort -uV > "$w/t0" ; \ printf '%s\n' ${DEV_PACKAGES} | sort -uV > "$w/t1" ; \ apt-install.sh ${DEV_PACKAGES} ; \ { apt-mark showauto ; apt-mark showmanual ; } | sort -uV > "$w/t2" ; \ set +e ; \ grep -Fxv -f "$w/t0" "$w/t2" > "$w/t3" ; \ grep -Fxv -f "$w/t1" "$w/t3" > "$w/t4" ; \ grep -Ev -e '-(dev|doc)$' "$w/t4" > "${PYTHON_SITE_PACKAGES}/apt-deps.txt" ; \ set -e ; \ rm -rf "$w/" ; unset w ; \ apt-install.sh build-essential ; \ pip-env.sh pip install 'cython' ; \ pip-env.sh pip install --no-binary :all: ${INSTALL_WHEELS} ; \ pip-env.sh pip uninstall -y 'cython' ; \ python-rm-cache.sh "${PYTHON_SITE_PACKAGES}" ; \ rm -rf \ "${PYTHON_SITE_PACKAGES}/netaddr/tests" \ "${PYTHON_SITE_PACKAGES}/psutil/tests" \ ; \ find "${PYTHON_SITE_PACKAGES}/" -type f -name '*.so*' -exec ls -l {} + ; \ echo ; \ find "${PYTHON_SITE_PACKAGES}/" -type f -name '*.so*' -printf '%p\0' \ | sed -zE '/rust/d' \ | xargs -0r strip --verbose --strip-debug ; \ echo ; \ find "${PYTHON_SITE_PACKAGES}/" -type f -name '*.so*' -exec ls -l {} + ; \ apt-remove.sh build-essential ; \ apt-clean.sh ## --- FROM base AS deps SHELL [ "/bin/sh", "-ec" ] COPY /Dockerfile.deps /usr/local/share/ COPY --from=setup /etc/apt/keyrings/angie.gpg.asc /etc/apt/keyrings/ COPY --from=setup /etc/apt/sources.list.d/angie.sources /etc/apt/sources.list.d/ ## Python: site-packages COPY --from=setup /usr/local/bin/ /usr/local/bin/ COPY --from=setup /${PYTHON_SITE_PACKAGES}/ /${PYTHON_SITE_PACKAGES}/ COPY /scripts/* /usr/local/sbin/ ## install missing dependencies for Python site-packages RUN f="${PYTHON_SITE_PACKAGES}/apt-deps.txt" ; \ [ -s "$f" ] || exit 0 ; \ xargs -a "$f" apt-install.sh ; \ apt-clean.sh ## common deps RUN apt-install.sh \ brotli \ curl \ dumb-init \ gettext-base \ jq \ netbase \ netcat-openbsd \ openssl \ procps \ psmisc \ zstd \ ; \ apt-clean.sh RUN find /usr/local/sbin/ ! -type d -ls -delete