sterepando commited on
Commit
8a7a2b9
·
verified ·
1 Parent(s): 2b8a0c2

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +11 -10
Dockerfile CHANGED
@@ -50,17 +50,19 @@ 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
- # ИСПРАВЛЕНИЕ: Добавлен --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
 
66
  # 7. СБОРКА ПАКЕТОВ
@@ -70,11 +72,11 @@ RUN pip install wheel setuptools
70
  # Fake curl-config
71
  RUN echo '#!/bin/bash\ncase "$1" in --version) echo "libcurl 8.5.0";; --features) echo "SSL libz HTTPS";; --libs|--static-libs) echo "-L'$PREFIX'/lib -lcurl -lssl -lcrypto -lz";; --cflags) echo "-I'$PREFIX'/include -DANDROID";; --prefix) echo "'$PREFIX'";; *) exit 0;; esac' > /usr/bin/curl-config-android && chmod +x /usr/bin/curl-config-android
72
 
73
- # Скрипт сборки
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\
@@ -98,13 +100,12 @@ 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
 
 
50
  CFLAGS="-fPIC -I$PREFIX/include" LDFLAGS="-L$PREFIX/lib" && \
51
  make -j4 install
52
 
53
+ # 6. СБОРКА НАСТОЯЩЕГО PYTHON 3.11.10 ДЛЯ ANDROID (fPIC FIX)
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
+ # СУПЕР ВАЖНО: Добавляем -fPIC в CFLAGS/CXXFLAGS/LDFLAGS для сборки библиотеки
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
+ CFLAGS="-fPIC" CXXFLAGS="-fPIC" LDFLAGS="-fPIC"
65
+ # Собираем полноценную библиотеку
66
  RUN make -j4 libpython3.11.so
67
 
68
  # 7. СБОРКА ПАКЕТОВ
 
72
  # Fake curl-config
73
  RUN echo '#!/bin/bash\ncase "$1" in --version) echo "libcurl 8.5.0";; --features) echo "SSL libz HTTPS";; --libs|--static-libs) echo "-L'$PREFIX'/lib -lcurl -lssl -lcrypto -lz";; --cflags) echo "-I'$PREFIX'/include -DANDROID";; --prefix) echo "'$PREFIX'";; *) exit 0;; esac' > /usr/bin/curl-config-android && chmod +x /usr/bin/curl-config-android
74
 
75
+ # Скрипт сборки wheels
76
  RUN echo '#!/bin/bash\n\
77
  export CC="aarch64-linux-android'${ANDROID_API}'-clang"\n\
78
  export PYTHON_ROOT="/opt/python-android/Python-3.11.10"\n\
79
+ # Линкуемся с реальной библиотекой Python, чтобы разрешить _Py_NoneStruct\n\
80
  export LDSHARED="'$CC' -shared -L$PYTHON_ROOT -lpython3.11"\n\
81
  export CFLAGS="-I$PYTHON_ROOT/Include -I$PYTHON_ROOT -I'$PREFIX'/include -fPIC -DANDROID"\n\
82
  export LDFLAGS="-L$PYTHON_ROOT -L'$PREFIX'/lib -lpython3.11 -lcurl -lssl -lcrypto -lz"\n\
 
100
  for file in *.whl; do \
101
  NAME=$(echo $file | cut -d"-" -f1) && \
102
  VER=$(echo $file | cut -d"-" -f2) && \
103
+ FINAL="${NAME}-${VER}-cp311-cp311-android_21_30_arm64_v8a.whl" && \
104
+ mv "$file" "/output/$FINAL"; \
 
105
  done
106
 
107
+ # Финальная проверка линковки: должна показать зависимость от libpython3.11.so
108
+ RUN echo "Linkage check for production:" && \
109
  unzip -p /output/pycurl-*.whl *.so > /tmp/pycurl.so && \
110
  llvm-readelf -d /tmp/pycurl.so | grep "NEEDED"
111