Index | Thread | Search

From:
Matthieu Herrb <matthieu@openbsd.org>
Subject:
update: wayland/havoc 0.7.0
To:
ports@openbsd.org
Date:
Wed, 30 Jul 2025 17:14:13 +0200

Download raw body.

Thread
relatively straightforward. Upstream has improved portability, so 2
patches can go away.

ok ?

Index: Makefile
===================================================================
RCS file: /local/cvs/ports/wayland/havoc/Makefile,v
diff -u -p -u -r1.5 Makefile
--- Makefile	5 Nov 2024 17:43:45 -0000	1.5
+++ Makefile	30 Jul 2025 15:10:58 -0000
@@ -2,7 +2,7 @@ COMMENT =	minimal terminal emulator for 
 
 GH_ACCOUNT =	ii8
 GH_PROJECT =	havoc
-GH_TAGNAME =	0.6.0
+GH_TAGNAME =	0.7.0
 
 
 CATEGORIES =	wayland
Index: distinfo
===================================================================
RCS file: /local/cvs/ports/wayland/havoc/distinfo,v
diff -u -p -u -r1.3 distinfo
--- distinfo	5 Nov 2024 17:43:45 -0000	1.3
+++ distinfo	30 Jul 2025 15:10:58 -0000
@@ -1,2 +1,2 @@
-SHA256 (havoc-0.6.0.tar.gz) = P2U464orWEZFnzjCg+7yyBUohqTtB54QOLAtDDGjJHw=
-SIZE (havoc-0.6.0.tar.gz) = 95645
+SHA256 (havoc-0.7.0.tar.gz) = tPgZv8Ow+OqWcBiUjb86cfF0oCiG0A7hYSFzn80UDW8=
+SIZE (havoc-0.7.0.tar.gz) = 93445
Index: patches/patch-Makefile
===================================================================
RCS file: /local/cvs/ports/wayland/havoc/patches/patch-Makefile,v
diff -u -p -u -r1.3 patch-Makefile
--- patches/patch-Makefile	5 Nov 2024 17:43:45 -0000	1.3
+++ patches/patch-Makefile	30 Jul 2025 15:10:58 -0000
@@ -1,29 +1,23 @@
 Index: Makefile
 --- Makefile.orig
 +++ Makefile
-@@ -6,7 +6,7 @@ BINDIR ?= $(PREFIX)/bin
+@@ -11,7 +11,7 @@ CDEFS = -DVERSION='$(VERSION)' -D_XOPEN_SOURCE=700
  
- VERSION="0.6.0"
+ WAYLAND_PROTOCOLS_DIR != $(PKG_CONFIG) --variable=pkgdatadir wayland-protocols
  
--CFLAGS ?= -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-format-overflow
-+CFLAGS += -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -I/usr/local/include -I/usr/local/include/libepoll-shim
- override CFLAGS += -DVERSION=\"$(VERSION)\"
+-LIBRARIES = wayland-client wayland-cursor xkbcommon
++LIBRARIES = wayland-client wayland-cursor xkbcommon epoll-shim
+ PKG_CFLAGS != $(PKG_CONFIG) --cflags $(LIBRARIES)
+ PKG_LIBS != $(PKG_CONFIG) --libs $(LIBRARIES)
  
- VPATH = $(WAYLAND_PROTOCOLS_DIR)/stable/xdg-shell \
-@@ -17,14 +17,14 @@ GEN =	xdg-shell.h xdg-shell.c \
- 	xdg-decoration-unstable-v1.h xdg-decoration-unstable-v1.c \
- 	primary-selection-unstable-v1.h primary-selection-unstable-v1.c
- 
--LIBS=-lrt -lm -lutil -lwayland-client -lwayland-cursor -lxkbcommon -Ltsm -lhtsm
-+LIBS=-L/usr/local/lib -R/usr/local/lib -lm -lutil -lwayland-client -lwayland-cursor -lxkbcommon -Ltsm -lhtsm -lepoll-shim
- OBJ=xdg-shell.o xdg-decoration-unstable-v1.o primary-selection-unstable-v1.o glyph.o main.o
- 
- havoc: tsm $(OBJ)
- 	$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
+@@ -72,8 +72,8 @@ primary-selection-unstable-v1.xml:
+ 	cp $(WAYLAND_PROTOCOLS_DIR)/unstable/primary-selection/$@ $@
  
  install: havoc
--	install -D -t $(DESTDIR)$(BINDIR) havoc
-+	install -m 755 havoc $(BINDIR)
+-	mkdir -p $(DESTDIR)$(BINDIR)
+-	install -m 755 havoc $(DESTDIR)$(BINDIR)/havoc
++	mkdir -p $(BINDIR)
++	install -m 755 havoc $(BINDIR)/havoc
  
  uninstall:
- 	rm -f $(DESTDIR)$(BINDIR)/havoc
+ 	rm $(DESTDIR)$(BINDIR)/havoc
Index: patches/patch-main_c
===================================================================
RCS file: patches/patch-main_c
diff -N patches/patch-main_c
--- patches/patch-main_c	5 Nov 2024 17:43:45 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,162 +0,0 @@
-Index: main.c
---- main.c.orig
-+++ main.c
-@@ -13,7 +13,13 @@
- #include <sys/timerfd.h>
- #include <fcntl.h>
- #include <unistd.h>
-+#ifndef __OpenBSD__
- #include <pty.h>
-+#else
-+#include <sys/ioctl.h>
-+#include <sys/ttycom.h>
-+#include <util.h>
-+#endif
- 
- #include <xkbcommon/xkbcommon-compose.h>
- #include <wayland-client-core.h>
-@@ -203,7 +209,7 @@ static struct {
- 		[TSM_COLOR_LIGHT_CYAN]    = {   0, 255, 255 },
- 		[TSM_COLOR_WHITE]         = { 255, 255, 255 },
- 		[TSM_COLOR_FOREGROUND]    = { 229, 229, 229 },
--		[TSM_COLOR_BACKGROUND]    = {   0,   0,   0 },
-+		[TSM_COLOR_BACKGROUND]    = {   0,   0,   1 },
- 	},
- 	.opt.app_id = "havoc"
- };
-@@ -212,7 +218,7 @@ static void wcb(struct tsm_vte *vte, const char *u8, s
- {
- 	assert(len <= PIPE_BUF);
- 	if (term.master_fd >= 0 && write(term.master_fd, u8, len) < 0) {
--		fprintf(stderr, "could not write to pty master: %m\n");
-+		fprintf(stderr, "could not write to pty master: %s\n", strerror(errno));
- 		abort();
- 	}
- }
-@@ -223,7 +229,7 @@ static void handle_display(int ev)
- 		term.die = true;
- 	} else if (ev & EPOLLIN) {
- 		if (wl_display_dispatch(term.display) < 0) {
--			fprintf(stderr, "could not dispatch events: %m\n");
-+			fprintf(stderr, "could not dispatch events: %s\n", strerror(errno));
- 			abort();
- 		}
- 	}
-@@ -234,22 +240,22 @@ static void handle_tty(int ev)
- 	char data[256];
- 	int len;
- 
--	if (ev & EPOLLIN) {
-+	if (ev & EPOLLHUP) {
-+		epoll_ctl(term.fd, EPOLL_CTL_DEL, term.master_fd, NULL);
-+		close(term.master_fd);
-+		term.master_fd = -1;
-+		if (!term.opt.linger)
-+			term.die = true;
-+	}  else if (ev & EPOLLIN) {
- 		term.need_redraw = true;
- 		len = read(term.master_fd, data, sizeof(data));
- 		assert(len);
- 		if (len < 0) {
--			fprintf(stderr, "could not read from pty: %m\n");
-+			fprintf(stderr, "could not read from pty: %s\n", strerror(errno));
- 			abort();
- 		} else {
- 			tsm_vte_input(term.vte, data, len);
- 		}
--	} else if (ev & EPOLLHUP) {
--		epoll_ctl(term.fd, EPOLL_CTL_DEL, term.master_fd, NULL);
--		close(term.master_fd);
--		term.master_fd = -1;
--		if (!term.opt.linger)
--			term.die = true;
- 	}
- }
- 
-@@ -528,20 +534,20 @@ static int buffer_init(struct buffer *buf)
- 	stride = term.width * 4;
- 	buf->size = stride * term.height;
- 
--	srand(time(NULL));
- 	do {
--		sprintf(shm_name, "/havoc-%d", rand() % 1000000);
-+		snprintf(shm_name, sizeof(shm_name), "/havoc-%d", 
-+			 arc4random_uniform(1000000));
- 		fd = shm_open(shm_name, O_RDWR | O_CREAT | O_EXCL, 0600);
- 	} while (fd < 0 && errno == EEXIST && --max);
- 
- 	if (fd < 0) {
--		fprintf(stderr, "shm_open failed: %m\n");
-+		fprintf(stderr, "shm_open failed: %s\n", strerror(errno));
- 		return -1;
- 	}
- 	shm_unlink(shm_name);
- 
- 	if (ftruncate(fd, buf->size) < 0) {
--		fprintf(stderr, "ftruncate failed: %m\n");
-+		fprintf(stderr, "ftruncate failed: %s\n", strerror(errno));
- 		close(fd);
- 		return -1;
- 	}
-@@ -550,7 +556,7 @@ static int buffer_init(struct buffer *buf)
- 			 fd, 0);
- 
- 	if (buf->data == MAP_FAILED) {
--		fprintf(stderr, "mmap failed: %m\n");
-+		fprintf(stderr, "mmap failed: %s\n", strerror(errno));
- 		close(fd);
- 		return -1;
- 	}
-@@ -1492,7 +1498,7 @@ static void configure(void *d, struct xdg_surface *sur
- 	term.row = row;
- 	tsm_screen_resize(term.screen, col, row);
- 	if (term.master_fd >= 0 && ioctl(term.master_fd, TIOCSWINSZ, &ws) < 0)
--		fprintf(stderr, "could not resize pty: %m\n");
-+		fprintf(stderr, "could not resize pty: %s\n", strerror(errno));
- 
- 	term.need_redraw = true;
- 	term.resize = 2;
-@@ -1579,7 +1585,7 @@ static void setup_pty(char *argv[])
- 	pid_t pid = forkpty(&term.master_fd, NULL, NULL, NULL);
- 
- 	if (pid < 0) {
--		fprintf(stderr, "forkpty failed: %m");
-+		fprintf(stderr, "forkpty failed: %s", strerror(errno));
- 		exit(EXIT_FAILURE);
- 	} else if (pid == 0) {
- 		char *prog;
-@@ -1591,7 +1597,7 @@ static void setup_pty(char *argv[])
- 			execlp(term.cfg.shell, term.cfg.shell, (char *) NULL);
- 			prog = term.cfg.shell;
- 		}
--		fprintf(stderr, "could not execute %s: %m", prog);
-+		fprintf(stderr, "could not execute %s: %s", prog, strerror(errno));
- 		pause();
- 		exit(EXIT_FAILURE);
- 	}
-@@ -1794,9 +1800,9 @@ static FILE *open_config(void)
- 
- 		f = fopen(term.opt.config, "r");
- 		if (f == NULL)
--			fprintf(stderr, "could not open '%s': %m, "
-+			fprintf(stderr, "could not open '%s': %s, "
- 				"using default configuration\n",
--				term.opt.config);
-+				term.opt.config, strerror(errno));
- 		return f;
- 	}
- 
-@@ -2018,9 +2024,10 @@ retry:
- 
- 	term.repeat.fd = timerfd_create(CLOCK_MONOTONIC,
- 					TFD_NONBLOCK | TFD_CLOEXEC);
--	if (term.repeat.fd < 0)
--		fail(etimer, "could not create key repeat timer: %m");
--
-+	if (term.repeat.fd < 0) {
-+		fprintf(stderr, "could not create key repeat timer: %s", strerror(errno));
-+		goto etimer;
-+	}
- 	if (term.d_dm && term.seat) {
- 		term.d_d = wl_data_device_manager_get_data_device(
- 			term.d_dm, term.seat);
Index: patches/patch-tsm_Makefile
===================================================================
RCS file: patches/patch-tsm_Makefile
diff -N patches/patch-tsm_Makefile
--- patches/patch-tsm_Makefile	26 Feb 2024 18:17:32 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-Index: tsm/Makefile
---- tsm/Makefile.orig
-+++ tsm/Makefile
-@@ -1,4 +1,5 @@
- CFLAGS ?= -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-format-overflow
-+CFLAGS += -I/usr/local/include
- 
- OBJ=wcwidth.o shl-htable.o\
- 	tsm-render.o tsm-screen.o tsm-selection.o\

-- 
Matthieu Herrb