aboutsummaryrefslogblamecommitdiff
path: root/staging.Dockerfile
blob: e9fdd1efc6f101a5c84b65f03cba2f784ec90270 (plain) (tree)
























                                                                                   


                                            
                                             
                   




                                                

                                            








                                                 
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
RUN go env -w GOCACHE=/go-cache
RUN go env -w GOMODCACHE=/gomod-cache
RUN --mount=type=cache,target=/gomod-cache \
    --mount=type=bind,source=./,target=/src \
    go mod download

FROM cache AS build
ARG MAKEOPTS
WORKDIR /src
RUN --mount=type=bind,source=./,target=/src,rw \
    --mount=type=cache,target=/go-cache \
    --mount=type=cache,target=/gomod-cache \
    --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 /