FROM alpine:3.21 AS base ARG TARGETARCH RUN apk update && apk add --no-cache \ git \ cmake \ gcc \ g++ \ make \ linux-headers \ libuv-dev \ zeromq-dev \ curl-dev FROM base AS build ARG P2POOL_VERSION ARG TARGETARCH ARG BUILDPLATFORM ARG TARGETPLATFORM RUN git clone --recursive https://github.com/SChernykh/p2pool /src/p2pool WORKDIR /src/p2pool RUN git checkout ${P2POOL_VERSION} # Determine parallel jobs based on cross-compilation and architecture RUN mkdir build && cd build && \ if [ "$BUILDPLATFORM" != "$TARGETPLATFORM" ]; then \ MAKE_JOBS="-j2"; \ elif [ "$TARGETARCH" = "amd64" ]; then \ MAKE_JOBS="-j$(($(nproc) / 2))"; \ else \ MAKE_JOBS="-j$(nproc)"; \ fi && \ echo "Building with parallel jobs: $MAKE_JOBS (arch: $TARGETARCH, cross-compile: $([ "$BUILDPLATFORM" != "$TARGETPLATFORM" ] && echo yes || echo no))" && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DWITH_MERGE_MINING_DONATION=OFF && \ make $MAKE_JOBS FROM scratch ARG TARGETARCH COPY --from=build /src/p2pool/build/p2pool /linux_${TARGETARCH}/p2pool