sterepando commited on
Commit
7f48582
·
verified ·
1 Parent(s): dc9951a

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +20 -9
Dockerfile CHANGED
@@ -24,15 +24,18 @@ RUN wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_V
24
  rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
25
 
26
  # Переменные для компиляции
 
27
  ENV CC="aarch64-linux-android${ANDROID_API}-clang"
28
  ENV CXX="aarch64-linux-android${ANDROID_API}-clang++"
29
  ENV AR="llvm-ar"
30
  ENV RANLIB="llvm-ranlib"
31
  ENV STRIP="llvm-strip"
32
  ENV READELF="llvm-readelf"
 
33
  ENV PREFIX=/opt/android-build
34
 
35
- RUN mkdir -p $PREFIX
 
36
 
37
  # --- 3. ZLIB (Static) ---
38
  WORKDIR /build/zlib
@@ -50,11 +53,10 @@ RUN wget -q https://www.openssl.org/source/openssl-3.2.0.tar.gz && tar -xf opens
50
  && \
51
  make -j4 && make install_sw
52
 
53
- # --- 5. OpenSSH (С ИСПРАВЛЕНИЯМИ) ---
54
  WORKDIR /build/openssh
55
  RUN wget -q https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz && tar -xf openssh-9.6p1.tar.gz && cd openssh-9.6p1 && \
56
- # 1. Говорим configure, что функции есть в Android API 30 (чтобы не собирать кривые аналоги)
57
- # 2. Передаем флаги атрибутов
58
  ./configure \
59
  --host=aarch64-linux-android \
60
  --prefix=$PREFIX \
@@ -63,18 +65,26 @@ RUN wget -q https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.t
63
  --without-zlib-version-check \
64
  --without-pam \
65
  --disable-strip \
 
 
66
  ac_cv_func_closefrom=yes \
67
  ac_cv_func_strlcpy=yes \
68
  ac_cv_func_strlcat=yes \
69
  ac_cv_func_explicit_bzero=yes \
 
70
  ac_cv_c_attribute__sentinel__=yes \
71
  ac_cv_c_attribute__bounded__=yes \
72
  ac_cv_c_attribute__format__=yes \
73
  ac_cv_c_attribute__nonnull__=yes \
74
  ac_cv_c_attribute__visibility__=yes \
75
- LD="$CC" LDFLAGS="-L$PREFIX/lib" CFLAGS="-I$PREFIX/include -D__ANDROID_API__=${ANDROID_API}" && \
76
- # 3. ХАК: Удаляем любое переопределение __attribute__ из config.h, чтобы не ломать NDK заголовки
77
- sed -i '/^#define __attribute__/d' config.h && \
 
 
 
 
 
78
  make -j4 ssh scp sftp && \
79
  $STRIP ssh scp sftp && \
80
  mkdir -p /output/bin && \
@@ -92,7 +102,7 @@ RUN wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar -xf curl-8.5.0.tar
92
  --disable-ldap --disable-ldaps \
93
  --disable-rtsp --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap \
94
  --disable-smtp --disable-gopher --disable-mqtt \
95
- CFLAGS="-I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" && \
96
  make -j4 && make install
97
 
98
  # --- 7. Git ---
@@ -110,7 +120,7 @@ RUN wget -q https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.43.0.tar.
110
  ac_cv_iconv_omits_bom=no \
111
  ac_cv_fread_reads_directories=yes \
112
  ac_cv_snprintf_returns_too_large=no \
113
- CFLAGS="-I$PREFIX/include -NO_GETTEXT" LDFLAGS="-L$PREFIX/lib" && \
114
  make -j4 NO_GETTEXT=YesPlease NO_PYTHON=YesPlease NO_INSTALL_HARDLINKS=YesPlease \
115
  CC="$CC" AR="$AR" STRIP="$STRIP" && \
116
  $STRIP git && \
@@ -160,6 +170,7 @@ RUN zip -r android_tools_arm64.zip bin libexec cacert.pem
160
 
161
  RUN mkdir -p /final_output && \
162
  mv android_tools_arm64.zip /final_output/ && \
 
163
  WHEEL_FILE=$(ls /build/pycrypto/dist/pycryptodome-*.whl | head -n 1) && \
164
  VERSION=$(echo $WHEEL_FILE | grep -oP 'pycryptodome-\K[0-9.]+') && \
165
  NEW_NAME="pycryptodome-${VERSION}-cp311-cp311-android_21-30_arm64_v8a.whl" && \
 
24
  rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
25
 
26
  # Переменные для компиляции
27
+ # ВАЖНО: -D_GNU_SOURCE открывает скрытые функции в заголовках Android (например explicit_bzero)
28
  ENV CC="aarch64-linux-android${ANDROID_API}-clang"
29
  ENV CXX="aarch64-linux-android${ANDROID_API}-clang++"
30
  ENV AR="llvm-ar"
31
  ENV RANLIB="llvm-ranlib"
32
  ENV STRIP="llvm-strip"
33
  ENV READELF="llvm-readelf"
34
+ ENV SYSROOT="/opt/android-ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot"
35
  ENV PREFIX=/opt/android-build
36
 
37
+ # Создаем структуру папок
38
+ RUN mkdir -p $PREFIX/bin $PREFIX/lib $PREFIX/include
39
 
40
  # --- 3. ZLIB (Static) ---
41
  WORKDIR /build/zlib
 
53
  && \
54
  make -j4 && make install_sw
55
 
56
+ # --- 5. OpenSSH (FIXED) ---
57
  WORKDIR /build/openssh
58
  RUN wget -q https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz && tar -xf openssh-9.6p1.tar.gz && cd openssh-9.6p1 && \
59
+ # Конфигурация с принудительным указанием наличия функций
 
60
  ./configure \
61
  --host=aarch64-linux-android \
62
  --prefix=$PREFIX \
 
65
  --without-zlib-version-check \
66
  --without-pam \
67
  --disable-strip \
68
+ --disable-etc-default-login \
69
+ --disable-utmp --disable-wtmp --disable-wtmpx --disable-libutil \
70
  ac_cv_func_closefrom=yes \
71
  ac_cv_func_strlcpy=yes \
72
  ac_cv_func_strlcat=yes \
73
  ac_cv_func_explicit_bzero=yes \
74
+ ac_cv_func_getentropy=yes \
75
  ac_cv_c_attribute__sentinel__=yes \
76
  ac_cv_c_attribute__bounded__=yes \
77
  ac_cv_c_attribute__format__=yes \
78
  ac_cv_c_attribute__nonnull__=yes \
79
  ac_cv_c_attribute__visibility__=yes \
80
+ LD="$CC" \
81
+ LDFLAGS="-L$PREFIX/lib" \
82
+ CFLAGS="-I$PREFIX/include -D_GNU_SOURCE -D__ANDROID_API__=${ANDROID_API}" && \
83
+ # ХАК: Удаляем строки с #define __attribute__, которые configure ошибочно добавляет
84
+ # Использование grep -v более надежно удаляет строки
85
+ cat config.h | grep -v "define __attribute__" > config.h.tmp && mv config.h.tmp config.h && \
86
+ cat config.h | grep -v "define __sentinel__" > config.h.tmp && mv config.h.tmp config.h && \
87
+ # Сборка
88
  make -j4 ssh scp sftp && \
89
  $STRIP ssh scp sftp && \
90
  mkdir -p /output/bin && \
 
102
  --disable-ldap --disable-ldaps \
103
  --disable-rtsp --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap \
104
  --disable-smtp --disable-gopher --disable-mqtt \
105
+ CFLAGS="-I$PREFIX/include -D_GNU_SOURCE" LDFLAGS="-L$PREFIX/lib" && \
106
  make -j4 && make install
107
 
108
  # --- 7. Git ---
 
120
  ac_cv_iconv_omits_bom=no \
121
  ac_cv_fread_reads_directories=yes \
122
  ac_cv_snprintf_returns_too_large=no \
123
+ CFLAGS="-I$PREFIX/include -NO_GETTEXT -D_GNU_SOURCE" LDFLAGS="-L$PREFIX/lib" && \
124
  make -j4 NO_GETTEXT=YesPlease NO_PYTHON=YesPlease NO_INSTALL_HARDLINKS=YesPlease \
125
  CC="$CC" AR="$AR" STRIP="$STRIP" && \
126
  $STRIP git && \
 
170
 
171
  RUN mkdir -p /final_output && \
172
  mv android_tools_arm64.zip /final_output/ && \
173
+ # PyCryptodome
174
  WHEEL_FILE=$(ls /build/pycrypto/dist/pycryptodome-*.whl | head -n 1) && \
175
  VERSION=$(echo $WHEEL_FILE | grep -oP 'pycryptodome-\K[0-9.]+') && \
176
  NEW_NAME="pycryptodome-${VERSION}-cp311-cp311-android_21-30_arm64_v8a.whl" && \