Download raw body.
update: wayland/havoc 0.7.0
On Wed Jul 30, 2025 at 05:14:13PM +0200, Matthieu Herrb wrote:
> 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
Replace /usr/local with ${LOCALBASE} and setup
pre-configure:
${SUBST_CMD} ${WRKSRC}/....
> - 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
See above
> - 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
See above
> -
> - OBJ=wcwidth.o shl-htable.o\
> - tsm-render.o tsm-screen.o tsm-selection.o\
>
> --
> Matthieu Herrb
>
update: wayland/havoc 0.7.0