aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2019-11-30 11:27:48 -0800
committerKhem Raj <raj.khem@gmail.com>2019-12-01 11:24:26 -0800
commit18805e625b1da4964864bc9f0b165635e814edd8 (patch)
treedff8b1ff52fe9a0c151116427d8329bc90cda194
parent459dbf10783a89540d9334e823524ec1dbb21502 (diff)
downloadmeta-openembedded-18805e625b1da4964864bc9f0b165635e814edd8.tar.gz
python-evdev: Fix build for 32bit arches with 64bit time_t
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r--meta-python/recipes-devtools/python/python-evdev.inc4
-rw-r--r--meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch83
2 files changed, 87 insertions, 0 deletions
diff --git a/meta-python/recipes-devtools/python/python-evdev.inc b/meta-python/recipes-devtools/python/python-evdev.inc
index 953094ba74..a536815358 100644
--- a/meta-python/recipes-devtools/python/python-evdev.inc
+++ b/meta-python/recipes-devtools/python/python-evdev.inc
@@ -3,6 +3,10 @@ HOMEPAGE = "https://github.com/gvalkov/python-evdev"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENSE;md5=18debddbb3f52c661a129724a883a8e2"
+FILESEXTRAPATHS_prepend := "${THISDIR}/python-evdev:"
+
+SRC_URI += " file://0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch"
+
SRC_URI[md5sum] = "53e440943dfa2514f95b3c448d6a36cb"
SRC_URI[sha256sum] = "b03f5e1be5b4a5327494a981b831d251a142b09e8778eda1a8b53eba91100166"
diff --git a/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch b/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
new file mode 100644
index 0000000000..154172ca88
--- /dev/null
+++ b/meta-python/recipes-devtools/python/python-evdev/0001-Fix-build-on-32bit-arches-with-64bit-time_t.patch
@@ -0,0 +1,83 @@
+From 435e78aaf6745e4da0fe3d4455473011626c77d1 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 30 Nov 2019 11:21:20 -0800
+Subject: [PATCH] Fix build on 32bit arches with 64bit time_t
+
+time element is deprecated on new input_event structure in kernel's
+input.h [1]
+
+[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
+
+Upstream-Status: Submitted [https://github.com/gvalkov/python-evdev/pull/112]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ evdev/input.c | 13 +++++++++----
+ evdev/uinput.c | 9 ++++++++-
+ 2 files changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/evdev/input.c b/evdev/input.c
+index 67b9348..432db92 100644
+--- a/evdev/input.c
++++ b/evdev/input.c
+@@ -24,6 +24,11 @@
+ #include <linux/input.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
++
+ #define MAX_NAME_SIZE 256
+
+ extern char* EV_NAME[EV_CNT];
+@@ -60,8 +65,8 @@ device_read(PyObject *self, PyObject *args)
+ return NULL;
+ }
+
+- PyObject* sec = PyLong_FromLong(event.time.tv_sec);
+- PyObject* usec = PyLong_FromLong(event.time.tv_usec);
++ PyObject* sec = PyLong_FromLong(event.input_event_sec);
++ PyObject* usec = PyLong_FromLong(event.input_event_usec);
+ PyObject* val = PyLong_FromLong(event.value);
+ PyObject* py_input_event = NULL;
+
+@@ -102,8 +107,8 @@ device_read_many(PyObject *self, PyObject *args)
+
+ // Construct a list of event tuples, which we'll make sense of in Python
+ for (unsigned i = 0 ; i < nread/event_size ; i++) {
+- sec = PyLong_FromLong(event[i].time.tv_sec);
+- usec = PyLong_FromLong(event[i].time.tv_usec);
++ sec = PyLong_FromLong(event[i].input_event_sec);
++ usec = PyLong_FromLong(event[i].input_event_usec);
+ val = PyLong_FromLong(event[i].value);
+
+ py_input_event = Py_BuildValue("OOhhO", sec, usec, event[i].type, event[i].code, val);
+diff --git a/evdev/uinput.c b/evdev/uinput.c
+index 192568d..56fe86c 100644
+--- a/evdev/uinput.c
++++ b/evdev/uinput.c
+@@ -16,6 +16,10 @@
+ #include <linux/uinput.h>
+ #endif
+
++#ifndef input_event_sec
++#define input_event_sec time.tv_sec
++#define input_event_usec time.tv_usec
++#endif
+
+ // Workaround for installing on kernels newer than 4.4.
+ #ifndef FF_MAX_EFFECTS
+@@ -232,8 +236,11 @@ uinput_write(PyObject *self, PyObject *args)
+ if (!ret) return NULL;
+
+ struct input_event event;
++ struct timeval tval;
+ memset(&event, 0, sizeof(event));
+- gettimeofday(&event.time, 0);
++ gettimeofday(&tval, 0);
++ event.input_event_usec = tval.tv_usec;
++ event.input_event_sec = tval.tv_sec;
+ event.type = type;
+ event.code = code;
+ event.value = value;