wheelie/Dockerfile

90 lines
2.1 KiB
Docker

ARG DISTRO
ARG DISTROVER
ARG ARCH
FROM ghcr.io/linuxserver/baseimage-${DISTRO}:${ARCH}-${DISTROVER} AS builder
ARG DISTRO
ARG DISTROVER
ARG ARCH
ARG PACKAGES
# grpcio build args
ARG GRPC_BUILD_WITH_BORING_SSL_ASM=false
ARG GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=true
ARG GRPC_PYTHON_BUILD_WITH_CYTHON=true
ARG GRPC_PYTHON_DISABLE_LIBC_COMPATIBILITY=true
COPY packages.txt /packages.txt
RUN \
echo "**** Installing dependencies ****" && \
if [ -f /usr/bin/apt ]; then \
echo "**** Detected Ubuntu ****" && \
apt-get update && \
apt-get install --no-install-recommends -y \
cargo \
cmake \
g++ \
git \
libffi-dev \
libglib2.0-dev \
libjpeg-dev \
libssl-dev \
libwebp-dev \
libxml2-dev \
libxslt1-dev \
make \
python3-dev \
python3-pip \
python3-venv \
zlib1g-dev; \
else \
echo "**** Detected Alpine ****" && \
apk add --no-cache --virtual=build-dependencies \
cargo \
cmake \
g++ \
gcc \
geos-dev \
git \
glib-dev \
jpeg-dev \
libffi-dev \
libwebp-dev \
libxml2-dev \
libxslt-dev \
make \
openssl-dev \
py3-pip \
python3-dev \
zlib-dev; \
fi && \
echo "**** Updating pip and building wheels ****" && \
if [ "${DISTRO}" = "alpine" ]; then \
INDEXDISTRO="${DISTRO}-${DISTROVER}"; \
else \
INDEXDISTRO="${DISTRO}"; \
fi && \
python3 -m venv /lsiopy && \
pip install -U pip setuptools wheel cython && \
mkdir -p /build && \
if [ -z "${PACKAGES}" ]; then \
PACKAGES=$(cat /packages.txt); \
fi && \
for PACKAGE in "${PACKAGES}"; do \
if echo "${PACKAGE}" | grep -q numpy; then \
echo "**** Setting numpy build flag ****" && \
BUILD_FLAG='--config-settings=setup-args=-Dallow-noblas=true'; \
fi && \
echo "**** Building ${PACKAGE} ****" && \
pip wheel --wheel-dir=/build --find-links="https://wheel-index.linuxserver.io/${INDEXDISTRO}/" --no-cache-dir -v ${BUILD_FLAG} \
${PACKAGE}; \
done && \
echo "**** Wheels built are: ****" && \
ls /build
FROM scratch AS artifacts
COPY --from=builder /build /build