From e6f33e0f23ec6d94267f6995d0caebb64f1dbed1 Mon Sep 17 00:00:00 2001 From: Owen Rafferty Date: Mon, 26 Dec 2022 22:45:18 -0600 Subject: [PATCH] sway: 1.8 --- MOTD | 5 + wayland/sway/README | 30 +---- wayland/sway/build | 5 - wayland/sway/checksums | 3 +- wayland/sway/depends | 1 - wayland/sway/patches/pcre2.patch | 215 ------------------------------- wayland/sway/post-install | 6 +- wayland/sway/sources | 1 - wayland/sway/version | 2 +- 9 files changed, 16 insertions(+), 252 deletions(-) delete mode 100644 wayland/sway/patches/pcre2.patch diff --git a/MOTD b/MOTD index 7aafa657..faeee448 100644 --- a/MOTD +++ b/MOTD @@ -5,3 +5,8 @@ NOTE: sha256 checksums have been preserved for `b3sum` and `kiss` to allow updating old systems. In order to rebuild them, they must temporarily be forked with `kiss fork` and `kiss checksum` and rebuilt until their checksums are updated to b3sum checksums. + +NOTE: sway-no-seat and sway-tiny have been dropped. Upstream has dropped + support for running Sway with setuid root, and further upgrades + to sway-tiny will require maintenance of a fork. Patches for the + latter are welcome. diff --git a/wayland/sway/README b/wayland/sway/README index 6ec535ab..c8a334f0 100644 --- a/wayland/sway/README +++ b/wayland/sway/README @@ -26,20 +26,12 @@ ________________________________________________________________________________ [001] Installation ________________________________________________________________________________ -There are three flavors of Sway in the repositories. - -1. 'sway': Sway as upstream intended. Comes with all the bells and whistles - and requires use of the seatd daemon. - -2. 'sway-no-seat': Sway without the seatd daemon requirement. Instead, the - libseat library embeds the daemon. - -3. 'sway-tiny': All changes from 'sway-no-seat' plus no dependency on pcre, - json-c, pango and cairo. +Currently, only vanilla Sway is provided in the repositories. We may resume +maintaining sway-tiny in the future. +------------------------------------------------------------------------------+ | | -| $ kiss b [sway|sway-no-seat|sway-tiny] | +| $ kiss b sway | | +------------------------------------------------------------------------------+ @@ -69,11 +61,8 @@ ________________________________________________________________________________ --[004] Setup Seat Management -------------------------------------------------- - If using the 'sway package, the seatd daemon must be setup. Refer to the - documentation found here @/libseat - - If using the 'sway-no-seat' or 'sway-tiny' packages, there is no seatd daemon - requirement. Instead you must be the first to call DRMSetMaster. [1] + One must either have the seatd daemon running or launch sway with + 'seatd-launch [args] sway [args]'. Refer also to @/libseat. --[005] Set XDG_RUNTIME_DIR ---------------------------------------------------- @@ -89,14 +78,7 @@ No documentation is currently provided with the package, refer to online documentation for the time being. -[007] Troubleshooting -________________________________________________________________________________ - -If you are using the 'sway-tiny' package and encounter any issues, send bug -reports to $/kisslinux/repo rather than upstream. - - -[008] References +[007] References ________________________________________________________________________________ [0] https://en.wikipedia.org/wiki/Sway_(window_manager) diff --git a/wayland/sway/build b/wayland/sway/build index 9b8de6ce..6960a13c 100755 --- a/wayland/sway/build +++ b/wayland/sway/build @@ -1,10 +1,5 @@ #!/bin/sh -e -# Build fails with gcc 12 due to -Werror. -export CFLAGS="$CFLAGS -Wno-error" - -patch -p1 < pcre2.patch - # Default background color. sed 's/0.25f, 0.25f, 0.25f/0.929, 0.870, 0.678/' \ sway/desktop/render.c > _ diff --git a/wayland/sway/checksums b/wayland/sway/checksums index 6418acf1..d824f52c 100644 --- a/wayland/sway/checksums +++ b/wayland/sway/checksums @@ -1,2 +1 @@ -5ec0e7bc92dc389ff9decef065160439b24451b7c0f495176cc963ab27cb64a281 -43162bf717610512f9c072d8613e6a83054cf2eb93e89cefe409d5dcf228221ff2 +f1b0f0313fc2a81a716f03076a198a1b17f7b830df472e8370425919f53b41209f diff --git a/wayland/sway/depends b/wayland/sway/depends index 16c1479a..491423f4 100644 --- a/wayland/sway/depends +++ b/wayland/sway/depends @@ -1,5 +1,4 @@ cairo -flex make json-c libevdev libinput diff --git a/wayland/sway/patches/pcre2.patch b/wayland/sway/patches/pcre2.patch deleted file mode 100644 index 91704a34..00000000 --- a/wayland/sway/patches/pcre2.patch +++ /dev/null @@ -1,215 +0,0 @@ -diff --git a/include/sway/criteria.h b/include/sway/criteria.h -index ad8610cd..59f57f94 100644 ---- a/include/sway/criteria.h -+++ b/include/sway/criteria.h -@@ -1,7 +1,8 @@ - #ifndef _SWAY_CRITERIA_H - #define _SWAY_CRITERIA_H - --#include -+#define PCRE2_CODE_UNIT_WIDTH 8 -+#include - #include "config.h" - #include "list.h" - #include "tree/view.h" -@@ -15,13 +16,13 @@ enum criteria_type { - }; - - enum pattern_type { -- PATTERN_PCRE, -+ PATTERN_PCRE2, - PATTERN_FOCUSED, - }; - - struct pattern { - enum pattern_type match_type; -- pcre *regex; -+ pcre2_code *regex; - }; - - struct criteria { -diff --git a/meson.build b/meson.build -index 5e4de87f..c59e4142 100644 ---- a/meson.build -+++ b/meson.build -@@ -36,7 +36,7 @@ if is_freebsd - endif - - jsonc = dependency('json-c', version: '>=0.13') --pcre = dependency('libpcre') -+pcre2 = dependency('libpcre2-8') - wayland_server = dependency('wayland-server', version: '>=1.20.0') - wayland_client = dependency('wayland-client') - wayland_cursor = dependency('wayland-cursor') -diff --git a/sway/criteria.c b/sway/criteria.c -index d2a5566f..94751c5f 100644 ---- a/sway/criteria.c -+++ b/sway/criteria.c -@@ -3,7 +3,8 @@ - #include - #include - #include --#include -+#define PCRE2_CODE_UNIT_WIDTH 8 -+#include - #include "sway/criteria.h" - #include "sway/tree/container.h" - #include "sway/config.h" -@@ -40,17 +41,19 @@ bool criteria_is_empty(struct criteria *criteria) { - char *error = NULL; - - // Returns error string on failure or NULL otherwise. --static bool generate_regex(pcre **regex, char *value) { -- const char *reg_err; -- int offset; -- -- *regex = pcre_compile(value, PCRE_UTF8 | PCRE_UCP, ®_err, &offset, NULL); -+static bool generate_regex(pcre2_code **regex, char *value) { -+ int errorcode; -+ PCRE2_SIZE offset; - -+ *regex = pcre2_compile((PCRE2_SPTR)value, PCRE2_ZERO_TERMINATED, PCRE2_UTF | PCRE2_UCP, &errorcode, &offset, NULL); - if (!*regex) { -+ PCRE2_UCHAR buffer[256]; -+ pcre2_get_error_message(errorcode, buffer, sizeof(buffer)); -+ - const char *fmt = "Regex compilation for '%s' failed: %s"; -- int len = strlen(fmt) + strlen(value) + strlen(reg_err) - 3; -+ int len = strlen(fmt) + strlen(value) + strlen((char*) buffer) - 3; - error = malloc(len); -- snprintf(error, len, fmt, value, reg_err); -+ snprintf(error, len, fmt, value, buffer); - return false; - } - -@@ -66,7 +69,7 @@ static bool pattern_create(struct pattern **pattern, char *value) { - if (strcmp(value, "__focused__") == 0) { - (*pattern)->match_type = PATTERN_FOCUSED; - } else { -- (*pattern)->match_type = PATTERN_PCRE; -+ (*pattern)->match_type = PATTERN_PCRE2; - if (!generate_regex(&(*pattern)->regex, value)) { - return false; - }; -@@ -77,7 +80,7 @@ static bool pattern_create(struct pattern **pattern, char *value) { - static void pattern_destroy(struct pattern *pattern) { - if (pattern) { - if (pattern->regex) { -- pcre_free(pattern->regex); -+ pcre2_code_free(pattern->regex); - } - free(pattern); - } -@@ -99,8 +102,11 @@ void criteria_destroy(struct criteria *criteria) { - free(criteria); - } - --static int regex_cmp(const char *item, const pcre *regex) { -- return pcre_exec(regex, NULL, item, strlen(item), 0, 0, NULL, 0); -+static int regex_cmp(const char *item, const pcre2_code *regex) { -+ pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(regex, NULL); -+ int result = pcre2_match(regex, (PCRE2_SPTR)item, strlen(item), 0, 0, match_data, NULL); -+ pcre2_match_data_free(match_data); -+ return result; - } - - #if HAVE_XWAYLAND -@@ -155,7 +161,7 @@ static bool criteria_matches_container(struct criteria *criteria, - bool exists = false; - struct sway_container *con = container; - for (int i = 0; i < con->marks->length; ++i) { -- if (regex_cmp(con->marks->items[i], criteria->con_mark->regex) == 0) { -+ if (regex_cmp(con->marks->items[i], criteria->con_mark->regex) >= 0) { - exists = true; - break; - } -@@ -192,8 +198,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(title, criteria->title->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(title, criteria->title->regex) < 0) { - return false; - } - break; -@@ -212,8 +218,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(shell, criteria->shell->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(shell, criteria->shell->regex) < 0) { - return false; - } - break; -@@ -232,8 +238,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(app_id, criteria->app_id->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(app_id, criteria->app_id->regex) < 0) { - return false; - } - break; -@@ -264,8 +270,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(class, criteria->class->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(class, criteria->class->regex) < 0) { - return false; - } - break; -@@ -284,8 +290,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(instance, criteria->instance->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(instance, criteria->instance->regex) < 0) { - return false; - } - break; -@@ -304,8 +310,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(window_role, criteria->window_role->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(window_role, criteria->window_role->regex) < 0) { - return false; - } - break; -@@ -363,8 +369,8 @@ static bool criteria_matches_view(struct criteria *criteria, - return false; - } - break; -- case PATTERN_PCRE: -- if (regex_cmp(ws->name, criteria->workspace->regex) != 0) { -+ case PATTERN_PCRE2: -+ if (regex_cmp(ws->name, criteria->workspace->regex) < 0) { - return false; - } - break; -diff --git a/sway/meson.build b/sway/meson.build -index 8eab31a2..5f34ce6b 100644 ---- a/sway/meson.build -+++ b/sway/meson.build -@@ -213,7 +213,7 @@ sway_deps = [ - libudev, - math, - pango, -- pcre, -+ pcre2, - glesv2, - pixman, - server_protos, diff --git a/wayland/sway/post-install b/wayland/sway/post-install index 4b66a942..4879bfed 100755 --- a/wayland/sway/post-install +++ b/wayland/sway/post-install @@ -2,9 +2,9 @@ cat <