+++ /dev/null
-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
- }
-
+++ /dev/null
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-DISTUTILS_OPTIONAL="1"
-
-inherit distutils-r1 flag-o-matic toolchain-funcs
-
-DESCRIPTION="I2C tools for bus probing, chip dumping, EEPROM decoding, and more"
-HOMEPAGE="http://www.lm-sensors.org/wiki/I2CTools"
-SRC_URI="http://dl.lm-sensors.org/i2c-tools/releases/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 arm ~arm64 ~mips ~ppc ~ppc64 ~sparc x86"
-IUSE="python"
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-RDEPEND="!<sys-apps/lm_sensors-3
- python? ( ${PYTHON_DEPS} )"
-DEPEND="${RDEPEND}"
-
-src_prepare() {
- default
- epatch "${FILESDIR}"/${PN}-3.1.1-python-3.patch #492632
- use python && distutils-r1_src_prepare
-}
-
-src_configure() {
- use python && distutils-r1_src_configure
-}
-
-src_compile() {
- emake CC=$(tc-getCC) CFLAGS="${CFLAGS}"
- emake -C eepromer CC=$(tc-getCC) CFLAGS="${CFLAGS} -I../include"
- if use python ; then
- cd py-smbus || die
- append-cppflags -I../include
- distutils-r1_src_compile
- fi
-}
-
-src_install() {
- emake install prefix="${D}"/usr
- dosbin eepromer/eepro{g,m{,er}}
- rm -rf "${D}"/usr/include || die # part of linux-headers
- dodoc CHANGES README
- local d
- for d in eeprom eepromer ; do
- docinto ${d}
- dodoc ${d}/README*
- done
-
- if use python ; then
- cd py-smbus || die
- docinto py-smbus
- dodoc README*
- distutils-r1_src_install
- fi
-}