summaryrefslogtreecommitdiff
path: root/builder/Dockerfile
diff options
context:
space:
mode:
authorcyan <cyjan@mrcyjanek.net>2026-03-09 18:05:16 +0100
committerGitHub <noreply@github.com>2026-03-09 18:05:16 +0100
commit2c11591e02b907e63d8fd4fcb0a6559625934a95 (patch)
treedab95d36703f314a8ee9d6277a160df16833c4e5 /builder/Dockerfile
parent411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29 (diff)
reproducibility (#177)
* reproducibility * wip: ci fixes, drop generate_translations_header.c * minor fixes * fix patch * fix: toolchain * bump hash * fix: minor build issue fixes * fix: x86_64-w64-mingw32 * wip * wip * all updated :o * fix: reduce git size * update checksum remove CI * chore, more optimal dockerfile * update monero to v0.18.4.6 * update checksum * update * minor patch update * fix: no command specified * fix: correct path * alpine * stupid. * AAWASTREYDRFUGTIHYJHGUTYFRDTFYVGUBHINJHGTYFRDSRTXDTCFHBJ
Diffstat (limited to 'builder/Dockerfile')
-rw-r--r--builder/Dockerfile122
1 files changed, 122 insertions, 0 deletions
diff --git a/builder/Dockerfile b/builder/Dockerfile
new file mode 100644
index 0000000..a0b954a
--- /dev/null
+++ b/builder/Dockerfile
@@ -0,0 +1,122 @@
+FROM --platform=linux/amd64 golang:1.26.0-bookworm AS builder_base
+
+WORKDIR /w
+RUN apt update \
+ && apt install -y git clang llvm gcc g++ sudo \
+ && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
+ && apt-get clean \
+ && rm -rf /var/lib/apt/lists/* \
+ && useradd -ms /bin/bash user \
+ && adduser user sudo \
+ && chown user:user /w \
+ && chmod 775 /w
+
+USER user
+
+RUN git config --global user.email "monero_c@mrcyjanek.net" \
+ && git config --global user.name "MoneroC CI" \
+ && git config --global --add safe.directory '*'
+
+FROM builder_base AS contrib_simplybs
+COPY contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w \
+ && cd /w/contrib/depends \
+ && make simplybs
+WORKDIR /w/contrib/depends
+
+RUN make HOST=aarch64-linux-android && make HOST=aarch64-linux-android BOOST_VERSION=1_83_0 && make sbs-cleanup
+RUN make HOST=x86_64-linux-android && make HOST=x86_64-linux-android BOOST_VERSION=1_83_0 && make sbs-cleanup
+RUN make HOST=armv7a-linux-androideabi && make HOST=armv7a-linux-androideabi BOOST_VERSION=1_83_0 && make sbs-cleanup
+RUN make HOST=x86_64-w64-mingw32 && make sbs-cleanup
+RUN make HOST=aarch64-linux-gnu && make sbs-cleanup
+RUN make HOST=x86_64-linux-gnu && make sbs-cleanup
+RUN make HOST=x86_64-apple-darwin && make sbs-cleanup
+RUN make HOST=aarch64-apple-darwin && make sbs-cleanup
+RUN make HOST=aarch64-apple-ios && make HOST=aarch64-apple-ios BOOST_VERSION=1_83_0 && make sbs-cleanup
+RUN make HOST=aarch64-apple-ios-simulator && make HOST=aarch64-apple-ios-simulator BOOST_VERSION=1_83_0 && make sbs-cleanup
+
+FROM builder_base AS monero_c_base
+COPY . /w
+RUN sudo chown -R user:user /w
+RUN git submodule update --init --force --recursive \
+ && ./apply_patches.sh monero \
+ && ./apply_patches.sh wownero \
+ && ./apply_patches.sh zano
+
+FROM monero_c_base AS monero_c_aarch64_linux_android
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh zano aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_x86_64_linux_android
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh zano x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_armv7a_linux_androideabi
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh zano armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_aarch64_linux_gnu
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_x86_64_linux_gnu
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_x86_64_apple_darwin
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_aarch64_apple_darwin
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_aarch64_apple_ios
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh zano aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_aarch64_apple_ios-simulator
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh zano aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+FROM monero_c_base AS monero_c_x86_64-w64-mingw32
+COPY --from=contrib_simplybs /w/contrib/depends /w/contrib/depends
+RUN sudo chown -R user:user /w
+RUN ./build_single.sh monero x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup
+RUN ./build_single.sh wownero x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup
+
+
+FROM alpine AS final
+COPY --from=monero_c_aarch64_linux_android /w/release/ release/
+COPY --from=monero_c_x86_64_linux_android /w/release/ release/
+COPY --from=monero_c_armv7a_linux_androideabi /w/release/ release/
+COPY --from=monero_c_aarch64_linux_gnu /w/release/ release/
+COPY --from=monero_c_x86_64_linux_gnu /w/release/ release/
+COPY --from=monero_c_x86_64_apple_darwin /w/release/ release/
+COPY --from=monero_c_aarch64_apple_darwin /w/release/ release/
+COPY --from=monero_c_aarch64_apple_ios /w/release/ release/
+COPY --from=monero_c_aarch64_apple_ios-simulator /w/release/ release/
+COPY --from=monero_c_x86_64-w64-mingw32 /w/release/ release/