sterepando commited on
Commit
807cb4b
·
verified ·
1 Parent(s): 0f1f8fe

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +23 -8
Dockerfile CHANGED
@@ -39,7 +39,7 @@ 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
 
@@ -77,30 +77,45 @@ 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
- # 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 && \
@@ -111,7 +126,7 @@ RUN cd /build && \
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"]
 
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 -D__ANDROID__"
43
  ENV LDFLAGS="-L$PREFIX/lib -static-libstdc++"
44
  ENV CPPFLAGS="-I$PREFIX/include"
45
 
 
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
+ # --- MANDRE PATCH: Linker Bypass ---
86
+ # Мы внедряем код прямо в prepare_cmd функцию в run-command.c
87
+ # Ищем строку "if (cmd->no_stdin)" (она есть в начале prepare_cmd) и вставляем перед ней патч
88
+ sed -i '/if (cmd->no_stdin)/i \
89
+ /* MANDRE PATCH START */ \
90
+ if (cmd->file && strncmp(cmd->file, "/data/", 6) == 0) { \
91
+ const char **new_argv = malloc(sizeof(char *) * (256)); \
92
+ new_argv[0] = "/system/bin/linker64"; \
93
+ new_argv[1] = cmd->file; \
94
+ int i = 0; \
95
+ while (cmd->argv[i] && i < 250) { \
96
+ new_argv[i + 2] = cmd->argv[i]; \
97
+ i++; \
98
+ } \
99
+ new_argv[i + 2] = NULL; \
100
+ cmd->argv = new_argv; \
101
+ cmd->file = new_argv[0]; \
102
+ } \
103
+ /* MANDRE PATCH END */' run-command.c && \
104
+ # --- КОМПИЛЯЦИЯ ---
105
  make -j$(nproc) V=1 \
106
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
107
  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 \
108
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
109
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
110
  libgit.a xdiff/lib.a reftable/libreftable.a && \
 
111
  make -j$(nproc) V=1 \
112
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
113
  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 \
114
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
115
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
 
116
  LIBS="libgit.a xdiff/lib.a reftable/libreftable.a -lcurl -lssl -lcrypto -lz -lexpat" \
117
  git git-remote-http git-http-fetch && \
 
118
  $STRIP git git-remote-http git-http-fetch && \
 
119
  mkdir -p /output/git-bundle && \
120
  cp git /output/git-bundle/libgit.so && \
121
  cp git-remote-http /output/git-bundle/libgit-remote-http.so && \
 
126
 
127
  # 5. Финал
128
  WORKDIR /output
129
+ RUN echo '<html><body><h1>Mandre GIT Bundle (Fix 8: Linker Patch)</h1><ul><li><a href="android-git-bundle.zip" download>Download ZIP</a></li></ul></body></html>' > index.html
130
  RUN chmod -R 777 /output
131
  EXPOSE 7860
132
  CMD ["python3", "-m", "http.server", "7860"]