|
| 1 | +FROM --platform=${BUILDPLATFORM} tonistiigi/xx:latest@sha256:923441d7c25f1e2eb5789f82d987693c47b8ed987c4ab3b075d6ed2b5d6779a3 AS xx |
| 2 | + |
| 3 | +FROM --platform=${BUILDPLATFORM} ubuntu:24.04@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30 AS common |
| 4 | +ARG TARGETPLATFORM |
| 5 | +COPY --from=xx / / |
| 6 | +ENV DEBIAN_FRONTEND=noninteractive |
| 7 | +RUN \ |
| 8 | + apt-get update && \ |
| 9 | + apt-get install -y --no-install-recommends clang cmake file lld make pkgconf && \ |
| 10 | + xx-apt-get update && \ |
| 11 | + xx-apt-get install -y binutils gcc g++ libc6-dev && \ |
| 12 | + xx-clang --setup-target-triple && \ |
| 13 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 14 | + |
| 15 | +ENV SOURCE_DATE_EPOCH=0 |
| 16 | +WORKDIR /src |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | +FROM --platform=${BUILDPLATFORM} common AS php-common |
| 21 | +ARG TARGETPLATFORM |
| 22 | +RUN \ |
| 23 | + apt-get update && \ |
| 24 | + apt-get install -y curl lsb-release ca-certificates gnupg --no-install-recommends && \ |
| 25 | + echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list && \ |
| 26 | + curl -sSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x71DAEAAB4AD4CAB6" | gpg --dearmor > /etc/apt/trusted.gpg.d/ppa-ondrej-php.gpg && \ |
| 27 | + xx-apt-get update && \ |
| 28 | + apt-get install -y shtool php-pear && \ |
| 29 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* && \ |
| 30 | + sed -i '/^Package: shtool$/a Multi-Arch: foreign' /var/lib/dpkg/status && \ |
| 31 | + pecl bundle timezonedb |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | +FROM --platform=${BUILDPLATFORM} common AS build-mydumper |
| 36 | +ARG TARGETPLATFORM |
| 37 | +RUN \ |
| 38 | + echo 'DPkg::Pre-Invoke { "rm -f /var/lib/dpkg/info/*.postinst || true"; };' > /etc/apt/apt.conf.d/99local && \ |
| 39 | + xx-apt-get update && \ |
| 40 | + xx-apt-get install --no-install-recommends -y -oDPkg::ConfigurePending=0 libglib2.0-dev || true && \ |
| 41 | + xx-apt-get install --no-install-recommends -y -oDPkg::ConfigurePending=0 libglib2.0-dev || true && \ |
| 42 | + xx-apt-get install --no-install-recommends -y -oDPkg::ConfigurePending=0 libglib2.0-dev && \ |
| 43 | + xx-apt-get install --no-install-recommends -y \ |
| 44 | + zlib1g-dev libpcre3-dev libssl-dev libzstd-dev libmysqlclient-dev && \ |
| 45 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 46 | + |
| 47 | +WORKDIR /src/mydumper |
| 48 | +ADD https://github.com/mydumper/mydumper/archive/refs/tags/v0.18.1-1.tar.gz mydumper.tar.gz |
| 49 | +RUN \ |
| 50 | + echo "0cce6f1e15b474c35d57e9bcd87d8469 mydumper.tar.gz" | md5sum -c - && \ |
| 51 | + tar -xzf mydumper.tar.gz --strip-components=1 && \ |
| 52 | + sed -i 's/-Werror//g' CMakeLists.txt && \ |
| 53 | + cmake -B build $(xx-clang --print-cmake-defines) && \ |
| 54 | + cmake --build build -j$(nproc) && \ |
| 55 | + cmake --install build && \ |
| 56 | + rm -rf build |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +FROM --platform=${BUILDPLATFORM} php-common AS php81 |
| 61 | +WORKDIR /src/timezonedb |
| 62 | +RUN \ |
| 63 | + xx-apt-get update && \ |
| 64 | + xx-apt-get install -y --no-install-recommends php8.1-dev && \ |
| 65 | + phpize && ./configure --host=$(xx-clang --print-target-triple) && make -j$(nproc) && make install && \ |
| 66 | + make distclean && \ |
| 67 | + xx-apt-get remove --purge -y --auto-remove php8.1-dev && \ |
| 68 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | +FROM --platform=${BUILDPLATFORM} php-common AS php82 |
| 73 | +WORKDIR /src/timezonedb |
| 74 | +RUN \ |
| 75 | + xx-apt-get update && \ |
| 76 | + xx-apt-get install -y --no-install-recommends php8.2-dev && \ |
| 77 | + phpize && ./configure --host=$(xx-clang --print-target-triple) && make -j$(nproc) && make install && \ |
| 78 | + make distclean && \ |
| 79 | + xx-apt-get remove --purge -y --auto-remove php8.2-dev && \ |
| 80 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 81 | + |
| 82 | + |
| 83 | + |
| 84 | +FROM --platform=${BUILDPLATFORM} php-common AS php83 |
| 85 | +WORKDIR /src/timezonedb |
| 86 | +RUN \ |
| 87 | + xx-apt-get update && \ |
| 88 | + xx-apt-get install -y --no-install-recommends php8.3-dev && \ |
| 89 | + phpize && ./configure --host=$(xx-clang --print-target-triple) && make -j$(nproc) && make install && \ |
| 90 | + make distclean && \ |
| 91 | + xx-apt-get remove --purge -y --auto-remove php8.3-dev && \ |
| 92 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +FROM --platform=${BUILDPLATFORM} php-common AS php84 |
| 97 | +WORKDIR /src/timezonedb |
| 98 | +RUN \ |
| 99 | + xx-apt-get update && \ |
| 100 | + xx-apt-get install -y --no-install-recommends php8.4-dev && \ |
| 101 | + phpize && ./configure --host=$(xx-clang --print-target-triple) && make -j$(nproc) && make install && \ |
| 102 | + make distclean && \ |
| 103 | + xx-apt-get remove --purge -y --auto-remove php8.4-dev && \ |
| 104 | + rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | +FROM scratch |
| 109 | +COPY --from=build-mydumper /usr/local/bin/mydumper /usr/local/bin/myloader /etc/mydumper.cnf / |
| 110 | +COPY --from=php81 /usr/lib/php/20210902/timezonedb.so /usr/lib/php/20210902/timezonedb.so |
| 111 | +COPY --from=php82 /usr/lib/php/20220829/timezonedb.so /usr/lib/php/20220829/timezonedb.so |
| 112 | +COPY --from=php83 /usr/lib/php/20230831/timezonedb.so /usr/lib/php/20230831/timezonedb.so |
| 113 | +COPY --from=php84 /usr/lib/php/20240924/timezonedb.so /usr/lib/php/20240924/timezonedb.so |
0 commit comments