Files
OpenShell/deploy/docker/Dockerfile.python-wheels
T

46 lines
1.4 KiB
Docker

ARG PYTHON_VERSION=3.12
FROM --platform=$BUILDPLATFORM python:${PYTHON_VERSION}-slim AS builder
ARG TARGETPLATFORM
ARG NAVIGATOR_VERSION
ENV PATH="/root/.cargo/bin:${PATH}"
ENV SETUPTOOLS_SCM_PRETEND_VERSION=${NAVIGATOR_VERSION}
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
gcc \
gcc-aarch64-linux-gnu \
gcc-x86-64-linux-gnu \
libc6-dev \
libc6-dev-arm64-cross \
libc6-dev-amd64-cross \
pkg-config \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
RUN rustup target add x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu
RUN pip install --no-cache-dir maturin
WORKDIR /build
COPY . .
RUN case "${TARGETPLATFORM}" in \
"linux/amd64") \
export CARGO_BUILD_TARGET="x86_64-unknown-linux-gnu" \
&& export CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER="x86_64-linux-gnu-gcc" ;; \
"linux/arm64") \
export CARGO_BUILD_TARGET="aarch64-unknown-linux-gnu" \
&& export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER="aarch64-linux-gnu-gcc" ;; \
*) \
echo "Unsupported TARGETPLATFORM: ${TARGETPLATFORM}" >&2 \
&& exit 1 ;; \
esac \
&& maturin build --release --target "${CARGO_BUILD_TARGET}" --out /wheels
FROM scratch AS wheels
COPY --from=builder /wheels/*.whl /