aports/testing/umockdev/0002-vala-Stop-using-deprecated-input_event.time.patch
2021-03-15 09:29:29 +01:00

104 lines
4.1 KiB
Diff

From 56c599d75fc5b5b8176bd8b3aec6ea8068f6c60e Mon Sep 17 00:00:00 2001
From: Martin Pitt <martin@piware.de>
Date: Mon, 15 Mar 2021 07:09:58 +0100
Subject: [PATCH 2/2] vala: Stop using deprecated input_event.time
Backport the vapi fix [1] for the input_event API change [2], to fix
building on 32 bit Alpine (and presumably other distributions).
[1] https://gitlab.gnome.org/GNOME/vala/-/commit/dbe4b716a8d79704
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=152194fe9c3f
Fixes #120
---
meson.build | 3 ++-
src/linux_fixes.vapi | 19 +++++++++++++++++++
src/umockdev.vala | 10 +++++-----
3 files changed, 26 insertions(+), 6 deletions(-)
create mode 100644 src/linux_fixes.vapi
diff --git a/meson.build b/meson.build
index c4c450c..95679fc 100644
--- a/meson.build
+++ b/meson.build
@@ -52,6 +52,7 @@ python = find_program('python3', 'python', required: false)
vapi_posix = valac.find_library('posix')
vapi_linux = valac.find_library('linux')
+vapi_linux_fixes = valac.find_library('linux_fixes', dirs: srcdir)
vala_libudev = cc.find_library('udev')
vala_libutil = cc.find_library('util')
@@ -98,7 +99,7 @@ umockdev_lib = shared_library('umockdev',
'src/uevent_sender.c'],
vala_vapi: 'umockdev-1.0.vapi',
vala_gir: 'UMockdev-1.0.gir',
- dependencies: [glib, gobject, gio, gio_unix, vapi_posix, vapi_linux, vala_libudev, vala_libutil],
+ dependencies: [glib, gobject, gio, gio_unix, vapi_posix, vapi_linux, vapi_linux_fixes, vala_libudev, vala_libutil],
link_depends: ['src/umockdev.map'],
link_args: [
'-Wl,-export-dynamic',
diff --git a/src/linux_fixes.vapi b/src/linux_fixes.vapi
new file mode 100644
index 0000000..a3ab60b
--- /dev/null
+++ b/src/linux_fixes.vapi
@@ -0,0 +1,19 @@
+[CCode (cprefix = "", lower_case_cprefix = "")]
+namespace LinuxFixes {
+
+ [CCode (cprefix = "", lower_case_cprefix = "")]
+ namespace Input {
+
+ // https://gitlab.gnome.org/GNOME/vala/-/commit/dbe4b716a8d79704
+ [CCode (cname = "struct input_event", has_type_id = false, cheader_filename = "linux/input.h")]
+ public struct Event {
+ [Version (deprecated = true, replacement = "Event.input_event_sec and Event.input_event_usec")]
+ public Posix.timeval time;
+ public time_t input_event_sec;
+ public long input_event_usec;
+ public uint16 type;
+ public uint16 code;
+ public int32 value;
+ }
+ }
+}
diff --git a/src/umockdev.vala b/src/umockdev.vala
index 97e2263..bd9d7ce 100644
--- a/src/umockdev.vala
+++ b/src/umockdev.vala
@@ -890,7 +890,7 @@ public class Testbed: GLib.Object {
string? recorded_dev = null;
size_t len;
MatchInfo match;
- Linux.Input.Event ev = {};
+ LinuxFixes.Input.Event ev = {};
var default_dev_re = new Regex("^# device (.*)$");
var event_re = new Regex("^E: ([0-9]+)\\.([0-9]+) +([0-9a-fA-F]+) +([0-9a-fA-F]+) +(-?[0-9]+) *#?");
@@ -916,17 +916,17 @@ public class Testbed: GLib.Object {
delay = 0;
first = false;
} else {
- delay = (int) (ev_sec - ev.time.tv_sec) * 1000 + (int) (ev_usec - ev.time.tv_usec) / 1000;
+ delay = (int) (ev_sec - ev.input_event_sec) * 1000 + (int) (ev_usec - ev.input_event_usec) / 1000;
if (delay < 0)
delay = 0;
}
- ev.time.tv_sec = ev_sec;
- ev.time.tv_usec = ev_usec;
+ ev.input_event_sec = ev_sec;
+ ev.input_event_usec = ev_usec;
ev.type = (uint16) match.fetch(3).to_ulong(null, 16);
ev.code = (uint16) match.fetch(4).to_ulong(null, 16);
ev.value = int.parse(match.fetch(5));
- uint8[] ev_data = new uint8[sizeof(Linux.Input.Event)];
+ uint8[] ev_data = new uint8[sizeof(LinuxFixes.Input.Event)];
Posix.memcpy(ev_data, &ev, ev_data.length);
string script_line = "r " + delay.to_string() + " " + ScriptRunner.encode(ev_data) + "\n";
assert (Posix.write(script_fd, script_line, script_line.length) == script_line.length);
--
2.30.2