Python import error for PyInit_wpaspy
Jared Bents <[email protected]>
| Newsgroups | gmane.linux.drivers.hostap |
|---|---|
| Message-ID | <CAM=7fbcPzoWjyzWUDt9hR1X7biFbhqMtRC2revfLQHfTc+Herw@mail.gmail.com> |
Hi all,
I'm attempting to cross compile wpaspy with Buildroot and when I
attempt to import it on the system I compiled it for, I get the
following error
# python3
Python 3.8.1 (default, Mar 30 2020, 09:50:30)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import wpaspy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dynamic module does not define module export function ()
From initial searches on the internet, I thought I was possibly
accidentally using python 2 instead of python 3 during the compile
step which would cause the error. However, I looked at my build output
and added a python version print to the setup.py and both checked out.
Part of the build output showing that python 3.8.1 is used to build
PYTHONPATH="/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/target/usr/lib/python3.8/"
PYTHONNOUSERSITE=1
_PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata__linux_powerpc-linux-gnu"
_python_sysroot=/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/powerpc-buildroot-linux-gnu/sysroot
_python_prefix=/usr _python_exec_prefix=/usr
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/bin/python
setup.py build --executable=/usr/bin/python )
Python version3.8.1 (default, Mar 30 2020, 09:47:30).
[GCC 7.4.0]
running build
running build_ext
Below is my verification of the symlinks provided by Buildroot
jmbents@gravy:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$
ls -l /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/bin/python
lrwxrwxrwx 1 jmbents genusers 7 Mar 30 09:47
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/bin/python
-> python3
jmbents@gravy:~/rclinux/target_build/apm86290_common_platform_debug_defconfig$
ls -l /accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/bin/python3
lrwxrwxrwx 1 jmbents genusers 9 Mar 30 09:47
/accts/jmbents/rclinux/target_build/apm86290_common_platform_debug_defconfig/host/bin/python3
-> python3.8
Has anyone had success cross compiling wpaspy with python 3 support? I
had run into a couple prior problems when using python 3 but sorted
those out and once I get everything working, I plan on upstreaming
them. I've included the diffs below for reference.
diff --git a/wpaspy/wpaspy.c b/wpaspy/wpaspy.c
index 278089b48..8a7c1fe1a 100644
--- a/wpaspy/wpaspy.c
+++ b/wpaspy/wpaspy.c
@@ -44,8 +44,8 @@ static void wpaspy_close(struct wpaspy_obj *self)
>......>.......self->ctrl = NULL;
>......}
.
->......if (self->ob_type)
->......>.......self->ob_type->tp_free((PyObject *) self);
+>......if (Py_TYPE(self))
+>......>.......Py_TYPE(self)->tp_free((PyObject *) self);
}
.
.
@@ -198,12 +198,22 @@ static PyMethodDef module_methods[] = {
};
.
.
+static struct PyModuleDef wpaspy =
+{
+ PyModuleDef_HEAD_INIT,
+ "wpaspy",
+ "",
+ -1,
+ module_methods
+};
+
+
PyMODINIT_FUNC initwpaspy(void)
{
>......PyObject *mod;
.
>......PyType_Ready(&wpaspy_ctrl);
->......mod = Py_InitModule("wpaspy", module_methods);
+>......mod = PyModule_Create(&wpaspy);
>......wpaspy_error = PyErr_NewException("wpaspy.error", NULL, NULL);
.
>......Py_INCREF(&wpaspy_ctrl);
Thank you,
Jared