Rewrite build system
This commit is contained in:
parent
61dfe1deaa
commit
537b8988ea
20
.github/workflows/platform_natives.yaml
vendored
20
.github/workflows/platform_natives.yaml
vendored
|
@ -213,7 +213,7 @@ jobs:
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
- name: Build
|
- name: Build
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
if: matrix.os == 'ubuntu-22.04' && !(matrix.debianArch == 'amd64' && matrix.ssl == 'ssl1')
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
push: false
|
push: false
|
||||||
|
@ -229,24 +229,6 @@ jobs:
|
||||||
DEBIAN_VERSION=${{env.DEBIAN_VERSION}}
|
DEBIAN_VERSION=${{env.DEBIAN_VERSION}}
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
- name: Build
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
if: matrix.os == 'ubuntu-22.04' && matrix.debianArch == 'amd64' && matrix.ssl == 'ssl1'
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: false
|
|
||||||
file: tdlight.${{env.DEBIAN_ARCH}}.${{env.SSL}}.${{env.COMPILER}}.dockerfile
|
|
||||||
tags: tdlight.${{env.DEBIAN_ARCH}}.${{env.SSL}}.${{env.COMPILER}}
|
|
||||||
build-args: |
|
|
||||||
SCCACHE_GHA_ENABLED=on
|
|
||||||
ACTIONS_CACHE_URL=${{env.ACTIONS_CACHE_URL}}
|
|
||||||
ACTIONS_RUNTIME_TOKEN=${{env.ACTIONS_RUNTIME_TOKEN}}
|
|
||||||
ARCH_DEBIAN=${{env.DEBIAN_ARCH}}
|
|
||||||
ARCH_TRIPLE=${{env.TRIPLE_ARCH}}
|
|
||||||
TRIPLE_GNU=${{env.TRIPLE_GNU}}
|
|
||||||
DEBIAN_VERSION=${{env.DEBIAN_VERSION}}
|
|
||||||
cache-from: type=gha
|
|
||||||
cache-to: type=gha,mode=max
|
|
||||||
- name: Copy built files from docker
|
- name: Copy built files from docker
|
||||||
if: matrix.os == 'ubuntu-22.04'
|
if: matrix.os == 'ubuntu-22.04'
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
|
@ -1,142 +0,0 @@
|
||||||
FROM debian:buster-backports AS ssl1_debian
|
|
||||||
WORKDIR /build
|
|
||||||
SHELL ["/bin/bash", "-exc"]
|
|
||||||
|
|
||||||
ARG REVISION="1.0.0.0-SNAPSHOT"
|
|
||||||
ARG SCCACHE_GHA_ENABLED=off
|
|
||||||
ARG ACTIONS_CACHE_URL
|
|
||||||
ARG ACTIONS_RUNTIME_TOKEN
|
|
||||||
|
|
||||||
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
|
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
|
||||||
COPY .docker ./.docker
|
|
||||||
# Install sccache to greatly speedup builds in the CI
|
|
||||||
RUN --mount=type=cache,target=/opt/sccache,sharing=locked --mount=type=cache,target=/var/lib/apt,sharing=locked --mount=type=cache,target=/var/cache/sccache,sharing=locked .docker/install-sccache.sh
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
|
||||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
|
||||||
--mount=type=cache,target=/var/cache/sccache,sharing=locked <<"EOF"
|
|
||||||
apt-get --assume-yes update
|
|
||||||
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
|
||||||
openjdk-11-jdk-headless \
|
|
||||||
g++-8 gcc-8 zlib1g-dev libssl-dev gperf \
|
|
||||||
tree git maven php-cli php-readline make cmake
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
FROM ssl1_debian AS build
|
|
||||||
SHELL ["/bin/bash", "-exc"]
|
|
||||||
ARG REVISION="1.0.0.0-SNAPSHOT"
|
|
||||||
ARG SCCACHE_GHA_ENABLED=off
|
|
||||||
ARG ACTIONS_CACHE_URL
|
|
||||||
ARG ACTIONS_RUNTIME_TOKEN
|
|
||||||
|
|
||||||
ENV TOOLCHAIN_FILE="toolchain.cmake"
|
|
||||||
ENV SCCACHE_DIR=/var/cache/sccache
|
|
||||||
|
|
||||||
# machine-specific flags
|
|
||||||
ENV HOST_CMAKE_C_COMPILER="/usr/bin/gcc-8"
|
|
||||||
ENV HOST_CMAKE_CXX_COMPILER="/usr/bin/g++-8"
|
|
||||||
ENV HOST_CMAKE_C_FLAGS=""
|
|
||||||
ENV HOST_CMAKE_CXX_FLAGS="${HOST_CMAKE_C_FLAGS}"
|
|
||||||
ENV HOST_CMAKE_EXE_LINKER_FLAGS=""
|
|
||||||
|
|
||||||
# Use c++11
|
|
||||||
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -std=c++14"
|
|
||||||
|
|
||||||
ENV CMAKE_C_FLAGS="${CMAKE_C_FLAGS}"
|
|
||||||
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti"
|
|
||||||
ENV CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--exclude-libs,ALL"
|
|
||||||
ENV CMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -O3"
|
|
||||||
ENV CCACHE=/opt/sccache/sccache
|
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
|
|
||||||
|
|
||||||
COPY --link . ./
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
|
||||||
--mount=type=cache,target=/var/cache/sccache,sharing=locked \
|
|
||||||
--mount=type=cache,target=/root/.m2 <<"EOF"
|
|
||||||
rm -rf implementations/tdlight/td_tools_build implementations/tdlight/build api/target-legacy api/target api/.ci-friendly-pom.xml implementations/tdlight/td/generate/auto natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
|
||||||
mkdir -p implementations/tdlight/build implementations/tdlight/build/td_bin/bin implementations/tdlight/td_tools_build/java/it/tdlight/jni api/src/main/java-legacy/it/tdlight/jni api/src/main/java-sealed/it/tdlight/jni natives/src/main/java/it/tdlight/jni natives/build natives/tdjni_bin natives/tdjni_docs
|
|
||||||
cd implementations/tdlight/td_tools_build
|
|
||||||
CC="$HOST_CMAKE_C_COMPILER" CXX="$HOST_CMAKE_CXX_COMPILER" cmake \
|
|
||||||
-DCMAKE_C_COMPILER="${HOST_CMAKE_C_COMPILER}" \
|
|
||||||
-DCMAKE_CXX_COMPILER="${HOST_CMAKE_CXX_COMPILER}" \
|
|
||||||
-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} ${HOST_CMAKE_C_FLAGS}" \
|
|
||||||
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} ${HOST_CMAKE_CXX_FLAGS}" \
|
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS} ${HOST_CMAKE_EXE_LINKER_FLAGS}" \
|
|
||||||
-DJAVA_AWT_LIBRARY="/dev/null" \
|
|
||||||
-DJAVA_AWT_INCLUDE_PATH="/dev/null" \
|
|
||||||
\
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DCMAKE_C_FLAGS_RELEASE="" \
|
|
||||||
-DCMAKE_CXX_FLAGS_RELEASE="-O0 -DNDEBUG" \
|
|
||||||
-DTD_ENABLE_LTO=OFF \
|
|
||||||
-DTD_ENABLE_JNI=ON ..
|
|
||||||
cmake --build . --target prepare_cross_compiling --parallel "$(nproc)"
|
|
||||||
cmake --build . --target td_generate_java_api --parallel "$(nproc)"
|
|
||||||
cd ../../../
|
|
||||||
|
|
||||||
./implementations/tdlight/td_tools_build/td/generate/td_generate_java_api TdApi "./implementations/tdlight/td/generate/auto/tlo/td_api.tlo" "./natives/src/main/java" "it/tdlight/jni"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/opt/sccache,sharing=locked \
|
|
||||||
--mount=type=cache,target=/var/cache/sccache,sharing=locked \
|
|
||||||
--mount=type=cache,target=/root/.m2 <<"EOF"
|
|
||||||
cd implementations/tdlight/build
|
|
||||||
export INSTALL_PREFIX="$(readlink -e ./td_bin/)"
|
|
||||||
export INSTALL_BINDIR="$(readlink -e ./td_bin/bin)"
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DTD_SKIP_BENCHMARK=ON -DTD_SKIP_TEST=ON -DTD_SKIP_TG_CLI=ON \
|
|
||||||
-DTD_ENABLE_LTO=ON \
|
|
||||||
-DTD_ENABLE_JNI=ON \
|
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH="$INSTALL_PREFIX" \
|
|
||||||
-DCMAKE_INSTALL_BINDIR:PATH="$INSTALL_BINDIR" \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="../../../${TOOLCHAIN_FILE}" ..
|
|
||||||
cmake --build . --target install --config Release --parallel "$(nproc)"
|
|
||||||
cd ../../../
|
|
||||||
|
|
||||||
cd natives/build
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER="$CCACHE" \
|
|
||||||
-DTD_GENERATED_BINARIES_DIR="$(readlink -e ../../implementations/tdlight/td_tools_build/td/generate)" \
|
|
||||||
-DTD_SRC_DIR="$(readlink -e ../../implementations/tdlight)" \
|
|
||||||
-DTD_ENABLE_LTO=ON \
|
|
||||||
-DTDNATIVES_BIN_DIR="$(readlink -e ../tdjni_bin/)" \
|
|
||||||
-DTDNATIVES_DOCS_BIN_DIR="$(readlink -e ../tdjni_docs/)" \
|
|
||||||
-DTd_DIR:PATH="$(readlink -e ../../implementations/tdlight/build/td_bin/lib/cmake/Td)" \
|
|
||||||
-DJAVA_SRC_DIR="$(readlink -e ../src/main/java)" \
|
|
||||||
-DTDNATIVES_CPP_SRC_DIR="$(readlink -e ../src/main/cpp)" \
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE="../../${TOOLCHAIN_FILE}" \
|
|
||||||
../src/main/cpp
|
|
||||||
cmake --build . --target install --config Release --parallel "$(nproc)"
|
|
||||||
cd ..
|
|
||||||
mkdir -p src/main/resources/META-INF/tdlightjni/
|
|
||||||
mv tdjni_bin/libtdjni.so src/main/resources/META-INF/tdlightjni/libtdjni.linux_amd64_gnu_ssl1.so
|
|
||||||
mvn -B -f pom.xml -Drevision="$REVISION" -Dnative.type.classifier=linux_amd64_gnu_ssl1 package
|
|
||||||
EOF
|
|
||||||
|
|
||||||
FROM debian:buster-backports AS maven
|
|
||||||
SHELL ["/bin/bash", "-exc"]
|
|
||||||
WORKDIR /source
|
|
||||||
COPY --from=build /build/natives /source/natives
|
|
||||||
ENTRYPOINT ["/bin/true"]
|
|
||||||
|
|
||||||
FROM debian:buster-backports
|
|
||||||
ARG REVISION="1.0.0.0-SNAPSHOT"
|
|
||||||
WORKDIR /out
|
|
||||||
COPY --from=build /build/natives natives
|
|
||||||
COPY --from=build /build/natives/src/main/resources/META-INF/tdlightjni/libtdjni.linux_amd64_gnu_ssl1.so libtdjni.so
|
|
||||||
COPY --from=build /build/natives/target-linux_amd64_gnu_ssl1/tdlight-natives-${REVISION}-linux_amd64_gnu_ssl1.jar tdlight-natives.jar
|
|
||||||
USER 65534:65534
|
|
||||||
ENTRYPOINT ["/bin/true"]
|
|
|
@ -41,7 +41,7 @@ apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install
|
||||||
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
g++-8 gcc-8 zlib1g-dev libssl-dev gperf \
|
g++-8 gcc-8 zlib1g-dev libssl-dev gperf \
|
||||||
tree git maven php-cli php-readline make cmake \
|
tree git maven php-cli php-readline make cmake \
|
||||||
g++-8-${ARCH_TRIPLE}-linux-${TRIPLE_GNU} gcc-8-${ARCH_TRIPLE}-linux-${TRIPLE_GNU} \
|
g++-8-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} gcc-8-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} \
|
||||||
libatomic1-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-8-dev-${ARCH_DEBIAN}-cross libstdc++-8-dev-${ARCH_DEBIAN}-cross
|
libatomic1-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-8-dev-${ARCH_DEBIAN}-cross libstdc++-8-dev-${ARCH_DEBIAN}-cross
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -43,7 +43,7 @@ apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install
|
||||||
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
apt-get --assume-yes -o Dpkg::Options::="--force-overwrite" install --no-install-recommends \
|
||||||
g++-12 gcc-12 zlib1g-dev libssl-dev gperf \
|
g++-12 gcc-12 zlib1g-dev libssl-dev gperf \
|
||||||
tree git maven php-cli php-readline make cmake \
|
tree git maven php-cli php-readline make cmake \
|
||||||
g++-12-${ARCH_TRIPLE}-linux-${TRIPLE_GNU} gcc-12-${ARCH_TRIPLE}-linux-${TRIPLE_GNU} \
|
g++-12-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} gcc-12-${ARCH_TRIPLE/_/-}-linux-${TRIPLE_GNU} \
|
||||||
libatomic1-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-12-dev-${ARCH_DEBIAN}-cross libstdc++-12-dev-${ARCH_DEBIAN}-cross
|
libatomic1-${ARCH_DEBIAN}-cross libc6-dev-${ARCH_DEBIAN}-cross libgcc-12-dev-${ARCH_DEBIAN}-cross libstdc++-12-dev-${ARCH_DEBIAN}-cross
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
Loading…
Reference in New Issue
Block a user