Update Dockerfile
Browse files- 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
|
| 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. Компиляция Зависимостей
|
| 55 |
RUN cd /build && \
|
| 56 |
-
#
|
| 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 |
-
#
|
| 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 |
-
#
|
| 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 |
-
#
|
| 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 |
-
# Теперь
|
| 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 |
-
|
|
|
|
| 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.
|
| 114 |
WORKDIR /output
|
| 115 |
-
RUN echo '<html><body><h1>Mandre GIT Bundle (Full
|
| 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"]
|