Update Dockerfile
Browse files- 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 |
-
|
|
|
|
| 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 |
-
#
|
| 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"
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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" && \
|