From fa5c71c1be0aab592461403f6af1f00c32b294c5 Mon Sep 17 00:00:00 2001 From: "Alex Xu (Hello71)" Date: Sun, 19 Jun 2022 09:16:52 -0400 Subject: gui-wm/tinywl: new package used for virtualwl.eclass --- gui-wm/tinywl/Manifest | 1 + ...ywl-don-t-crash-when-there-is-no-keyboard.patch | 55 ++++++++++++++++++++++ gui-wm/tinywl/metadata.xml | 8 ++++ gui-wm/tinywl/tinywl-0.15.1.ebuild | 48 +++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 gui-wm/tinywl/Manifest create mode 100644 gui-wm/tinywl/files/tinywl-don-t-crash-when-there-is-no-keyboard.patch create mode 100644 gui-wm/tinywl/metadata.xml create mode 100644 gui-wm/tinywl/tinywl-0.15.1.ebuild diff --git a/gui-wm/tinywl/Manifest b/gui-wm/tinywl/Manifest new file mode 100644 index 0000000..9433b60 --- /dev/null +++ b/gui-wm/tinywl/Manifest @@ -0,0 +1 @@ +DIST wlroots-0.15.1.tar.gz 565816 BLAKE2B 09b704a55d8b4a5ab19bb0fcdd041635fbbbb8eed94ff6d189ef47f9f86e90178efa8441c7db78839b1145ed79ed016d520d6599e256cdcf49130cda38bc307d SHA512 6228160f2f350a406c612f1048d7075cf2f78206cc84bc16f889d5d0acd614f9e98845fffed03d7067cfdbd7558b77fcc5d8cedc3868d866e476523126a63677 diff --git a/gui-wm/tinywl/files/tinywl-don-t-crash-when-there-is-no-keyboard.patch b/gui-wm/tinywl/files/tinywl-don-t-crash-when-there-is-no-keyboard.patch new file mode 100644 index 0000000..cff1f72 --- /dev/null +++ b/gui-wm/tinywl/files/tinywl-don-t-crash-when-there-is-no-keyboard.patch @@ -0,0 +1,55 @@ +From 7d950f3dac6cca62635d5e4ff2af33b35372f6db Mon Sep 17 00:00:00 2001 +From: Simon Ser +Date: Sat, 19 Mar 2022 14:00:43 +0100 +Subject: [PATCH] tinywl: don't crash when there is no keyboard + +Running with WLR_BACKENDS=headless, there is no keyboard device. +Avoid crashes like so: + + ../tinywl/tinywl.c:136:2: runtime error: member access within null pointer of type 'struct wlr_keyboard' + ../tinywl/tinywl.c:136:2: runtime error: member access within null pointer of type 'struct wlr_keyboard' + AddressSanitizer:DEADLYSIGNAL + ================================================================= + ==331107==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000120 (pc 0x556ed03e4e99 bp 0x7ffce834bc10 sp 0x7ffce834bbb0 T0) + ==331107==The signal is caused by a READ memory access. + ==331107==Hint: address points to the zero page. + #0 0x556ed03e4e99 in focus_view ../tinywl/tinywl.c:136 + #1 0x556ed03eb3be in xdg_toplevel_map ../tinywl/tinywl.c:603 + #2 0x7f75d6f768db in wlr_signal_emit_safe ../util/signal.c:29 + #3 0x7f75d6e9cac7 in xdg_surface_role_commit ../types/xdg_shell/wlr_xdg_surface.c:315 + #4 0x7f75d6eb6944 in surface_commit_state ../types/wlr_compositor.c:466 + #5 0x7f75d6eb7b02 in surface_handle_commit ../types/wlr_compositor.c:523 + #6 0x7f75d5714d49 (/usr/lib/libffi.so.8+0x6d49) + #7 0x7f75d5714266 (/usr/lib/libffi.so.8+0x6266) + #8 0x7f75d68cb322 (/usr/lib/libwayland-server.so.0+0xd322) + #9 0x7f75d68c65cb (/usr/lib/libwayland-server.so.0+0x85cb) + #10 0x7f75d68c91c9 in wl_event_loop_dispatch (/usr/lib/libwayland-server.so.0+0xb1c9) + #11 0x7f75d68c6d36 in wl_display_run (/usr/lib/libwayland-server.so.0+0x8d36) + #12 0x556ed03eef55 in main ../tinywl/tinywl.c:905 + #13 0x7f75d5d2330f in __libc_start_call_main (/usr/lib/libc.so.6+0x2d30f) + #14 0x7f75d5d233c0 in __libc_start_main@GLIBC_2.2.5 (/usr/lib/libc.so.6+0x2d3c0) + #15 0x556ed03e46e4 in _start (/home/simon/src/wlroots/build/tinywl/tinywl+0x136e4) +--- + tinywl/tinywl.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/tinywl/tinywl.c b/tinywl/tinywl.c +index dd442aac..8796e9df 100644 +--- a/tinywl/tinywl.c ++++ b/tinywl/tinywl.c +@@ -130,8 +130,10 @@ static void focus_view(struct tinywl_view *view, struct wlr_surface *surface) { + * track of this and automatically send key events to the appropriate + * clients without additional work on your part. + */ +- wlr_seat_keyboard_notify_enter(seat, view->xdg_surface->surface, +- keyboard->keycodes, keyboard->num_keycodes, &keyboard->modifiers); ++ if (keyboard != NULL) { ++ wlr_seat_keyboard_notify_enter(seat, view->xdg_surface->surface, ++ keyboard->keycodes, keyboard->num_keycodes, &keyboard->modifiers); ++ } + } + + static void keyboard_handle_modifiers( +-- +2.36.1 + diff --git a/gui-wm/tinywl/metadata.xml b/gui-wm/tinywl/metadata.xml new file mode 100644 index 0000000..f32ad44 --- /dev/null +++ b/gui-wm/tinywl/metadata.xml @@ -0,0 +1,8 @@ + + + + + alex_y_xu@yahoo.ca + Alex Xu (Hello71) + + diff --git a/gui-wm/tinywl/tinywl-0.15.1.ebuild b/gui-wm/tinywl/tinywl-0.15.1.ebuild new file mode 100644 index 0000000..c8ddb20 --- /dev/null +++ b/gui-wm/tinywl/tinywl-0.15.1.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION='"minimum viable product" Wayland compositor based on wlroots' +HOMEPAGE="https://gitlab.freedesktop.org/wlroots/wlroots/-/tree/tinywl" + +if [[ ${PV} == 9999 ]]; then + EGIT_REPO_URI="https://gitlab.freedesktop.org/wlroots/wlroots.git" + inherit git-r3 +else + SRC_URI="https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/${PV}/wlroots-${PV}.tar.gz" + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="CC0-1.0" +SLOT="0" +IUSE="" + +DEPEND=" + >=gui-libs/wlroots-${PV}:= + dev-libs/wayland-protocols +" +RDEPEND=" + ${DEPEND} +" +BDEPEND=" + dev-libs/wayland-protocols + virtual/pkgconfig +" + +S=${WORKDIR}/wlroots-${PV} + +PATCHES=( + "${FILESDIR}/tinywl-don-t-crash-when-there-is-no-keyboard.patch" +) + +S="${WORKDIR}/wlroots-${PV}/tinywl" + +src_prepare() { + cd .. + default +} + +src_install() { + dobin tinywl +} -- cgit v1.2.3-54-g00ecf