diff options
| author | cyan <cyjan@mrcyjanek.net> | 2026-03-09 18:05:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-09 18:05:16 +0100 |
| commit | 2c11591e02b907e63d8fd4fcb0a6559625934a95 (patch) | |
| tree | dab95d36703f314a8ee9d6277a160df16833c4e5 /builder | |
| parent | 411e8a1cdb3f4c2812d83f28c335d2a4eb18bd29 (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')
| -rw-r--r-- | builder/Dockerfile | 122 | ||||
| -rwxr-xr-x | builder/release.sh | 13 |
2 files changed, 135 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/ diff --git a/builder/release.sh b/builder/release.sh new file mode 100755 index 0000000..1bf2ebe --- /dev/null +++ b/builder/release.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -xe + +cd $(dirname $0) +cd .. +img=localhost/monero_c:$(git describe --tags) + +docker build -t $img -f ./builder/Dockerfile . + +docker create --name temp_extract $img /bin/sh -c 'sleep 3000' + +docker cp temp_extract:/release ./release/$(git describe --tags) +docker rm temp_extract || true |
