sterepando commited on
Commit
2b8a0c2
·
verified ·
1 Parent(s): 7bec31a

Update Dockerfile

Browse files
Files changed (1) hide show
  1. 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 (Headers + libpython)
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
- # ИСПРАВЛЕНИЕ: Явно передаем READELF
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
- # Линкуем pycurl с реальной либой питона для решения проблемы _Py_NoneStruct\n\
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
- FINAL="${NAME}-${VER}-cp311-cp311-android_21_30_arm64_v8a.whl" && \
100
- mv "$file" "/output/$FINAL"; \
 
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"]