Should we consider applying this diff to upstream to avoid the maintenance issue?
Thanks, Bryan > On Dec 20, 2015, at 8:31 AM, David Coppa <dco...@gmail.com> wrote: > >> On Sun, Dec 20, 2015 at 2:02 PM, Theo Buehler <t...@math.ethz.ch> wrote: >> I understand that pledging a port adds complexity to its maintenance >> and I am not convinced the patch below should be committed to the ports >> tree. >> >> However, since there appears to be a considerable numer of users of i3 >> among OpenBSD users, there might be some interest in this patch, so I'd >> like to share it. I'd need some positive test reports to be persuaded >> to try to upstream this. > > Please refactor your diff on a very current -current, I've committed > an update for i3 yesterday... > > And please also protect the pledge code with "#if defined(__OpenBSD__)" > > Ciao! > David > >> I'm running variations of this patch for about three weeks now. >> >> Note that i3status is not included. It is not currently possible to >> pledge this program without severly cutting down its features. >> >> Index: x11/i3/Makefile >> =================================================================== >> RCS file: /cvs/ports/x11/i3/Makefile,v >> retrieving revision 1.98 >> diff -u -p -r1.98 Makefile >> --- x11/i3/Makefile 4 Oct 2015 08:48:12 -0000 1.98 >> +++ x11/i3/Makefile 20 Dec 2015 12:47:01 -0000 >> @@ -3,6 +3,7 @@ >> COMMENT = improved dynamic tiling window manager >> >> DISTNAME = i3-4.11 >> +REVISION = 0 >> CATEGORIES = x11 >> >> EXTRACT_SUFX = .tar.bz2 >> Index: x11/i3/patches/patch-i3-msg_main_c >> =================================================================== >> RCS file: x11/i3/patches/patch-i3-msg_main_c >> diff -N x11/i3/patches/patch-i3-msg_main_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ x11/i3/patches/patch-i3-msg_main_c 20 Dec 2015 12:47:01 -0000 >> @@ -0,0 +1,16 @@ >> +$OpenBSD$ >> + >> +pledge for i3-msg: >> +rpath and unix needed for talking to the i3 socket in /tmp >> + >> +--- i3-msg/main.c.orig Sun Dec 6 01:38:41 2015 >> ++++ i3-msg/main.c Sun Dec 6 01:39:44 2015 >> +@@ -119,6 +119,8 @@ static yajl_callbacks reply_callbacks = { >> + }; >> + >> + int main(int argc, char *argv[]) { >> ++ if (pledge("stdio rpath unix", NULL) == -1) >> ++ err(EXIT_FAILURE, "pledge"); >> + char *env_socket_path = getenv("I3SOCK"); >> + if (env_socket_path) >> + socket_path = sstrdup(env_socket_path); >> Index: x11/i3/patches/patch-i3-nagbar_main_c >> =================================================================== >> RCS file: /cvs/ports/x11/i3/patches/patch-i3-nagbar_main_c,v >> retrieving revision 1.7 >> diff -u -p -r1.7 patch-i3-nagbar_main_c >> --- x11/i3/patches/patch-i3-nagbar_main_c 4 Oct 2015 08:48:12 -0000 >> 1.7 >> +++ x11/i3/patches/patch-i3-nagbar_main_c 20 Dec 2015 12:47:01 -0000 >> @@ -1,6 +1,14 @@ >> $OpenBSD: patch-i3-nagbar_main_c,v 1.7 2015/10/04 08:48:12 dcoppa Exp $ >> + >> +surprisingly wide pledge for this program >> + >> +wpath cpath for writing a script >> +rpath getpw for checking access permissions >> +proc exec for executing the script >> +unix for talking to the i3 socket >> + >> --- i3-nagbar/main.c.orig Wed Sep 30 08:55:10 2015 >> -+++ i3-nagbar/main.c Fri Oct 2 16:58:54 2015 >> ++++ i3-nagbar/main.c Sun Dec 6 01:23:02 2015 >> @@ -170,7 +170,7 @@ static void handle_button_release(xcb_connection_t *co >> } >> >> @@ -9,4 +17,14 @@ $OpenBSD: patch-i3-nagbar_main_c,v 1.7 2 >> + sasprintf(&terminal_cmd, "${X11BASE}/bin/xterm -e %s", link_path); >> printf("argv0 = %s\n", argv0); >> printf("terminal_cmd = %s\n", terminal_cmd); >> + >> +@@ -464,6 +464,9 @@ int main(int argc, char *argv[]) { >> + >> + font = load_font(pattern, true); >> + set_font(&font); >> ++ >> ++ if (pledge("stdio rpath wpath cpath getpw proc exec unix", NULL) == -1) >> ++ err(EXIT_FAILURE, "pledge"); >> + >> + xcb_rectangle_t win_pos = get_window_position(); >> >> Index: x11/i3/patches/patch-i3bar_src_main_c >> =================================================================== >> RCS file: x11/i3/patches/patch-i3bar_src_main_c >> diff -N x11/i3/patches/patch-i3bar_src_main_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ x11/i3/patches/patch-i3bar_src_main_c 20 Dec 2015 12:47:01 -0000 >> @@ -0,0 +1,18 @@ >> +$OpenBSD$ >> + >> +stdio rpath unix for talking to the i3 socket >> +wpath for logging >> +proc exec to execute the bar >> + >> +--- i3bar/src/main.c.orig Sun Dec 6 01:08:28 2015 >> ++++ i3bar/src/main.c Sun Dec 6 01:07:08 2015 >> +@@ -95,6 +95,9 @@ int main(int argc, char **argv) { >> + char *socket_path = getenv("I3SOCK"); >> + char *i3_default_sock_path = "/tmp/i3-ipc.sock"; >> + >> ++ if (pledge("stdio rpath wpath proc exec unix", NULL) == -1) >> ++ err(EXIT_FAILURE, "pledge"); >> ++ >> + /* Initialize the standard config to use 0 as default */ >> + memset(&config, '\0', sizeof(config_t)); >> + >> Index: x11/i3/patches/patch-src_main_c >> =================================================================== >> RCS file: x11/i3/patches/patch-src_main_c >> diff -N x11/i3/patches/patch-src_main_c >> --- /dev/null 1 Jan 1970 00:00:00 -0000 >> +++ x11/i3/patches/patch-src_main_c 20 Dec 2015 12:47:01 -0000 >> @@ -0,0 +1,20 @@ >> +$OpenBSD$ >> + >> +stdio rpath unix for talking to the i3 socket in /tmp >> +wpath cpath are needed for the restart-in-place functionality >> +proc exec for executing programs >> + >> +--- src/main.c.orig Wed Sep 30 08:55:10 2015 >> ++++ src/main.c Sun Dec 6 00:36:10 2015 >> +@@ -785,6 +785,11 @@ int main(int argc, char *argv[]) { >> + xcb_free_pixmap(conn, pixmap); >> + } >> + >> ++ /* can't pledge if shm_* calls are used */ >> ++ if (shmlog_size == 0) >> ++ if (pledge("stdio rpath wpath cpath proc exec unix", NULL) == -1) >> ++ err(EXIT_FAILURE, "pledge"); >> ++ >> + struct sigaction action; >> + >> + action.sa_sigaction = handle_signal; >