2024-03-29 11:39:10 +00:00
|
|
|
FROM golang:1.19-bullseye AS base
|
|
|
|
|
|
|
|
RUN apt-get update
|
|
|
|
RUN apt-get install -y libssl-dev cmake build-essential gperf libz-dev make git php
|
|
|
|
|
|
|
|
FROM base AS tdlib
|
|
|
|
|
|
|
|
ARG TD_COMMIT
|
|
|
|
ARG MAKEOPTS
|
|
|
|
RUN git clone https://github.com/tdlib/td /src/
|
|
|
|
RUN git -C /src/ checkout "${TD_COMMIT}"
|
|
|
|
RUN mkdir build
|
|
|
|
WORKDIR /build/
|
|
|
|
RUN cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/compiled/ /src/
|
|
|
|
RUN cmake --build . --target prepare_cross_compiling ${MAKEOPTS}
|
|
|
|
WORKDIR /src/
|
|
|
|
RUN php SplitSource.php
|
|
|
|
WORKDIR /build/
|
|
|
|
RUN cmake --build . ${MAKEOPTS}
|
|
|
|
RUN make install
|
|
|
|
|
|
|
|
FROM base AS cache
|
|
|
|
ARG VERSION
|
|
|
|
COPY --from=tdlib /compiled/ /usr/local/
|
|
|
|
WORKDIR /src
|
2024-04-09 23:09:47 +00:00
|
|
|
RUN go env -w GOCACHE=/go-cache
|
|
|
|
RUN go env -w GOMODCACHE=/gomod-cache
|
|
|
|
RUN --mount=type=cache,target=/gomod-cache \
|
2024-03-29 11:39:10 +00:00
|
|
|
--mount=type=bind,source=./,target=/src \
|
2024-04-09 23:09:47 +00:00
|
|
|
go mod download
|
2024-03-29 11:39:10 +00:00
|
|
|
|
|
|
|
FROM cache AS build
|
|
|
|
ARG MAKEOPTS
|
|
|
|
WORKDIR /src
|
|
|
|
RUN --mount=type=bind,source=./,target=/src,rw \
|
2024-04-09 23:09:47 +00:00
|
|
|
--mount=type=cache,target=/go-cache \
|
|
|
|
--mount=type=cache,target=/gomod-cache \
|
2024-03-29 11:39:10 +00:00
|
|
|
--mount=type=cache,destination=/src/release \
|
|
|
|
make ${MAKEOPTS}
|
|
|
|
|
|
|
|
FROM build AS release
|
|
|
|
RUN --mount=type=cache,destination=/src/release \
|
|
|
|
cp /src/release/telegabber /
|
|
|
|
|
|
|
|
FROM scratch AS binaries
|
|
|
|
COPY --from=release /telegabber /
|