# Reproducible Alpine riscv64 root for TinyEMU.
# Stage 1 cross-compiles ultictl (stdlib). Stage 2 only carries the assembler tools.
FROM golang:1.25-alpine AS agent
ENV SOURCE_DATE_EPOCH=1700000000
WORKDIR /src
COPY ultictl-src/ /src/
RUN printf 'module ultictl\ngo 1.25.0\n' > go.mod \
  && CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 \
     go build -trimpath -ldflags='-s -w -buildid=' -o /ultictl .

FROM alpine:3.21
RUN apk add --no-cache e2fsprogs ca-certificates qemu-riscv64
COPY --from=agent /ultictl /opt/ultictl
COPY assemble.sh /assemble.sh
COPY guest/ /guest/
RUN chmod 755 /assemble.sh /guest/init /guest/ulti /guest/udhcpc.script
ENTRYPOINT ["/assemble.sh"]
