101 lines
3.0 KiB
Docker
101 lines
3.0 KiB
Docker
|
FROM docker.io/rockdrilla/angie-conv:v0.0.1-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
|