sterepando commited on
Commit
f25ab1e
·
verified ·
1 Parent(s): d718c2f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +20 -21
Dockerfile CHANGED
@@ -1,14 +1,14 @@
 
1
  FROM ubuntu:22.04
2
-
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
- # 1. Установка системных зависимостей
6
  RUN apt-get update && apt-get install -y \
7
  build-essential wget curl unzip python3 autoconf libtool pkg-config \
8
  gettext tcl libssl-dev zlib1g-dev perl zip && \
9
  rm -rf /var/lib/apt/lists/*
10
 
11
- # 2. Настройка NDK
12
  ENV NDK_VERSION=r25c
13
  ENV ANDROID_NDK_HOME=/opt/ndk
14
  RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip && \
@@ -16,7 +16,7 @@ RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-
16
  mv /opt/android-ndk-${NDK_VERSION} /opt/ndk && \
17
  rm android-ndk-${NDK_VERSION}-linux.zip
18
 
19
- # 3. Окружение для компиляции (API 30, ARM64)
20
  ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
21
  ENV TARGET=aarch64-linux-android
22
  ENV API=30
@@ -27,37 +27,36 @@ ENV CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
27
  ENV LD=$TOOLCHAIN/bin/ld
28
  ENV RANLIB=$TOOLCHAIN/bin/llvm-ranlib
29
  ENV STRIP=$TOOLCHAIN/bin/llvm-strip
30
-
31
- # Ключевой момент для OpenSSL: добавляем бин тулчейна в PATH
32
  ENV PATH=$TOOLCHAIN/bin:$PATH
33
  ENV PREFIX=/opt/git-build
34
 
35
- # 4. Сборка зависимостей (ZLIB, OPENSSL, EXPAT, CURL)
36
- RUN mkdir -p /build $PREFIX
37
 
38
- # ZLIB
39
  RUN cd /build && wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar xf zlib-1.3.1.tar.gz && \
40
  cd zlib-1.3.1 && ./configure --prefix=$PREFIX --static && make -j$(nproc) install
41
 
42
- # OPENSSL (Исправленный конфиг для NDK r25)
 
43
  RUN cd /build && wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xf openssl-1.1.1w.tar.gz && \
44
  cd openssl-1.1.1w && \
45
- ./Configure android-arm64 no-shared -D__ANDROID_API__=$API --prefix=$PREFIX && \
46
- make -j$(nproc) SHLIB_VERSION_NUMBER= install_sw
47
 
48
- # EXPAT (Нужен для git-http-push)
49
  RUN cd /build && wget -q https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-2.6.2.tar.gz && tar xf expat-2.6.2.tar.gz && \
50
  cd expat-2.6.2 && ./configure --host=$TARGET --prefix=$PREFIX --enable-static --disable-shared && \
51
  make -j$(nproc) install
52
 
53
- # CURL (Статический)
54
  RUN cd /build && wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar xf curl-8.5.0.tar.gz && \
55
  cd curl-8.5.0 && \
56
  ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static \
57
- --with-openssl=$PREFIX --with-zlib=$PREFIX && \
58
  make -j$(nproc) install
59
 
60
- # 5. Сборка GIT (Включая xdiff и reftable)
61
  RUN cd /build && wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz && tar xf git-2.43.0.tar.gz && \
62
  cd git-2.43.0 && \
63
  make configure && \
@@ -65,20 +64,20 @@ RUN cd /build && wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/gi
65
  --with-curl=$PREFIX --with-ssl=$PREFIX --with-zlib=$PREFIX --with-expat=$PREFIX \
66
  ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no \
67
  NO_GETTEXT=1 NO_ICONV=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 && \
68
- # Сборка статических библиотек внутри гита
69
  make -j$(nproc) libgit.a xdiff/lib.a reftable/libreftable.a && \
70
- # Линковка финального бинарника как исполняемого .so
 
71
  $CC -O3 -fPIC -static-libstdc++ -L$PREFIX/lib -I$PREFIX/include \
72
  -o git git.c common-main.c libgit.a xdiff/lib.a reftable/libreftable.a \
73
  -lcurl -lssl -lcrypto -lz -lexpat && \
74
- # Сборка помощника для работы по http
75
  $CC -O3 -fPIC -static-libstdc++ -L$PREFIX/lib -I$PREFIX/include \
76
  -o git-remote-http remote-curl.c libgit.a xdiff/lib.a reftable/libreftable.a \
77
  -lcurl -lssl -lcrypto -lz -lexpat && \
78
  $STRIP git git-remote-http
79
 
80
- # 6. Упаковка
81
  RUN mkdir -p /output/git-bundle && \
82
  cp /build/git-2.43.0/git /output/git-bundle/libgit.so && \
83
  cp /build/git-2.43.0/git-remote-http /output/git-bundle/libgit-remote-http.so && \
84
- cd /output && zip -r git-android-v8.zip git-bundle
 
1
+ # Используем Ubuntu 22.04
2
  FROM ubuntu:22.04
 
3
  ENV DEBIAN_FRONTEND=noninteractive
4
 
5
+ # 1. Системные зависимости
6
  RUN apt-get update && apt-get install -y \
7
  build-essential wget curl unzip python3 autoconf libtool pkg-config \
8
  gettext tcl libssl-dev zlib1g-dev perl zip && \
9
  rm -rf /var/lib/apt/lists/*
10
 
11
+ # 2. Настройка NDK r25c
12
  ENV NDK_VERSION=r25c
13
  ENV ANDROID_NDK_HOME=/opt/ndk
14
  RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip && \
 
16
  mv /opt/android-ndk-${NDK_VERSION} /opt/ndk && \
17
  rm android-ndk-${NDK_VERSION}-linux.zip
18
 
19
+ # 3. Переменные окружения для ARM64 API 30
20
  ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
21
  ENV TARGET=aarch64-linux-android
22
  ENV API=30
 
27
  ENV LD=$TOOLCHAIN/bin/ld
28
  ENV RANLIB=$TOOLCHAIN/bin/llvm-ranlib
29
  ENV STRIP=$TOOLCHAIN/bin/llvm-strip
 
 
30
  ENV PATH=$TOOLCHAIN/bin:$PATH
31
  ENV PREFIX=/opt/git-build
32
 
33
+ # Создаем структуру заранее
34
+ RUN mkdir -p /build $PREFIX/bin $PREFIX/lib $PREFIX/include
35
 
36
+ # 4. Сборка ZLIB
37
  RUN cd /build && wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar xf zlib-1.3.1.tar.gz && \
38
  cd zlib-1.3.1 && ./configure --prefix=$PREFIX --static && make -j$(nproc) install
39
 
40
+ # 5. Сборка OPENSSL (Исправлено)
41
+ # Мы явно передаем ANDROID_NDK_HOME и используем no-comp no-tests
42
  RUN cd /build && wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xf openssl-1.1.1w.tar.gz && \
43
  cd openssl-1.1.1w && \
44
+ ./Configure android-arm64 no-shared no-tests no-comp -D__ANDROID_API__=$API --prefix=$PREFIX && \
45
+ make -j$(nproc) && make install_sw
46
 
47
+ # 6. Сборка EXPAT
48
  RUN cd /build && wget -q https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-2.6.2.tar.gz && tar xf expat-2.6.2.tar.gz && \
49
  cd expat-2.6.2 && ./configure --host=$TARGET --prefix=$PREFIX --enable-static --disable-shared && \
50
  make -j$(nproc) install
51
 
52
+ # 7. Сборка CURL
53
  RUN cd /build && wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar xf curl-8.5.0.tar.gz && \
54
  cd curl-8.5.0 && \
55
  ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static \
56
+ --with-openssl=$PREFIX --with-zlib=$PREFIX --disable-proxy && \
57
  make -j$(nproc) install
58
 
59
+ # 8. Сборка GIT (Quantum Static)
60
  RUN cd /build && wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz && tar xf git-2.43.0.tar.gz && \
61
  cd git-2.43.0 && \
62
  make configure && \
 
64
  --with-curl=$PREFIX --with-ssl=$PREFIX --with-zlib=$PREFIX --with-expat=$PREFIX \
65
  ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no \
66
  NO_GETTEXT=1 NO_ICONV=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 && \
67
+ # Собираем внутренние части
68
  make -j$(nproc) libgit.a xdiff/lib.a reftable/libreftable.a && \
69
+ # Линкуем финальный "толстый" бинарник.
70
+ # Мы называем их .so для обхода фильтров Play Protect / Android
71
  $CC -O3 -fPIC -static-libstdc++ -L$PREFIX/lib -I$PREFIX/include \
72
  -o git git.c common-main.c libgit.a xdiff/lib.a reftable/libreftable.a \
73
  -lcurl -lssl -lcrypto -lz -lexpat && \
 
74
  $CC -O3 -fPIC -static-libstdc++ -L$PREFIX/lib -I$PREFIX/include \
75
  -o git-remote-http remote-curl.c libgit.a xdiff/lib.a reftable/libreftable.a \
76
  -lcurl -lssl -lcrypto -lz -lexpat && \
77
  $STRIP git git-remote-http
78
 
79
+ # 9. Финальная упаковка
80
  RUN mkdir -p /output/git-bundle && \
81
  cp /build/git-2.43.0/git /output/git-bundle/libgit.so && \
82
  cp /build/git-2.43.0/git-remote-http /output/git-bundle/libgit-remote-http.so && \
83
+ cd /output && zip -r git-quantum-v8.zip git-bundle