2025-10-01 16:45:04 -07:00
|
|
|
# syntax=docker/dockerfile:1.7-labs
|
|
|
|
|
ARG RUST_PROFILE=release
|
|
|
|
|
ARG RUST_TARGET_SUBDIR=release
|
|
|
|
|
|
2025-12-08 10:33:36 +00:00
|
|
|
FROM --platform=$BUILDPLATFORM rust:1.91.1-alpine@sha256:8efbfb788786eeb127adc581394349c5fb567712156e0f8c2e499acadbc23756 AS build
|
2025-10-01 16:45:04 -07:00
|
|
|
RUN apk --no-cache add musl-dev busybox-static
|
|
|
|
|
ARG RUST_PROFILE
|
|
|
|
|
RUN adduser -S -s /bin/sh build
|
|
|
|
|
COPY \
|
|
|
|
|
--exclude=rust-toolchain.toml \
|
2025-10-14 16:21:56 -07:00
|
|
|
--exclude=hack \
|
2025-10-01 16:45:04 -07:00
|
|
|
--chown=build:build \
|
|
|
|
|
. /build
|
|
|
|
|
WORKDIR /build
|
|
|
|
|
ARG TARGETPLATFORM
|
|
|
|
|
ARG RUST_TARGET_SUBDIR
|
|
|
|
|
RUN if [ "${TARGETPLATFORM}" = "linux/amd64" ] || [ "${TARGETPLATFORM}" = "linux/x86_64" ]; then \
|
|
|
|
|
rustup target add x86_64-unknown-uefi; cargo build --bin sprout --profile "${RUST_PROFILE}" --target x86_64-unknown-uefi && \
|
|
|
|
|
cp "target/x86_64-unknown-uefi/${RUST_TARGET_SUBDIR}/sprout.efi" /sprout.efi; fi
|
|
|
|
|
RUN if [ "${TARGETPLATFORM}" = "linux/arm64" ] || [ "${TARGETPLATFORM}" = "linux/aarch64" ]; then \
|
|
|
|
|
rustup target add aarch64-unknown-uefi; cargo build --bin sprout --profile "${RUST_PROFILE}" --target aarch64-unknown-uefi && \
|
|
|
|
|
cp "target/aarch64-unknown-uefi/${RUST_TARGET_SUBDIR}/sprout.efi" /sprout.efi; fi
|
|
|
|
|
|
|
|
|
|
FROM scratch AS final
|
|
|
|
|
COPY --from=build /sprout.efi /sprout.efi
|