Description
Using the new python3 toolchain, I am trying to use PyCryptodome (3.7+) as a dependency.
As in #1685, PyCryptodome >= 3.6.4 runs into compilation issues; I am trying to fix these too, though this is not that relevant here.
PyCryptodome >=3.6.0 crashes at runtime (since commit Legrandin/pycryptodome@f5aa2c1). So actually the currently pinned version in the recipe does not work:
The issue at runtime is with ctypes.
Say I have a main script that just does the following (https://github.com/Legrandin/pycryptodome/blob/95ccce7ae82d3a36f1a8652dd2c645222d0128dd/lib/Crypto/Util/_raw_api.py#L200):
import ctypes
ctypes.pythonapi.PyObject_GetBuffer
This works with cpython on my laptop, but with the p4a-compiled python on Android it fails:
06-14 19:06:27.053 15246 15274 I python : Android kivy bootstrap done. __name__ is __main__
06-14 19:06:27.053 15246 15274 I python : AND: Ran string
06-14 19:06:27.053 15246 15274 I python : Run user program, change dir and execute entrypoint
06-14 19:06:27.092 15246 15274 I python : Traceback (most recent call last):
06-14 19:06:27.092 15246 15274 I python : File "/home/user/wspace/electrum/.buildozer/android/app/main.py", line 84, in <module>
06-14 19:06:27.093 15246 15274 I python : File "/home/user/wspace/electrum/.buildozer/android/platform/build/build/other_builds/python3-libffi-openssl-sqlite3/armeabi-v7a__ndk_target_21/python3/Lib/ctypes/__init__.py", line 369, in __getattr__
06-14 19:06:27.093 15246 15274 I python : File "/home/user/wspace/electrum/.buildozer/android/platform/build/build/other_builds/python3-libffi-openssl-sqlite3/armeabi-v7a__ndk_target_21/python3/Lib/ctypes/__init__.py", line 374, in __getitem__
06-14 19:06:27.094 15246 15274 I python : AttributeError: undefined symbol: PyObject_GetBuffer
I have also tried to access some other attributes of ctypes.pythonapi
, such as Py_IncRef
, which raises the same exception.
Any idea what's going on here? Why is ctypes.pythonapi
non-functional?