-
Notifications
You must be signed in to change notification settings - Fork 0
/
ubuntu.Dockerfile
385 lines (323 loc) · 10.1 KB
/
ubuntu.Dockerfile
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
ARG OS_RELEASE_VERSION=${OS_RELEASE_VERSION}
FROM ubuntu:${OS_RELEASE_VERSION} AS ubuntu
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /sources
COPY ubuntu \
/sources/
RUN bash install-host-packages
ARG PACKAGE_ARCHIVE_CLASS
ARG PACKAGE_BASE_NAME
ARG PACKAGE_ROOT
ARG VAL_VERDE_GH_TEAM
ENV PACKAGE_ARCHIVE_CLASS=${PACKAGE_ARCHIVE_CLASS} \
PACKAGE_BASE_NAME=${PACKAGE_BASE_NAME} \
PACKAGE_ROOT=${PACKAGE_ROOT} \
SOURCE_ROOT_BASE=${SOURCE_ROOT_BASE:-${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/sources} \
STAGE_ROOT_BASE=${STAGE_ROOT_BASE:-${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/staging} \
VAL_VERDE_GH_TEAM=${VAL_VERDE_GH_TEAM} \
ANDROID_NDK_VERSION=r25b \
RELEASE_ARCHIVE_PATH=${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/release-archives \
CUDA_VERSION=11.7.1 \
LLVM_VERSION=13 \
MACOS_VERSION=12 \
PYTHON_VERSION=3.10 \
SOURCE_ARCHIVE_PATH=${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/source-archives \
BOOTSTRAP_ARCHIVE_PATH=${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/bootstrap-archives
ENV BUILD_ARCH=westmere \
BUILD_CPU=westmere \
BUILD_KERNEL=linux \
BUILD_OS=gnu \
BUILD_OS_API_LEVEL= \
BUILD_PROCESSOR=x86_64
RUN mkdir -p ${RELEASE_ARCHIVE_PATH} \
${SOURCE_ARCHIVE_PATH} \
${BOOTSTRAP_ARCHIVE_PATH}
# platform sdk tool wrapper scripts and templates
COPY backends/bash/archive-templates \
/sources/archive-templates/
COPY backends/bash/packaging-tools \
/sources/packaging-tools/
# upstream source package build
FROM ubuntu AS sources_builder
COPY /source-archives/ \
${SOURCE_ARCHIVE_PATH}
COPY backends/bash/sources \
/sources/
RUN bash ${VAL_VERDE_GH_TEAM}-platform-sdk-sources-builder
COPY /bootstrap-archives/ \
${BOOTSTRAP_ARCHIVE_PATH}
# bootstrap binaries build
FROM sources_builder AS binaries_builder
# platform sdk bootstrap package build scripts
RUN mkdir -p ${SOURCE_ROOT_BASE}/compiler-tools-0
COPY backends/bash/compiler-tools \
${SOURCE_ROOT_BASE}/compiler-tools-0/
COPY backends/bash/compiler-tools/libexec/* \
/usr/libexec/
COPY backends/bash/bootstrap \
/sources/
RUN HOST_ARCH=${BUILD_ARCH} \
HOST_CPU=${BUILD_CPU} \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=${BUILD_PROCESSOR} \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-binaries-builder
# gnu bootstrap build
FROM binaries_builder AS gnu_bootstrap_builder
# LTO configuration: [OFF | Full | Thin]
# ENV ENABLE_FLTO=Thin
# Optimization level speed: [0-3] or size: [s, z]
ENV OPTIMIZATION_LEVEL=3
RUN HOST_ARCH=${BUILD_ARCH} \
HOST_CPU=${BUILD_CPU} \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=${BUILD_PROCESSOR} \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu-bootstrap
ENV BUILD_SYSROOT=${PACKAGE_ROOT}/${PACKAGE_BASE_NAME}-platform-sdk/${BUILD_OS}${BUILD_OS_API_LEVEL}-${BUILD_CPU}/sysroot/usr/glibc-interface
COPY /release-archives/ \
${RELEASE_ARCHIVE_PATH}
# platform sdk package build scripts
COPY backends/bash/cross \
/sources/
# system base build
FROM gnu_bootstrap_builder AS system_base_builder
ENV ENABLE_32_BIT_BUILD=
# windows system base package builders
COPY backends/bash/windows-base \
/sources/
# windows-x86_64 environment
RUN HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=64 \
HOST_PROCESSOR=x86_64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows-base
# windows-i786 environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=prescott \
HOST_CPU=westmere \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=i786 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows-base; \
fi
# windows-aarch64 environment
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=64 \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows-base
# windows-armv7a environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=armv7-a+fp \
HOST_CPU=apple-m1 \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=armv7a \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows-base; \
fi
# gnu build
FROM system_base_builder AS gnu_builder
# gnu package builders
COPY backends/bash/gnu \
/sources/
# gnu build environment
RUN HOST_ARCH=${BUILD_ARCH} \
HOST_CPU=${BUILD_CPU} \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=${BUILD_PROCESSOR} \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu
# gnu-aarch64 environment
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-binaries-builder
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu-bootstrap
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=${BUILD_KERNEL} \
HOST_OS=${BUILD_OS} \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu
# gnu-i786 environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=prescott \
HOST_CPU=westmere \
HOST_KERNEL=linux \
HOST_OS=gnu \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=i786 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu-bootstrap; \
fi
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=prescott \
HOST_CPU=westmere \
HOST_KERNEL=linux \
HOST_OS=gnu \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=i786 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu; \
fi
# gnueabihf-armv7a environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=armv7-a+fp \
HOST_CPU=apple-m1 \
HOST_KERNEL=linux \
HOST_OS=gnu \
HOST_OS_API_LEVEL=eabihf \
HOST_PROCESSOR=armv7a \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu-bootstrap; \
fi
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=armv7-a+fp \
HOST_CPU=apple-m1 \
HOST_KERNEL=linux \
HOST_OS=gnu \
HOST_OS_API_LEVEL=eabihf \
HOST_PROCESSOR=armv7a \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-gnu; \
fi
# webassembly build
FROM gnu_builder AS webassembly_builder
# webassembly system base package builders
COPY backends/bash/webassembly \
/sources/
RUN HOST_ARCH=wasm32 \
HOST_CPU=wasm32 \
HOST_KERNEL=unknown \
HOST_OS=wasi \
HOST_OS_API_LEVEL= \
HOST_PROCESSOR=wasm32 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-webassembly
# macos build
FROM webassembly_builder AS macos_builder
# macos package builders
COPY backends/bash/darwin \
/sources/
RUN DARWIN_OS=darwin \
DARWIN_OS_API_LEVEL=21 \
HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=apple \
HOST_OS=macos \
HOST_OS_API_LEVEL=${MACOS_VERSION} \
HOST_PROCESSOR=x86_64 \
SYSROOT=${SOURCE_ROOT_BASE}/macosx-${MACOS_VERSION} \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-compiler-rt-builder
# macos-x86_64 environment
RUN DARWIN_OS=darwin \
DARWIN_OS_API_LEVEL=21 \
HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=apple \
HOST_OS=macos \
HOST_OS_API_LEVEL=${MACOS_VERSION} \
HOST_PROCESSOR=x86_64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-darwin
# macos-aarch64 environment
RUN DARWIN_OS=darwin \
DARWIN_OS_API_LEVEL=21 \
HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=apple \
HOST_OS=macos \
HOST_OS_API_LEVEL=${MACOS_VERSION} \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-darwin
# musl build
FROM macos_builder AS musl_builder
# musl package builders
COPY backends/bash/musl \
/sources/
# musl-x86_64 environment
RUN HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=linux \
HOST_OS=musl \
HOST_PROCESSOR=x86_64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-musl
# musl-aarch64 environment
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=linux \
HOST_OS=musl \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-musl
# android build
FROM musl_builder AS android_builder
# android package builders
COPY backends/bash/android \
/sources/
# android-aarch64 environment
RUN HOST_ARCH=armv8-a \
HOST_CPU=cortex-a57 \
HOST_KERNEL=linux \
HOST_OS=android \
HOST_OS_API_LEVEL=30 \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-android
# android-x86_64 environment
RUN HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=linux \
HOST_OS=android \
HOST_OS_API_LEVEL=30 \
HOST_PROCESSOR=x86_64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-android
# windows build
FROM android_builder AS windows_builder
# windows package builders
COPY backends/bash/windows \
/sources/
# windows-x86_64 environment
RUN HOST_ARCH=westmere \
HOST_CPU=westmere \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=64 \
HOST_PROCESSOR=x86_64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows
# windows-i786 environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=prescott \
HOST_CPU=westmere \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=i786 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows; \
fi
# windows-aarch64 environment
RUN HOST_ARCH=armv8.5-a \
HOST_CPU=apple-m1 \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=64 \
HOST_PROCESSOR=aarch64 \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows
# windows-armv7a environment
RUN if [ -n "${ENABLE_32_BIT_BUILD}" ]; then \
HOST_ARCH=armv7-a+fp \
HOST_CPU=apple-m1 \
HOST_KERNEL=w64 \
HOST_OS=mingw \
HOST_OS_API_LEVEL=32 \
HOST_PROCESSOR=armv7a \
bash ${VAL_VERDE_GH_TEAM}-platform-sdk-windows; \
fi
CMD []
ENTRYPOINT ["tail", "-f", "/dev/null"]