Spaces:
Paused
Paused
Update Dockerfile
Browse files- Dockerfile +15 -7
Dockerfile
CHANGED
|
@@ -20,7 +20,7 @@ RUN wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_V
|
|
| 20 |
mv android-ndk-${ANDROID_NDK_VERSION} android-ndk && \
|
| 21 |
rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
|
| 22 |
|
| 23 |
-
#
|
| 24 |
ENV CC="aarch64-linux-android${ANDROID_API}-clang"
|
| 25 |
ENV CXX="aarch64-linux-android${ANDROID_API}-clang++"
|
| 26 |
ENV AR="llvm-ar"
|
|
@@ -50,14 +50,16 @@ RUN wget -q https://curl.se/download/curl-8.5.0.tar.gz && tar -xf curl-8.5.0.tar
|
|
| 50 |
CFLAGS="-fPIC -I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" && \
|
| 51 |
make -j4 install
|
| 52 |
|
| 53 |
-
# 6. СБОРКА PYTHON 3.11.10 ДЛЯ ANDROID
|
| 54 |
WORKDIR /opt/python-android
|
| 55 |
RUN wget -q https://www.python.org/ftp/python/3.11.10/Python-3.11.10.tgz && tar -xf Python-3.11.10.tgz
|
| 56 |
WORKDIR /opt/python-android/Python-3.11.10
|
| 57 |
-
# ИСПРАВЛЕНИЕ:
|
| 58 |
RUN ./configure --host=aarch64-linux-android --build=x86_64-linux-gnu \
|
| 59 |
--with-build-python=python3 --enable-shared --without-ensurepip \
|
|
|
|
| 60 |
ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \
|
|
|
|
| 61 |
CC="$CC" CXX="$CXX" AR="$AR" RANLIB="$RANLIB" READELF="$READELF"
|
| 62 |
RUN make -j4 libpython3.11.so
|
| 63 |
|
|
@@ -72,7 +74,7 @@ RUN echo '#!/bin/bash\ncase "$1" in --version) echo "libcurl 8.5.0";; --features
|
|
| 72 |
RUN echo '#!/bin/bash\n\
|
| 73 |
export CC="aarch64-linux-android'${ANDROID_API}'-clang"\n\
|
| 74 |
export PYTHON_ROOT="/opt/python-android/Python-3.11.10"\n\
|
| 75 |
-
# Линкуем
|
| 76 |
export LDSHARED="'$CC' -shared -L$PYTHON_ROOT -lpython3.11"\n\
|
| 77 |
export CFLAGS="-I$PYTHON_ROOT/Include -I$PYTHON_ROOT -I'$PREFIX'/include -fPIC -DANDROID"\n\
|
| 78 |
export LDFLAGS="-L$PYTHON_ROOT -L'$PREFIX'/lib -lpython3.11 -lcurl -lssl -lcrypto -lz"\n\
|
|
@@ -90,15 +92,21 @@ pip wheel pycryptodome --no-binary :all: --no-deps -w dist/ --plat-name android_
|
|
| 90 |
|
| 91 |
RUN chmod +x build.sh && ./build.sh
|
| 92 |
|
| 93 |
-
# 8. ПЕРЕИМЕНОВАНИЕ
|
| 94 |
WORKDIR /output
|
| 95 |
RUN cd /build/wheels/dist && \
|
| 96 |
for file in *.whl; do \
|
| 97 |
NAME=$(echo $file | cut -d"-" -f1) && \
|
| 98 |
VER=$(echo $file | cut -d"-" -f2) && \
|
| 99 |
-
|
| 100 |
-
|
|
|
|
| 101 |
done
|
| 102 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
# 9. Выдача
|
| 104 |
CMD ["python3", "-m", "http.server", "7860", "--directory", "/output"]
|
|
|
|
| 20 |
mv android-ndk-${ANDROID_NDK_VERSION} android-ndk && \
|
| 21 |
rm android-ndk-${ANDROID_NDK_VERSION}-linux.zip
|
| 22 |
|
| 23 |
+
# Инструменты компиляции
|
| 24 |
ENV CC="aarch64-linux-android${ANDROID_API}-clang"
|
| 25 |
ENV CXX="aarch64-linux-android${ANDROID_API}-clang++"
|
| 26 |
ENV AR="llvm-ar"
|
|
|
|
| 50 |
CFLAGS="-fPIC -I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" && \
|
| 51 |
make -j4 install
|
| 52 |
|
| 53 |
+
# 6. СБОРКА НАСТОЯЩЕГО PYTHON 3.11.10 ДЛЯ ANDROID
|
| 54 |
WORKDIR /opt/python-android
|
| 55 |
RUN wget -q https://www.python.org/ftp/python/3.11.10/Python-3.11.10.tgz && tar -xf Python-3.11.10.tgz
|
| 56 |
WORKDIR /opt/python-android/Python-3.11.10
|
| 57 |
+
# ИСПРАВЛЕНИЕ: Добавлен --disable-ipv6 и ac_cv_buggy_getaddrinfo=no
|
| 58 |
RUN ./configure --host=aarch64-linux-android --build=x86_64-linux-gnu \
|
| 59 |
--with-build-python=python3 --enable-shared --without-ensurepip \
|
| 60 |
+
--disable-ipv6 \
|
| 61 |
ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \
|
| 62 |
+
ac_cv_buggy_getaddrinfo=no \
|
| 63 |
CC="$CC" CXX="$CXX" AR="$AR" RANLIB="$RANLIB" READELF="$READELF"
|
| 64 |
RUN make -j4 libpython3.11.so
|
| 65 |
|
|
|
|
| 74 |
RUN echo '#!/bin/bash\n\
|
| 75 |
export CC="aarch64-linux-android'${ANDROID_API}'-clang"\n\
|
| 76 |
export PYTHON_ROOT="/opt/python-android/Python-3.11.10"\n\
|
| 77 |
+
# Линкуем пакеты с РЕАЛЬНОЙ либой питона для разрешения символов (_Py_NoneStruct и т.д.)\n\
|
| 78 |
export LDSHARED="'$CC' -shared -L$PYTHON_ROOT -lpython3.11"\n\
|
| 79 |
export CFLAGS="-I$PYTHON_ROOT/Include -I$PYTHON_ROOT -I'$PREFIX'/include -fPIC -DANDROID"\n\
|
| 80 |
export LDFLAGS="-L$PYTHON_ROOT -L'$PREFIX'/lib -lpython3.11 -lcurl -lssl -lcrypto -lz"\n\
|
|
|
|
| 92 |
|
| 93 |
RUN chmod +x build.sh && ./build.sh
|
| 94 |
|
| 95 |
+
# 8. ПЕРЕИМЕНОВАНИЕ И ПРОВЕРКА
|
| 96 |
WORKDIR /output
|
| 97 |
RUN cd /build/wheels/dist && \
|
| 98 |
for file in *.whl; do \
|
| 99 |
NAME=$(echo $file | cut -d"-" -f1) && \
|
| 100 |
VER=$(echo $file | cut -d"-" -f2) && \
|
| 101 |
+
# Формат для Chaquopy 16 / Python 3.11.10\n\
|
| 102 |
+
FINAL_NAME="${NAME}-${VER}-cp311-cp311-android_21_30_arm64_v8a.whl" && \
|
| 103 |
+
mv "$file" "/output/$FINAL_NAME"; \
|
| 104 |
done
|
| 105 |
|
| 106 |
+
# Проверка линковки в логах
|
| 107 |
+
RUN echo "Checking dependencies of built pycurl.so:" && \
|
| 108 |
+
unzip -p /output/pycurl-*.whl *.so > /tmp/pycurl.so && \
|
| 109 |
+
llvm-readelf -d /tmp/pycurl.so | grep "NEEDED"
|
| 110 |
+
|
| 111 |
# 9. Выдача
|
| 112 |
CMD ["python3", "-m", "http.server", "7860", "--directory", "/output"]
|