Skip to content

Commit ccd7e99

Browse files
committed
Expanded Docker image rebuild triggers for native sources.
1 parent baae8de commit ccd7e99

2 files changed

Lines changed: 60 additions & 9 deletions

File tree

.github/workflows/docker-builder.yml

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,19 @@ on:
55
paths:
66
- 'docker/Dockerfile'
77
- '.github/workflows/docker-builder.yml'
8+
- 'TMessagesProj/jni/boringssl'
9+
- 'TMessagesProj/jni/ffmpeg'
10+
- 'TMessagesProj/jni/libvpx'
11+
- 'TMessagesProj/jni/dav1d'
12+
- 'TMessagesProj/jni/tde2e_source'
13+
- 'TMessagesProj/jni/patches/**'
14+
- 'TMessagesProj/jni/build_*.sh'
15+
- 'TMessagesProj/jni/prepare.py'
16+
- 'TMessagesProj/jni/CMakeLists.txt'
17+
- 'TMessagesProj/jni/voip/**'
818
branches:
919
- dev
1020
schedule:
11-
# First Sunday of each month at 03:00 UTC
1221
- cron: '0 3 1-7 * 0'
1322
workflow_dispatch:
1423

@@ -23,8 +32,23 @@ jobs:
2332
packages: write
2433

2534
steps:
35+
- name: Free up disk space
36+
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
37+
with:
38+
tool-cache: true
39+
android: true
40+
2641
- name: Checkout
2742
uses: actions/checkout@v4
43+
with:
44+
submodules: true
45+
46+
- name: Clone untracked submodules (boringssl, ffmpeg)
47+
run: |
48+
git clone https://github.com/google/boringssl TMessagesProj/jni/boringssl
49+
cd TMessagesProj/jni/boringssl && git checkout a6d321b11fa80496b7c8ae6405468c212d4f5c87 && cd -
50+
git clone https://github.com/FFmpeg/FFmpeg TMessagesProj/jni/ffmpeg
51+
cd TMessagesProj/jni/ffmpeg && git checkout 71fb6132637a2a430375c24afc381fff8b854fe7 && cd -
2852
2953
- name: Lowercase image name
3054
id: lower
@@ -40,7 +64,7 @@ jobs:
4064
- name: Build and push
4165
uses: docker/build-push-action@v6
4266
with:
43-
context: docker
67+
context: .
4468
file: docker/Dockerfile
4569
push: true
4670
tags: |

docker/Dockerfile

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,40 @@ FROM base AS native-builder
7272
COPY TMessagesProj/jni/ /build/jni/
7373
WORKDIR /build/jni
7474

75-
# Phase 1: prepare.py (boringssl, ffmpeg, libvpx, dav1d, tde2e)
76-
# Stub out git — prepare.py runs "git submodule update" and "git reset --hard"
77-
# but the sources are already in place via COPY.
78-
RUN mv /usr/bin/git /usr/bin/git.real && \
79-
printf '#!/bin/sh\ntrue\n' > /usr/bin/git && chmod +x /usr/bin/git && \
80-
python3 prepare.py arm64 arm ndk=$ANDROID_NDK_HOME silent && \
81-
mv /usr/bin/git.real /usr/bin/git
75+
# Phase 1: Build static libraries directly (bypasses prepare.py which
76+
# assumes git submodules and rm/re-checkout cycle unsuitable for Docker).
77+
ENV NDK=$ANDROID_NDK_HOME
78+
ENV NINJA_PATH=/usr/bin/ninja
79+
80+
RUN ./build_dav1d_clang.sh arm64 arm
81+
82+
RUN ./build_libvpx_clang.sh arm64 arm
83+
84+
RUN ./build_ffmpeg_clang.sh arm64 arm && ./patch_ffmpeg.sh
85+
86+
RUN ./patch_boringssl.sh && ./build_boringssl.sh arm64 arm
87+
88+
RUN tde2e_dir=$(pwd)/tde2e && \
89+
source_dir=$(pwd)/tde2e_source && \
90+
boringssl_dir=$(pwd)/boringssl && \
91+
for arch in arm64-v8a armeabi-v7a; do \
92+
mkdir -p $source_dir/example/android/third-party/openssl/$arch/lib/ && \
93+
cp "$boringssl_dir/build/$arch/crypto/libcrypto.a" "$source_dir/example/android/third-party/openssl/$arch/lib/" && \
94+
cp "$boringssl_dir/build/$arch/ssl/libssl.a" "$source_dir/example/android/third-party/openssl/$arch/lib/" && \
95+
cp -R "$boringssl_dir/include" "$source_dir/example/android/third-party/openssl/$arch/"; \
96+
done && \
97+
cp "$tde2e_dir/build-tdlib.sh" "$source_dir/example/android/." && \
98+
cp "$tde2e_dir/CMakeLists.txt" "$source_dir/example/android/." && \
99+
sed -i "s/ php//g" "$source_dir/example/android/check-environment.sh" && \
100+
sed -i "s/PHP_EXECUTABLE/FALSE/g" "$source_dir/td/generate/CMakeLists.txt" && \
101+
cd "$source_dir/example/android" && \
102+
SED_CMDS="s/x86_64//g;s/x86//g;s/rm tdlib/# rm tdlib/g;s/jar/# jar/g;s/mv tdlib/# mv tdlib/g;" && \
103+
sed "$SED_CMDS" ./build-tdlib.sh | bash -s -- "$NDK/../.." && \
104+
for arch in arm64-v8a armeabi-v7a; do \
105+
mkdir -p $tde2e_dir/$arch && \
106+
cp "$source_dir/example/android/build-$arch-Java/td/tde2e/libtde2e.a" $tde2e_dir/$arch && \
107+
cp "$source_dir/example/android/build-$arch-Java/td/tdutils/libtdutils.a" $tde2e_dir/$arch; \
108+
done
82109

83110
# Phase 2: CMake build of libtmessages.49.so per ABI
84111
RUN for abi in arm64-v8a armeabi-v7a; do \

0 commit comments

Comments
 (0)