sterepando commited on
Commit
4a189bc
·
verified ·
1 Parent(s): accdd03

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +25 -103
Dockerfile CHANGED
@@ -1,117 +1,39 @@
1
- # Используем Ubuntu 22.04
2
  FROM ubuntu:22.04
3
-
4
- # Настройка окружения
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 \
12
- curl \
13
- unzip \
14
- python3 \
15
- autoconf \
16
- libtool \
17
- pkg-config \
18
- gettext \
19
- tcl \
20
- libssl-dev \
21
- zlib1g-dev \
22
- perl \
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
 
 
30
  ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
31
  ENV TARGET=aarch64-linux-android
32
  ENV API=30
33
- ENV PATH=$TOOLCHAIN/bin:$PATH
34
- ENV AR=$TOOLCHAIN/bin/llvm-ar
35
  ENV CC=$TOOLCHAIN/bin/$TARGET$API-clang
36
- ENV AS=$CC
37
- ENV CXX=$TOOLCHAIN/bin/$TARGET$API-clang++
38
- ENV LD=$TOOLCHAIN/bin/ld
39
- ENV RANLIB=$TOOLCHAIN/bin/llvm-ranlib
40
  ENV STRIP=$TOOLCHAIN/bin/llvm-strip
41
  ENV PREFIX=/opt/git-build
42
- ENV CFLAGS="-O2 -fPIC"
43
- ENV LDFLAGS="-L$PREFIX/lib -static-libstdc++"
44
- ENV CPPFLAGS="-I$PREFIX/include"
45
-
46
- # Создаем папки и качаем NDK
47
- RUN mkdir -p $PREFIX /build /output && \
48
- cd /tmp && \
49
- wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip && \
50
- unzip -q android-ndk-${NDK_VERSION}-linux.zip && \
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 \
75
- --with-openssl=$PREFIX --with-zlib=$PREFIX --disable-dict --disable-file --disable-ftp --disable-gopher \
76
- --disable-imap --disable-ldap --disable-pop3 --disable-rtsp --disable-smb --disable-smtp --disable-telnet \
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"]
 
 
1
  FROM ubuntu:22.04
 
 
2
  ENV DEBIAN_FRONTEND=noninteractive
3
+ RUN apt-get update && apt-get install -y build-essential wget curl unzip python3 autoconf libtool pkg-config gettext tcl libssl-dev zlib1g-dev perl zip
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
+ # NDK Setup
6
  ENV NDK_VERSION=r25c
7
  ENV ANDROID_NDK_HOME=/opt/ndk
8
+ RUN wget -q https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux.zip && \
9
+ unzip -q android-ndk-${NDK_VERSION}-linux.zip -d /opt && mv /opt/android-ndk-${NDK_VERSION} /opt/ndk
10
+
11
  ENV TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64
12
  ENV TARGET=aarch64-linux-android
13
  ENV API=30
 
 
14
  ENV CC=$TOOLCHAIN/bin/$TARGET$API-clang
15
+ ENV AR=$TOOLCHAIN/bin/llvm-ar
 
 
 
16
  ENV STRIP=$TOOLCHAIN/bin/llvm-strip
17
  ENV PREFIX=/opt/git-build
18
+ ENV LDFLAGS="-static-libstdc++ -L$PREFIX/lib"
19
+ ENV CFLAGS="-O3 -fPIC -I$PREFIX/include"
 
 
 
 
 
 
 
 
 
20
 
21
+ # 1. Build ZLIB, OpenSSL, Expat, CURL (Static)
22
+ RUN mkdir -p /build && cd /build && \
23
+ wget -q https://zlib.net/zlib-1.3.1.tar.gz && tar xf zlib-1.3.1.tar.gz && cd zlib-1.3.1 && ./configure --prefix=$PREFIX --static && make -j$(nproc) install && \
24
+ cd /build && wget -q https://www.openssl.org/source/openssl-1.1.1w.tar.gz && tar xf openssl-1.1.1w.tar.gz && cd openssl-1.1.1w && ./Configure android-arm64 no-shared --prefix=$PREFIX && make -j$(nproc) install_sw && \
25
+ 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 && cd expat-2.6.2 && ./configure --host=$TARGET --prefix=$PREFIX --enable-static --disable-shared && make -j$(nproc) install && \
26
+ cd /build && wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar xf curl-8.5.0.tar.gz && cd curl-8.5.0 && ./configure --host=$TARGET --prefix=$PREFIX --disable-shared --enable-static --with-openssl=$PREFIX --with-zlib=$PREFIX && make -j$(nproc) install
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
+ # 2. Build GIT (FIXED LINKING)
29
+ 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 && cd git-2.43.0 && \
30
+ make configure && ./configure --host=$TARGET --prefix=$PREFIX --with-curl=$PREFIX --with-ssl=$PREFIX --with-zlib=$PREFIX --with-expat=$PREFIX \
31
+ ac_cv_fread_reads_directories=yes ac_cv_snprintf_returns_bogus=no NO_GETTEXT=1 NO_ICONV=1 NO_TCLTK=1 NO_PYTHON=1 NO_PERL=1 && \
32
+ # Собираем части по отдельности, чтобы не потерять xdiff
33
+ make -j$(nproc) libgit.a xdiff/lib.a reftable/libreftable.a && \
34
+ # Финальная сборка с явным указанием статических либ
35
+ $CC $CFLAGS $LDFLAGS -o git git.c common-main.c libgit.a xdiff/lib.a reftable/libreftable.a -lcurl -lssl -lcrypto -lz -lexpat && \
36
+ $CC $CFLAGS $LDFLAGS -o git-remote-http remote-curl.c libgit.a xdiff/lib.a reftable/libreftable.a -lcurl -lssl -lcrypto -lz -lexpat && \
37
+ $STRIP git git-remote-http
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
+ RUN mkdir -p /output && cp /build/git-2.43.0/git /output/libgit.so && cp /build/git-2.43.0/git-remote-http /output/libgit-remote-http.so