summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2014-10-16 19:00:31 +0000
committerMike Frysinger <vapier@gentoo.org>2014-10-16 19:00:31 +0000
commit6115017d299c505fdbaaca0a676e4fecfd175996 (patch)
treece6d8bcf056c76f89234e67dfe07cbdd7fb488bc /sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch
parentAdd subslot operator to libxcb dependency. (diff)
downloadgentoo-2-6115017d299c505fdbaaca0a676e4fecfd175996.tar.gz
gentoo-2-6115017d299c505fdbaaca0a676e4fecfd175996.tar.bz2
gentoo-2-6115017d299c505fdbaaca0a676e4fecfd175996.zip
Version bump & port to distutils-r1 #524722 by Paul Zander. Port to python-3.x #492632 by Marcel Greter.
(Portage version: 2.2.14_rc1/cvs/Linux x86_64, signed Manifest commit with key D2E96200)
Diffstat (limited to 'sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch')
-rw-r--r--sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch129
1 files changed, 129 insertions, 0 deletions
diff --git a/sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch b/sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch
new file mode 100644
index 000000000000..1f3de76052e7
--- /dev/null
+++ b/sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch
@@ -0,0 +1,129 @@
+support python-3.x
+
+http://comments.gmane.org/gmane.linux.drivers.i2c/11290
+https://bugs.gentoo.org/492632
+
+--- a/py-smbus/smbusmodule.c
++++ b/py-smbus/smbusmodule.c
+@@ -32,15 +32,18 @@
+ #define I2C_SMBUS_I2C_BLOCK_DATA 8
+ #endif
+
+-PyDoc_STRVAR(SMBus_module_doc,
+- "This module defines an object type that allows SMBus transactions\n"
+- "on hosts running the Linux kernel. The host kernel must have I2C\n"
+- "support, I2C device interface support, and a bus adapter driver.\n"
+- "All of these can be either built-in to the kernel, or loaded from\n"
+- "modules.\n"
+- "\n"
+- "Because the I2C device interface is opened R/W, users of this\n"
+- "module usually must have root permissions.\n");
++#define module_doc \
++ "This module defines an object type that allows SMBus transactions\n" \
++ "on hosts running the Linux kernel. The host kernel must have I2C\n" \
++ "support, I2C device interface support, and a bus adapter driver.\n" \
++ "All of these can be either built-in to the kernel, or loaded from\n" \
++ "modules.\n" \
++ "\n" \
++ "Because the I2C device interface is opened R/W, users of this\n" \
++ "module usually must have root permissions.\n"
++#if PY_MAJOR_VERSION <= 2
++PyDoc_STRVAR(SMBus_module_doc, module_doc);
++#endif
+
+ typedef struct {
+ PyObject_HEAD
+@@ -91,7 +94,11 @@ SMBus_dealloc(SMBus *self)
+ PyObject *ref = SMBus_close(self);
+ Py_XDECREF(ref);
+
++#if PY_MAJOR_VERSION >= 3
++ Py_TYPE(self)->tp_free((PyObject*)self);
++#else
+ self->ob_type->tp_free((PyObject *)self);
++#endif
+ }
+
+ #define MAXPATH 16
+@@ -431,11 +438,19 @@ SMBus_list_to_data(PyObject *list, union i2c_smbus_data *data)
+
+ for (ii = 0; ii < len; ii++) {
+ PyObject *val = PyList_GET_ITEM(list, ii);
++#if PY_MAJOR_VERSION >= 3
++ if (!PyLong_Check(val)) {
++#else
+ if (!PyInt_Check(val)) {
++#endif
+ PyErr_SetString(PyExc_TypeError, msg);
+ return 0; /* fail */
+ }
++#if PY_MAJOR_VERSION >= 3
++ data->block[ii+1] = (__u8)PyLong_AS_LONG(val);
++#else
+ data->block[ii+1] = (__u8)PyInt_AS_LONG(val);
++#endif
+ }
+
+ return 1; /* success */
+@@ -633,9 +648,27 @@ static PyGetSetDef SMBus_getset[] = {
+ {NULL},
+ };
+
++#if PY_MAJOR_VERSION >= 3
++static struct PyModuleDef SMBusModule = {
++ PyModuleDef_HEAD_INIT,
++ "smbus.SMBus", /* m_name */
++ module_doc, /* m_doc */
++ -1, /* m_size */
++ NULL, /* m_methods */
++ NULL, /* m_reload */
++ NULL, /* m_traverse */
++ NULL, /* m_clear */
++ NULL, /* m_free */
++};
++#endif
++
+ static PyTypeObject SMBus_type = {
++#if PY_MAJOR_VERSION >= 3
++ PyVarObject_HEAD_INIT(NULL, 0)
++#else
+ PyObject_HEAD_INIT(NULL)
+ 0, /* ob_size */
++#endif
+ "smbus.SMBus", /* tp_name */
+ sizeof(SMBus), /* tp_basicsize */
+ 0, /* tp_itemsize */
+@@ -683,16 +716,32 @@ static PyMethodDef SMBus_module_methods[] = {
+ #define PyMODINIT_FUNC void
+ #endif
+ PyMODINIT_FUNC
+-initsmbus(void)
++#if PY_MAJOR_VERSION >= 3
++PyInit_smbus(void)
++#else
++initsmbus(void)
++#endif
+ {
+ PyObject* m;
+
++#if PY_MAJOR_VERSION >= 3
++ if (PyType_Ready(&SMBus_type) < 0)
++ return NULL;
++
++ m = PyModule_Create(&SMBusModule);
++ if (m == NULL)
++ return NULL;
++#else
+ if (PyType_Ready(&SMBus_type) < 0)
+ return;
+
+ m = Py_InitModule3("smbus", SMBus_module_methods, SMBus_module_doc);
++#endif
+
+ Py_INCREF(&SMBus_type);
+ PyModule_AddObject(m, "SMBus", (PyObject *)&SMBus_type);
++#if PY_MAJOR_VERSION >= 3
++ return m;
++#endif
+ }
+