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

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +8 -16
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 -D__ANDROID__"
43
  ENV LDFLAGS="-L$PREFIX/lib -static-libstdc++"
44
  ENV CPPFLAGS="-I$PREFIX/include"
45
 
@@ -77,38 +77,30 @@ 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
- # --- MANDRE PATCH: Linker Bypass (Corrected for Git 2.43) ---
86
- # Мы используем API strvec, который уже есть в git
87
- sed -i '/if (cmd->no_stdin)/i \
88
- /* MANDRE PATCH START */ \
89
- if (cmd->args.v[0] && strncmp(cmd->args.v[0], "/data/", 6) == 0) { \
90
- struct strvec new_args = STRVEC_INIT; \
91
- strvec_push(&new_args, "/system/bin/linker64"); \
92
- strvec_pushv(&new_args, cmd->args.v); \
93
- strvec_clear(&cmd->args); \
94
- cmd->args = new_args; \
95
- } \
96
- /* MANDRE PATCH END */' run-command.c && \
97
- # --- КОМПИЛЯЦИЯ ---
98
  make -j$(nproc) V=1 \
99
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
100
  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 \
101
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
102
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
103
  libgit.a xdiff/lib.a reftable/libreftable.a && \
 
104
  make -j$(nproc) V=1 \
105
  CC="$CC" AR="$AR" CURLDIR="$PREFIX" OPENSSLDIR="$PREFIX" ZLIB_PATH="$PREFIX" EXPATDIR="$PREFIX" \
106
  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 \
107
  NO_PTHREADS=1 NO_SYNC_FILE_RANGE=1 HAVE_ALLOCA_H=1 \
108
  LDFLAGS="$LDFLAGS -L$PREFIX/lib" CFLAGS="$CFLAGS -I$PREFIX/include" \
 
109
  LIBS="libgit.a xdiff/lib.a reftable/libreftable.a -lcurl -lssl -lcrypto -lz -lexpat" \
110
  git git-remote-http git-http-fetch && \
 
111
  $STRIP git git-remote-http git-http-fetch && \
 
112
  mkdir -p /output/git-bundle && \
113
  cp git /output/git-bundle/libgit.so && \
114
  cp git-remote-http /output/git-bundle/libgit-remote-http.so && \
@@ -119,7 +111,7 @@ RUN cd /build && \
119
 
120
  # 5. Финал
121
  WORKDIR /output
122
- RUN echo '<html><body><h1>Mandre GIT Bundle (Fix 9: Corrected Patch)</h1><ul><li><a href="android-git-bundle.zip" download>Download ZIP</a></li></ul></body></html>' > index.html
123
  RUN chmod -R 777 /output
124
  EXPOSE 7860
125
  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"
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
+ # 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
 
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"]