You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All of the C extensions are combined into one library, to get around the Android dlopen() limit. However, this causes issues when you have modules in C extensions with the same name.
For example, if you have two C extensions a and b, and they have modules a.mod and b.mod, the application will not work. Both extensions will produce a file mod.so, and will be copied into the same directory and so one will overwrite the other. I did some testing by putting each package/recipe's output in its own directory, but that has issues as well. The C extension modules have an init function which is not namespaced - it will be called init_mod() in both modules, so the functions overlap when added to the same library.
I'm not really sure what a good fix is for this, I just wanted to make sure that it's a known issue.
The text was updated successfully, but these errors were encountered:
Just had a thought - maybe a setting in the recipe could be used to create extra .so files. For example, if you added SEPARATE_EXTENSION=1 to the recipe for Kivy, then all of the Kivy .so files would be combined into libpymodules-kivy.so. Then the patched _PyImport_GetDynLoadFunc() could first check to see if the specific file exists for that package, then check the main libpymodules.so, then finally try to load the specific .so file.
All of the C extensions are combined into one library, to get around the Android
dlopen()
limit. However, this causes issues when you have modules in C extensions with the same name.For example, if you have two C extensions
a
andb
, and they have modulesa.mod
andb.mod
, the application will not work. Both extensions will produce a filemod.so
, and will be copied into the same directory and so one will overwrite the other. I did some testing by putting each package/recipe's output in its own directory, but that has issues as well. The C extension modules have an init function which is not namespaced - it will be calledinit_mod()
in both modules, so the functions overlap when added to the same library.I'm not really sure what a good fix is for this, I just wanted to make sure that it's a known issue.
The text was updated successfully, but these errors were encountered: