vapier      14/10/16 19:00:31

  Added:                i2c-tools-3.1.1-python-3.patch
  Log:
  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)

Revision  Changes    Path
1.1                  sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-apps/i2c-tools/files/i2c-tools-3.1.1-python-3.patch?rev=1.1&content-type=text/plain

Index: i2c-tools-3.1.1-python-3.patch
===================================================================
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
 }
 




Reply via email to