mirror of
https://github.com/NVIDIA/OpenShell.git
synced 2026-10-19 05:50:41 +08:00
46 lines
1.4 KiB
Docker
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 /
|