1- FROM i386/alpine:3.18.3 as base_builder
1+ ARG TARGETPLATFORM=linux/386
2+ FROM --platform=${TARGETPLATFORM} alpine:3.18.3 AS base_builder
23
34ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
45 LANG=C.UTF-8 \
@@ -12,99 +13,101 @@ RUN set -eux && apk add --no-cache ca-certificates tzdata && \
1213 bison flex gawk patch
1314
1415# # =========== musl ===========
15- FROM i386/ debian:bookworm as musl_builder
16+ FROM --platform=${TARGETPLATFORM} debian:bookworm AS musl_builder
1617ARG DEBIAN_FRONTEND=noninteractive
17- ENV TZ=Asia/Taipei
18+ ENV TZ=Asia/Taipei \
19+ IS_32BIT=1
1820
1921RUN apt-get update -y && apt-get upgrade -y && \
2022 apt-get install -y build-essential wget git file tar xz-utils dpkg-dev libnsl-dev libtirpc-dev uuid-dev patch
2123
2224WORKDIR /src
23- COPY ["./ deplib/build_musl.sh" , ". /deplib/config.mak" , "." ]
25+ COPY ["common/build/ deplib/build_musl.sh" , "3.10/x86 /deplib/config.mak" , "." ]
2426RUN set -eux && ./build_musl.sh
2527
2628# =========== libz ===========
27- FROM base_builder as libz_builder
28- COPY [". /deplib/build_zlib.sh" , "." ]
29+ FROM base_builder AS libz_builder
30+ COPY ["common/build /deplib/build_zlib.sh" , "." ]
2931RUN set -eux && ./build_zlib.sh
3032
3133# =========== ffi ===========
32- FROM libz_builder as ffi_builder
33- COPY [". /deplib/build_ffi.sh" , "." ]
34+ FROM libz_builder AS ffi_builder
35+ COPY ["common/build /deplib/build_ffi.sh" , "." ]
3436RUN set -eux && ./build_ffi.sh
3537
3638# =========== expat ===========
37- FROM ffi_builder as expat_builder
38- COPY [". /deplib/build_expat.sh" , "." ]
39+ FROM ffi_builder AS expat_builder
40+ COPY ["common/build /deplib/build_expat.sh" , "." ]
3941RUN set -eux && ./build_expat.sh
4042
4143# =========== gdbm ===========
42- FROM expat_builder as gdbm_builder
43- COPY [". /deplib/build_gdbm.sh" , "." ]
44+ FROM expat_builder AS gdbm_builder
45+ COPY ["common/build /deplib/build_gdbm.sh" , "." ]
4446RUN set -eux && ./build_gdbm.sh
4547
4648# =========== lzma ===========
47- FROM gdbm_builder as lzma_builder
48- COPY [". /deplib/build_lzma.sh" , "." ]
49+ FROM gdbm_builder AS lzma_builder
50+ COPY ["common/build /deplib/build_lzma.sh" , "." ]
4951RUN set -eux && ./build_lzma.sh
5052
5153# =========== gettext ===========
52- FROM lzma_builder as gettext_builder
53- COPY [". /deplib/build_gettext.sh" , "." ]
54+ FROM lzma_builder AS gettext_builder
55+ COPY ["common/build /deplib/build_gettext.sh" , "." ]
5456RUN set -eux && ./build_gettext.sh
5557
5658# =========== ncurses ===========
57- FROM gettext_builder as ncurses_builder
58- COPY [". /deplib/build_ncurses.sh" , "." ]
59+ FROM gettext_builder AS ncurses_builder
60+ COPY ["common/build /deplib/build_ncurses.sh" , "." ]
5961RUN set -eux && ./build_ncurses.sh
6062
6163# =========== openssl ===========
62- FROM ncurses_builder as openssl_builder
63- COPY [". /deplib/build_openssl.sh" , "." ]
64+ FROM ncurses_builder AS openssl_builder
65+ COPY ["common/build /deplib/build_openssl.sh" , "." ]
6466RUN set -eux && ./build_openssl.sh
6567
6668# =========== readline ===========
67- FROM openssl_builder as readline_builder
68- COPY ["./ deplib/build_readline.sh" , "./deplib/patch/ fix-ncurses-underlinking.patch" , "." ]
69+ FROM openssl_builder AS readline_builder
70+ COPY ["common/build/ deplib/build_readline.sh" , "common/patches/common/ncurses/ fix-ncurses-underlinking.patch" , "." ]
6971RUN set -eux && ./build_readline.sh
7072
7173# =========== tcl ===========
72- FROM readline_builder as tcl_builder
73- COPY [". /deplib/build_tcl.sh" , "." ]
74+ FROM readline_builder AS tcl_builder
75+ COPY ["common/build /deplib/build_tcl.sh" , "." ]
7476RUN set -eux && ./build_tcl.sh
7577
7678# =========== xz ===========
77- FROM tcl_builder as xz_builder
78- COPY [". /deplib/build_xz.sh" , "." ]
79+ FROM tcl_builder AS xz_builder
80+ COPY ["common/build /deplib/build_xz.sh" , "." ]
7981RUN set -eux && ./build_xz.sh
8082
8183# =========== bzip2 ===========
82- FROM xz_builder as bzip2_builder
83- COPY [". /deplib/build_bzip2.sh" , "." ]
84+ FROM xz_builder AS bzip2_builder
85+ COPY ["common/build /deplib/build_bzip2.sh" , "." ]
8486RUN set -eux && ./build_bzip2.sh
8587
8688# =========== sqlite3 ===========
87- FROM bzip2_builder as sqlite3_builder
88- COPY [". /deplib/build_sqlite3.sh" , "." ]
89+ FROM bzip2_builder AS sqlite3_builder
90+ COPY ["common/build /deplib/build_sqlite3.sh" , "." ]
8991RUN set -eux && ./build_sqlite3.sh
9092
9193# =========== Python ===========
92- FROM sqlite3_builder as python_builder
94+ FROM sqlite3_builder AS python_builder
9395
94- COPY ["./ deplib/build_python.sh" , ". /deplib/install_pip.sh" , "." ]
96+ COPY ["common/build/ deplib/build_python.sh" , "common/build /deplib/install_pip.sh" , "." ]
9597RUN set -eux && ./build_python.sh && ./install_pip.sh
9698
9799# =========== patch_stage ===========
98- FROM i386/ debian:latest as patch_stage
100+ FROM --platform=${TARGETPLATFORM} debian:latest AS patch_stage
99101ARG DEBIAN_FRONTEND=noninteractive
100- ENV TZ=Asia/Taipei
102+ ENV TZ=Asia/Taipei \
103+ IS_32BIT=1
101104
102105RUN apt-get update -y && apt-get install -y patchelf file
103106
104107COPY --from=python_builder /opt/shared_libraries /opt/shared_libraries
105108COPY --from=python_builder /opt/python /opt/python
106109
107- COPY ["./ packing-initializer" , "./ python-wrapper" , "./ pip-wrapper" ,"." ]
110+ COPY ["common/build/wrappers/ packing-initializer" , "common/build/wrappers/ python-wrapper" , "common/build/wrappers/ pip-wrapper" , "." ]
108111RUN ./packing-initializer && rm -rf packing-initializer && \
109112 mv python-wrapper /opt/python/bin/python3 && \
110113 mv pip-wrapper /opt/python/bin/pip3 && \
@@ -114,12 +117,12 @@ RUN ./packing-initializer && rm -rf packing-initializer && \
114117
115118# Patch the generated python and related dynamic libraries
116119COPY --from=musl_builder /opt/musl /opt/musl
117- COPY [". /interpreter-patcher.sh" , "." ]
118- RUN set -eux && ./interpreter-patcher.sh
120+ COPY ["common/build/wrappers /interpreter-patcher.sh" , "." ]
121+ RUN set -eux && ./interpreter-patcher.sh
119122
120123# =========== final ===========
121- FROM i386/ debian:latest as final
124+ FROM --platform=${TARGETPLATFORM} debian:latest AS final
122125ARG DEBIAN_FRONTEND=noninteractive
123126ENV TZ=Asia/Taipei
124127
125- COPY --from=patch_stage /opt/python /opt/python
128+ COPY --from=patch_stage /opt/python /opt/python
0 commit comments