FROM alpine:3.23 AS base

FROM base AS builder
RUN --mount=type=cache,target=/var/cache/apk apk update
RUN --mount=type=cache,target=/var/cache/apk apk add \
	abuild \
  build-base \
	boost-dev \
	cmake \
  cppzmq \
  hidapi-dev \
  libsodium-dev \
  miniupnpc-dev \
  openssl-dev \
  rapidjson-dev \
  readline-dev \
  samurai \
  unbound-dev \
  zeromq-dev

RUN adduser -D -G abuild luser
USER luser
WORKDIR /home/luser

ADD --chown=luser:luser ./APKBUILD .
ADD --chown=luser:luser ./easylogging.patch .
ADD --chown=luser:luser ./gcc13.patch .
ADD --chown=luser:luser ./system-miniupnpc.patch .
ADD --chown=luser:luser ./version-string.patch .
ADD --chown=luser:luser ./loongarch64.patch .
ADD --chown=luser:luser ./miniupnpc.patch .
RUN abuild-keygen -a -n
USER root
RUN cp /home/luser/.abuild/*.pub /etc/apk/keys/
USER luser
RUN abuild


FROM base AS release
RUN adduser -D -h /var/lib/monero monero
RUN --mount=type=bind,from=builder,source=/home/luser/.abuild,target=/.abuild cp /.abuild/*.pub /etc/apk/keys
RUN --mount=type=bind,from=builder,source=/home/luser/packages,target=/packages apk add /packages/*/*/*.apk
USER monero
WORKDIR /var/lib/monero
ENTRYPOINT /usr/bin/monerod

