FROM alpine:3.18 as rust-builder
RUN apk add wget
ARG TARGETPLATFORM
RUN case "${TARGETPLATFORM}" in \
"linux/amd64") \
echo 'export RUST_TARGET="x86_64-unknown-linux-musl"' > ./.env ;; \
"linux/arm64") \
echo 'export RUST_TARGET="aarch64-unknown-linux-musl"' > ./.env ;; \
*) \
exit 239 ;; \
esac
RUN source ./.env && \
wget https://static.rust-lang.org/rustup/dist/${RUST_TARGET}/rustup-init && \
chmod +x rustup-init && \
./rustup-init -y --default-toolchain=1.63.0 --default-host=${RUST_TARGET}
ENV PATH=/root/.cargo/bin:$PATH
RUN apk add make gcc musl-dev
RUN source ./.env && \
wget https://github.com/libunwind/libunwind/releases/download/v1.6.2/libunwind-1.6.2.tar.gz && \
tar -zxvf libunwind-1.6.2.tar.gz && \
cd libunwind-1.6.2 && \
./configure --disable-minidebuginfo --enable-ptrace --disable-tests --disable-documentation --prefix=/usr/local/musl/${RUST_TARGET} && \
make -j16 && \
make install
RUN source ./.env && \
wget https://zlib.net/zlib-1.2.13.tar.gz && \
tar -zxvf zlib-1.2.13.tar.gz && \
cd zlib-1.2.13 && \
./configure --prefix=/usr/local/musl/${RUST_TARGET} && \
make -j16 && \
make install