summaryrefslogtreecommitdiff
path: root/builder/Dockerfile
blob: 44b74134cbd7c987d4cd13fefbc845360e4c5e26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
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 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && useradd -ms /bin/bash user

USER user

RUN git config --global user.email "monero_c@mrcyjanek.net" \
    && git config --global user.name "MoneroC CI"

FROM builder_base AS contrib_simplybs
COPY contrib/depends /w/contrib/depends
RUN cd /w/contrib/depends \
    && make simplybs

FROM contrib_simplybs AS builder_aarch64_linux_android
RUN cd /w/contrib/depends && make HOST=aarch64-linux-android && make sbs-cleanup

FROM contrib_simplybs AS builder_x86_64_linux_android
RUN cd /w/contrib/depends && make HOST=x86_64-linux-android && make sbs-cleanup

FROM contrib_simplybs AS builder_armv7a_linux_androideabi
RUN cd /w/contrib/depends && make HOST=armv7a-linux-androideabi && make sbs-cleanup

FROM contrib_simplybs AS builder_aarch64_linux_gnu
RUN cd /w/contrib/depends && make HOST=aarch64-linux-gnu && make sbs-cleanup

FROM contrib_simplybs AS builder_x86_64_linux_gnu
RUN cd /w/contrib/depends && make HOST=x86_64-linux-gnu && make sbs-cleanup

FROM contrib_simplybs AS builder_x86_64_apple_darwin
RUN cd /w/contrib/depends && make HOST=x86_64-apple-darwin && make sbs-cleanup

FROM contrib_simplybs AS builder_aarch64_apple_darwin
RUN cd /w/contrib/depends && make HOST=aarch64-apple-darwin && make sbs-cleanup

FROM contrib_simplybs AS builder_aarch64_apple_ios
RUN cd /w/contrib/depends && make HOST=aarch64-apple-ios && make sbs-cleanup

FROM contrib_simplybs AS builder_aarch64_apple_ios-simulator
RUN cd /w/contrib/depends && make HOST=aarch64-apple-ios-simulator && make sbs-cleanup

FROM contrib_simplybs AS builder_x86_64-w64-mingw32
RUN cd /w/contrib/depends && make HOST=x86_64-w64-mingw32 && make sbs-cleanup

FROM builder_base AS monero_c_base
COPY . /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_monero_aarch64_linux_android
COPY --from=builder_aarch64_linux_android /w/contrib/depends /w/contrib/depends
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_monero_x86_64_linux_android
COPY --from=builder_x86_64_linux_android /w/contrib/depends /w/contrib/depends
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_monero_armv7a_linux_androideabi
COPY --from=builder_armv7a_linux_androideabi /w/contrib/depends /w/contrib/depends
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_monero_aarch64_linux_gnu
COPY --from=builder_aarch64_linux_gnu /w/contrib/depends /w/contrib/depends
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
RUN ./build_single.sh zano aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup

FROM monero_c_base AS monero_c_monero_x86_64_linux_gnu
COPY --from=builder_x86_64_linux_gnu /w/contrib/depends /w/contrib/depends
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
RUN ./build_single.sh zano x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup

FROM monero_c_base AS monero_c_monero_x86_64_apple_darwin
COPY --from=builder_x86_64_apple_darwin /w/contrib/depends /w/contrib/depends
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
RUN ./build_single.sh zano x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup

FROM monero_c_base AS monero_c_monero_aarch64_apple_darwin
COPY --from=builder_aarch64_apple_darwin /w/contrib/depends /w/contrib/depends
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
RUN ./build_single.sh zano aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup

FROM monero_c_base AS monero_c_monero_aarch64_apple_ios
COPY --from=builder_aarch64_apple_ios /w/contrib/depends /w/contrib/depends
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_monero_aarch64_apple_ios-simulator
COPY --from=builder_aarch64_apple_ios_simulator /w/contrib/depends /w/contrib/depends
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_monero_x86_64-w64-mingw32
COPY --from=builder_x86_64-w64-mingw32 /w/contrib/depends /w/contrib/depends
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
RUN ./build_single.sh zano x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup


FROM scratch AS final
COPY --from=monero_c_monero_aarch64_linux_android /w/release/ release/
COPY --from=monero_c_monero_x86_64_linux_android /w/release/ release/
COPY --from=monero_c_monero_armv7a_linux_androideabi /w/release/ release/
COPY --from=monero_c_monero_aarch64_linux_gnu /w/release/ release/
COPY --from=monero_c_monero_x86_64_linux_gnu /w/release/ release/
COPY --from=monero_c_monero_x86_64_apple_darwin /w/release/ release/
COPY --from=monero_c_monero_aarch64_apple_darwin /w/release/ release/
COPY --from=monero_c_monero_aarch64_apple_ios /w/release/ release/
COPY --from=monero_c_monero_aarch64_apple_ios-simulator /w/release/ release/
COPY --from=monero_c_monero_x86_64-w64-mingw32 /w/release/ release/