sterepando commited on
Commit
0f1f8fe
·
verified ·
1 Parent(s): 903586f

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +17 -26
Dockerfile CHANGED
@@ -5,7 +5,7 @@ FROM ubuntu:22.04
5
  ENV DEBIAN_FRONTEND=noninteractive
6
  ENV PORT=7860
7
 
8
- # 1. Установка инструментов (в одном слое)
9
  RUN apt-get update && apt-get install -y \
10
  build-essential \
11
  wget \
@@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y \
23
  zip \
24
  && rm -rf /var/lib/apt/lists/*
25
 
26
- # 2. Настройка NDK и переменных (Build Time)
27
  ENV NDK_VERSION=r25c
28
  ENV ANDROID_NDK_HOME=/opt/ndk
29
  ENV NDK_ROOT=/opt/ndk
@@ -51,24 +51,24 @@ RUN mkdir -p $PREFIX /build /output && \
51
  mv android-ndk-${NDK_VERSION} /opt/ndk && \
52
  rm android-ndk-${NDK_VERSION}-linux.zip
53
 
54
- # 3. Компиляция Зависимостей (ZLIB, OpenSSL, Expat, cURL)
55
  RUN cd /build && \
56
- # --- ZLIB ---
57
  wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar xzf zlib-1.3.1.tar.gz && \
58
  cd zlib-1.3.1 && ./configure --prefix=$PREFIX --static && make -j$(nproc) && make install && \
59
  cd /build && \
60
- # --- OpenSSL ---
61
  wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xzf openssl-1.1.1w.tar.gz && \
62
  cd openssl-1.1.1w && ./Configure android-arm64 no-shared -D__ANDROID_API__=$API --prefix=$PREFIX && \
63
  make -j$(nproc) && make install && \
64
  cd /build && \
65
- # --- Expat ---
66
  wget -q https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-2.6.2.tar.gz && \
67
  tar xzf expat-2.6.2.tar.gz && \
68
  cd expat-2.6.2 && ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static --without-docbook && \
69
  make -j$(nproc) && make install && \
70
  cd /build && \
71
- # --- cURL ---
72
  wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar xzf curl-8.5.0.tar.gz && \
73
  cd curl-8.5.0 && \
74
  ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static \
@@ -77,50 +77,41 @@ RUN cd /build && \
77
  --disable-tftp --without-libpsl --without-libidn2 --without-brotli --without-zstd --without-nghttp2 && \
78
  make -j$(nproc) && make install
79
 
80
- # 4. Компиляция GIT (Полная сборка с хелперами)
81
  RUN cd /build && \
82
  wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz && \
83
  tar xzf git-2.43.0.tar.gz && \
84
  cd git-2.43.0 && \
85
- # Сначала собираем libgit.a
86
  make -j$(nproc) V=1 \
87
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
88
  NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_ICONV=1 NO_INSTALL_HARDLINKS=1 NO_R_TO_GCC_LINKER=1 \
89
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
90
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
91
- libgit.a && \
92
- # Теперь собираем исполняемые файлы (git и helpers)
93
  make -j$(nproc) V=1 \
94
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
95
  NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_ICONV=1 NO_INSTALL_HARDLINKS=1 NO_R_TO_GCC_LINKER=1 \
96
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
97
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
98
- LIBS="libgit.a -lcurl -lssl -lcrypto -lz -lexpat" \
 
99
  git git-remote-http git-http-fetch && \
100
- # Стрипаем бинарники для уменьшения размера
101
  $STRIP git git-remote-http git-http-fetch && \
102
- # Подготавливаем выходную папку
103
  mkdir -p /output/git-bundle && \
104
- # Копируем и переименовываем под "библиотеки" для Android (чтобы установщик пропустил)
105
  cp git /output/git-bundle/libgit.so && \
106
  cp git-remote-http /output/git-bundle/libgit-remote-http.so && \
107
  cp git-http-fetch /output/git-bundle/libgit-http-fetch.so && \
108
- # Создаем ZIP архив
109
  cd /output && \
110
  zip -r android-git-bundle.zip git-bundle && \
111
  rm -rf git-bundle
112
 
113
- # 5. Создаем индекс для скачивания (Runtime)
114
  WORKDIR /output
115
- RUN echo '<html><body><h1>Mandre GIT Bundle (Full Static)</h1><ul>' > index.html && \
116
- echo '<li><a href="android-git-bundle.zip" download>Download android-git-bundle.zip</a> (Contains libgit.so, libgit-remote-http.so...)</li>' >> index.html && \
117
- echo '</ul></body></html>' >> index.html
118
-
119
- # Настраиваем права для пользователя HF (1000)
120
  RUN chmod -R 777 /output
121
-
122
- # Открываем порт
123
  EXPOSE 7860
124
-
125
- # Запускаем ТОЛЬКО сервер (Билд уже прошел)
126
  CMD ["python3", "-m", "http.server", "7860"]
 
5
  ENV DEBIAN_FRONTEND=noninteractive
6
  ENV PORT=7860
7
 
8
+ # 1. Установка инструментов
9
  RUN apt-get update && apt-get install -y \
10
  build-essential \
11
  wget \
 
23
  zip \
24
  && rm -rf /var/lib/apt/lists/*
25
 
26
+ # 2. Настройка NDK
27
  ENV NDK_VERSION=r25c
28
  ENV ANDROID_NDK_HOME=/opt/ndk
29
  ENV NDK_ROOT=/opt/ndk
 
51
  mv android-ndk-${NDK_VERSION} /opt/ndk && \
52
  rm android-ndk-${NDK_VERSION}-linux.zip
53
 
54
+ # 3. Компиляция Зависимостей
55
  RUN cd /build && \
56
+ # ZLIB
57
  wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar xzf zlib-1.3.1.tar.gz && \
58
  cd zlib-1.3.1 && ./configure --prefix=$PREFIX --static && make -j$(nproc) && make install && \
59
  cd /build && \
60
+ # OpenSSL
61
  wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xzf openssl-1.1.1w.tar.gz && \
62
  cd openssl-1.1.1w && ./Configure android-arm64 no-shared -D__ANDROID_API__=$API --prefix=$PREFIX && \
63
  make -j$(nproc) && make install && \
64
  cd /build && \
65
+ # Expat
66
  wget -q https://github.com/libexpat/libexpat/releases/download/R_2_6_2/expat-2.6.2.tar.gz && \
67
  tar xzf expat-2.6.2.tar.gz && \
68
  cd expat-2.6.2 && ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static --without-docbook && \
69
  make -j$(nproc) && make install && \
70
  cd /build && \
71
+ # cURL
72
  wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar xzf curl-8.5.0.tar.gz && \
73
  cd curl-8.5.0 && \
74
  ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static \
 
77
  --disable-tftp --without-libpsl --without-libidn2 --without-brotli --without-zstd --without-nghttp2 && \
78
  make -j$(nproc) && make install
79
 
80
+ # 4. Компиляция GIT (С полным набором внутренних библиотек)
81
  RUN cd /build && \
82
  wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.gz && \
83
  tar xzf git-2.43.0.tar.gz && \
84
  cd git-2.43.0 && \
85
+ # 1. Сначала собираем libgit.a и внутренние библиотеки (xdiff)
86
  make -j$(nproc) V=1 \
87
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
88
  NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_ICONV=1 NO_INSTALL_HARDLINKS=1 NO_R_TO_GCC_LINKER=1 \
89
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
90
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
91
+ libgit.a xdiff/lib.a reftable/libreftable.a && \
92
+ # 2. Теперь линкуем бинарники, явно указывая внутренние .a файлы
93
  make -j$(nproc) V=1 \
94
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
95
  NO_GETTEXT=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 NO_ICONV=1 NO_INSTALL_HARDLINKS=1 NO_R_TO_GCC_LINKER=1 \
96
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
97
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
98
+ # ВАЖНО: Добавляем xdiff/lib.a и reftable/libreftable.a в LIBS
99
+ LIBS="libgit.a xdiff/lib.a reftable/libreftable.a -lcurl -lssl -lcrypto -lz -lexpat" \
100
  git git-remote-http git-http-fetch && \
101
+ # Стрипаем
102
  $STRIP git git-remote-http git-http-fetch && \
103
+ # Пакуем
104
  mkdir -p /output/git-bundle && \
 
105
  cp git /output/git-bundle/libgit.so && \
106
  cp git-remote-http /output/git-bundle/libgit-remote-http.so && \
107
  cp git-http-fetch /output/git-bundle/libgit-http-fetch.so && \
 
108
  cd /output && \
109
  zip -r android-git-bundle.zip git-bundle && \
110
  rm -rf git-bundle
111
 
112
+ # 5. Финал
113
  WORKDIR /output
114
+ RUN echo '<html><body><h1>Mandre GIT Bundle (Fix 7: Full Libs)</h1><ul><li><a href="android-git-bundle.zip" download>Download ZIP</a></li></ul></body></html>' > index.html
 
 
 
 
115
  RUN chmod -R 777 /output
 
 
116
  EXPOSE 7860
 
 
117
  CMD ["python3", "-m", "http.server", "7860"]