mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 01:26:39 -04:00
x11-wm/sway: update to 1.11.r1
Changes: https://github.com/swaywm/sway/releases/tag/1.11-rc1 Reported by: GitHub (watch releases)
This commit is contained in:
parent
290a886314
commit
bb43067a69
3 changed files with 63 additions and 6 deletions
|
@ -1,6 +1,5 @@
|
|||
PORTNAME= sway
|
||||
DISTVERSION= 1.10.1
|
||||
PORTREVISION= 1
|
||||
DISTVERSION= 1.11-rc1
|
||||
CATEGORIES= x11-wm wayland
|
||||
|
||||
MAINTAINER= jbeich@FreeBSD.org
|
||||
|
@ -18,7 +17,7 @@ LIB_DEPENDS= libjson-c.so:devel/json-c \
|
|||
libpcre2-8.so:devel/pcre2 \
|
||||
libdrm.so:graphics/libdrm \
|
||||
libwayland-egl.so:graphics/wayland \
|
||||
libwlroots-0.18.so:x11-toolkits/wlroots018 \
|
||||
libwlroots-0.19.so:x11-toolkits/wlroots019 \
|
||||
libinput.so:x11/libinput \
|
||||
libxkbcommon.so:x11/libxkbcommon
|
||||
|
||||
|
@ -59,5 +58,10 @@ post-patch:
|
|||
@${REINPLACE_CMD} -i .nogit -e 's/git.found()/false/' \
|
||||
-e '/project_version/s/@0@/${DISTVERSIONFULL}/' \
|
||||
${WRKSRC}/meson.build
|
||||
.if exists(${.CURDIR}/files/patch-common_stringop.c)
|
||||
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275328
|
||||
@${REINPLACE_CMD} -e 's/_POSIX_C_SOURCE=200809L/_XOPEN_SOURCE=700/' \
|
||||
${WRKSRC}/meson.build
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
TIMESTAMP = 1737899026
|
||||
SHA256 (swaywm-sway-1.10.1_GH0.tar.gz) = 8565ab3b359780f02b1dcb24dc48e5b6b82c64dd97ca795782c2fb4cab62457b
|
||||
SIZE (swaywm-sway-1.10.1_GH0.tar.gz) = 5582000
|
||||
TIMESTAMP = 1745148670
|
||||
SHA256 (swaywm-sway-1.11-rc1_GH0.tar.gz) = 12a6b49378d3a73bcd7e07f5a23655a63fc6b3d0b233eb0319dd5fd092b8a85a
|
||||
SIZE (swaywm-sway-1.11-rc1_GH0.tar.gz) = 5583472
|
||||
|
|
53
x11-wm/sway/files/patch-common_stringop.c
Normal file
53
x11-wm/sway/files/patch-common_stringop.c
Normal file
|
@ -0,0 +1,53 @@
|
|||
https://github.com/swaywm/sway/issues/8673#issuecomment-2818260191
|
||||
|
||||
--- common/stringop.c.orig 2025-04-20 11:31:10 UTC
|
||||
+++ common/stringop.c
|
||||
@@ -6,6 +6,8 @@
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <wordexp.h>
|
||||
+#include <signal.h>
|
||||
+#include <sys/wait.h>
|
||||
#include "list.h"
|
||||
#include "log.h"
|
||||
#include "stringop.h"
|
||||
@@ -318,11 +320,34 @@ bool expand_path(char **path) {
|
||||
char *ptr = strstr(*path, " ") + 1;
|
||||
memmove(ptr + 1, ptr, strlen(ptr) + 1);
|
||||
*ptr = '\\';
|
||||
- }
|
||||
- if (wordexp(*path, &p, 0) != 0 || p.we_wordv[0] == NULL) {
|
||||
- wordfree(&p);
|
||||
- return false;
|
||||
- }
|
||||
+ }
|
||||
+
|
||||
+ // FreeBSD wordexp bug workaround:
|
||||
+ // 1. Reset SIGCHLD handler
|
||||
+ // 2. Run wordexp
|
||||
+ // 3. Restore SIGCHLD handler and reap any processes that exited
|
||||
+ struct sigaction prev_action;
|
||||
+ struct sigaction new_action = {
|
||||
+ .sa_flags = SA_RESETHAND,
|
||||
+ };
|
||||
+ if (sigaction(SIGCHLD, &new_action, &prev_action) != 0) {
|
||||
+ sway_log(SWAY_ERROR, "Restoring sigchild before wordexp failed");
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ int res = wordexp(*path, &p, 0);
|
||||
+
|
||||
+ if (sigaction(SIGCHLD, &prev_action, NULL) != 0) {
|
||||
+ sway_log(SWAY_ERROR, "Restoring sigchild after wordexp failed");
|
||||
+ }
|
||||
+
|
||||
+ int status;
|
||||
+ while (waitpid(-1, &status, WNOHANG) != -1 || errno == EINTR);
|
||||
+
|
||||
+ if (res != 0 || p.we_wordv[0] == NULL) {
|
||||
+ wordfree(&p);
|
||||
+ return false;
|
||||
+ }
|
||||
free(*path);
|
||||
*path = join_args(p.we_wordv, p.we_wordc);
|
||||
wordfree(&p);
|
Loading…
Add table
Reference in a new issue