Files
RedBear-OS/local/recipes/libs/libevdev/redox.patch
T
vasilito f31522130f fix: comprehensive boot warnings and exceptions — fixable silenced, unfixable diagnosed
Build system (5 gaps hardened):
- COOKBOOK_OFFLINE defaults to true (fork-mode)
- normalize_patch handles diff -ruN format
- New 'repo validate-patches' command (25/25 relibc patches)
- 14 patched Qt/Wayland/display recipes added to protected list
- relibc archive regenerated with current patch chain

Boot fixes (fixable):
- Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset)
- D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped)
- redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped)
- daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch)
- udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async)
- relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs
- greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait)
- greeter-ui: built and linked (header guard unification, sem_compat stubs removed)
- mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps
- greeter config: removed stale keymapd dependency from display/greeter services
- prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified

Unfixable (diagnosed, upstream):
- i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort
- kded6/greeter-ui: page fault 0x8 — Qt library null deref
- Thread panics fd != -1 — Rust std library on Redox
- DHCP timeout / eth0 MAC — QEMU user-mode networking
- hwrngd/thermald — no hardware RNG/thermal in VM
- live preload allocation — BIOS memory fragmentation, continues on demand
2026-05-05 20:20:37 +01:00

147 lines
3.7 KiB
Diff

diff -ruwN source-old/meson.build source/meson.build
--- source-old/meson.build 2025-04-26 00:00:00.000000000 +0000
+++ source/meson.build 2026-04-13 00:00:00.000000000 +0000
@@ -33,8 +33,13 @@
pkgconfig = import('pkgconfig')
dep_lm = cc.find_library('m')
dep_rt = cc.find_library('rt')
-input_h = dir_root / 'include' / 'linux' / host_machine.system() / 'input.h'
-input_event_codes_h = dir_root / 'include' / 'linux' / host_machine.system() / 'input-event-codes.h'
+linux_input_system = host_machine.system()
+if linux_input_system == 'redox'
+ linux_input_system = 'linux'
+endif
+
+input_h = dir_root / 'include' / 'linux' / linux_input_system / 'input.h'
+input_event_codes_h = dir_root / 'include' / 'linux' / linux_input_system / 'input-event-codes.h'
# event-names.h
make_event_names = find_program('libevdev/make-event-names.py')
diff -ruwN source-old/include/linux/input.h source/include/linux/input.h
--- source-old/include/linux/input.h 2025-04-26 00:00:00.000000000 +0000
+++ source/include/linux/input.h 2026-04-13 00:00:00.000000000 +0000
@@ -1,5 +1,5 @@
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
#include "linux/input.h"
#elif __FreeBSD__
#include "freebsd/input.h"
#endif
diff -ruwN source-old/include/linux/uinput.h source/include/linux/uinput.h
--- source-old/include/linux/uinput.h 2025-04-26 00:00:00.000000000 +0000
+++ source/include/linux/uinput.h 2026-04-13 00:00:00.000000000 +0000
@@ -1,5 +1,5 @@
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
#include "linux/uinput.h"
#elif __FreeBSD__
#include "freebsd/uinput.h"
#endif
diff -ruwN source-old/libevdev/libevdev-uinput.c source/libevdev/libevdev-uinput.c
--- source-old/libevdev/libevdev-uinput.c 2025-04-26 00:00:00.000000000 +0000
+++ source/libevdev/libevdev-uinput.c 2026-04-13 00:00:00.000000000 +0000
@@ -4,23 +4,88 @@
*/
#include "config.h"
-#include <dirent.h>
#include <errno.h>
+#include <time.h>
+
+#include "libevdev-int.h"
+#include "libevdev-uinput-int.h"
+#include "libevdev-uinput.h"
+
+#ifdef __redox__
+
+#include <stdlib.h>
+#include <unistd.h>
+
+LIBEVDEV_EXPORT int
+libevdev_uinput_get_fd(const struct libevdev_uinput *uinput_dev)
+{
+ return uinput_dev->fd;
+}
+
+LIBEVDEV_EXPORT int
+libevdev_uinput_create_from_device(const struct libevdev *dev,
+ int fd,
+ struct libevdev_uinput **uinput_dev)
+{
+ (void)dev;
+ (void)fd;
+ (void)uinput_dev;
+
+ return -ENOSYS;
+}
+
+LIBEVDEV_EXPORT void
+libevdev_uinput_destroy(struct libevdev_uinput *uinput_dev)
+{
+ if (!uinput_dev)
+ return;
+
+ if (uinput_dev->fd >= 0 && uinput_dev->fd_is_managed)
+ close(uinput_dev->fd);
+
+ free(uinput_dev->syspath);
+ free(uinput_dev->devnode);
+ free(uinput_dev->name);
+ free(uinput_dev);
+}
+
+LIBEVDEV_EXPORT const char*
+libevdev_uinput_get_syspath(struct libevdev_uinput *uinput_dev)
+{
+ return uinput_dev->syspath;
+}
+
+LIBEVDEV_EXPORT const char*
+libevdev_uinput_get_devnode(struct libevdev_uinput *uinput_dev)
+{
+ return uinput_dev->devnode;
+}
+
+LIBEVDEV_EXPORT int
+libevdev_uinput_write_event(const struct libevdev_uinput *uinput_dev,
+ unsigned int type,
+ unsigned int code,
+ int value)
+{
+ (void)uinput_dev;
+ (void)type;
+ (void)code;
+ (void)value;
+
+ return -ENOSYS;
+}
+
+#else
+
+#include <dirent.h>
#include <fcntl.h>
#include <linux/uinput.h>
#include <poll.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
-#include <time.h>
#include <unistd.h>
-
-#include "libevdev-int.h"
-#include "libevdev-uinput-int.h"
-#include "libevdev-uinput.h"
-#include "libevdev-util.h"
-#include "libevdev.h"
#ifndef UINPUT_IOCTL_BASE
#define UINPUT_IOCTL_BASE 'U'
#endif
@@ -489,3 +554,5 @@
return rc < 0 ? -errno : 0;
}
+
+#endif