summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--debian/changelog13
-rw-r--r--debian/control2
-rw-r--r--debian/patches/revert-upstream-43e5e80343.diff79
-rw-r--r--debian/patches/series3
-rw-r--r--debian/patches/upstream-3823fa2c57.diff29
-rw-r--r--debian/patches/upstream-424f13fe13.diff20
6 files changed, 145 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog
index 1111ec4..0f5cf73 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+tmux (3.4-5) unstable; urgency=medium
+
+ * Cherry-pick more upstream fixes:
+ + 3823fa2c57: start systemd scope with SendSIGHUP=yes to prevent hang
+ on system shutdown.
+ + 424f13fe13: don't crash server when calling switch-client from
+ pane-died hook.
+ * Revert upstream commit 43e5e80343 which breaks search of wrapped lines.
+ * Version build-dependency on libncurses-dev to ensure we pick up updated
+ symbol versions for ncurses 6.5.
+
+ -- Romain Francoise <rfrancoise@debian.org> Thu, 09 May 2024 17:43:16 +0200
+
tmux (3.4-4) unstable; urgency=medium
* Add tmpfiles.d configuration file to prevent automatic removal of tmux
diff --git a/debian/control b/debian/control
index 35352ce..8dd6653 100644
--- a/debian/control
+++ b/debian/control
@@ -7,7 +7,7 @@ Build-Depends: bison,
debianutils (>= 5.3-1~),
dpkg-dev (>= 1.16.1~),
libevent-dev (>> 2.0.10),
- libncurses-dev,
+ libncurses-dev (>> 6.5),
libsystemd-dev [linux-any],
libutempter-dev,
libutil-freebsd-dev [kfreebsd-any],
diff --git a/debian/patches/revert-upstream-43e5e80343.diff b/debian/patches/revert-upstream-43e5e80343.diff
new file mode 100644
index 0000000..32f91f1
--- /dev/null
+++ b/debian/patches/revert-upstream-43e5e80343.diff
@@ -0,0 +1,79 @@
+commit 0f5e175cc8df8c047348c06cbc48f664682b58a3
+Author: Romain Francoise <rfrancoise@debian.org>
+Date: Thu May 9 17:19:43 2024 +0200
+Forwarded: not-needed
+
+ Revert "Skip wrapped lines in top level search loop because they will be"
+
+ This reverts commit 43e5e80343185e69a1b864fc48095ede0b898180.
+
+diff --git a/window-copy.c b/window-copy.c
+index a1f18476ad..e5bd3ec10c 100644
+--- a/window-copy.c
++++ b/window-copy.c
+@@ -295,7 +295,6 @@ struct window_copy_mode_data {
+ int timeout; /* search has timed out */
+ #define WINDOW_COPY_SEARCH_TIMEOUT 10000
+ #define WINDOW_COPY_SEARCH_ALL_TIMEOUT 200
+-#define WINDOW_COPY_SEARCH_MAX_LINE 2000
+
+ int jumptype;
+ struct utf8_data *jumpchar;
+@@ -3214,9 +3213,7 @@ window_copy_search_lr_regex(struct grid *gd, u_int *ppx, u_int *psx, u_int py,
+ len = gd->sx - first;
+ endline = gd->hsize + gd->sy - 1;
+ pywrap = py;
+- while (buf != NULL &&
+- pywrap <= endline &&
+- len < WINDOW_COPY_SEARCH_MAX_LINE) {
++ while (buf != NULL && pywrap <= endline) {
+ gl = grid_get_line(gd, pywrap);
+ if (~gl->flags & GRID_LINE_WRAPPED)
+ break;
+@@ -3273,9 +3270,7 @@ window_copy_search_rl_regex(struct grid *gd, u_int *ppx, u_int *psx, u_int py,
+ len = gd->sx - first;
+ endline = gd->hsize + gd->sy - 1;
+ pywrap = py;
+- while (buf != NULL &&
+- pywrap <= endline &&
+- len < WINDOW_COPY_SEARCH_MAX_LINE) {
++ while (buf != NULL && (pywrap <= endline)) {
+ gl = grid_get_line(gd, pywrap);
+ if (~gl->flags & GRID_LINE_WRAPPED)
+ break;
+@@ -3614,11 +3609,10 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd,
+ struct grid *sgd, u_int fx, u_int fy, u_int endline, int cis, int wrap,
+ int direction, int regex)
+ {
+- u_int i, px, sx, ssize = 1;
+- int found = 0, cflags = REG_EXTENDED;
+- char *sbuf;
+- regex_t reg;
+- struct grid_line *gl;
++ u_int i, px, sx, ssize = 1;
++ int found = 0, cflags = REG_EXTENDED;
++ char *sbuf;
++ regex_t reg;
+
+ if (regex) {
+ sbuf = xmalloc(ssize);
+@@ -3635,9 +3629,6 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd,
+
+ if (direction) {
+ for (i = fy; i <= endline; i++) {
+- gl = grid_get_line(gd, i);
+- if (i != endline && gl->flags & GRID_LINE_WRAPPED)
+- continue;
+ if (regex) {
+ found = window_copy_search_lr_regex(gd,
+ &px, &sx, i, fx, gd->sx, &reg);
+@@ -3651,9 +3642,6 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd,
+ }
+ } else {
+ for (i = fy + 1; endline < i; i--) {
+- gl = grid_get_line(gd, i - 1);
+- if (i != endline && gl->flags & GRID_LINE_WRAPPED)
+- continue;
+ if (regex) {
+ found = window_copy_search_rl_regex(gd,
+ &px, &sx, i - 1, 0, fx + 1, &reg);
diff --git a/debian/patches/series b/debian/patches/series
index c87bbc1..801328d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,4 +1,7 @@
platform-quirks.diff
+revert-upstream-43e5e80343.diff
upstream-bd29a48b56.diff
upstream-6c0067c103.diff
upstream-aa17f0e0c1.diff
+upstream-3823fa2c57.diff
+upstream-424f13fe13.diff
diff --git a/debian/patches/upstream-3823fa2c57.diff b/debian/patches/upstream-3823fa2c57.diff
new file mode 100644
index 0000000..09f6dc2
--- /dev/null
+++ b/debian/patches/upstream-3823fa2c57.diff
@@ -0,0 +1,29 @@
+commit 3823fa2c577d440649a84af660e4d3b0c095d248
+Author: Nicholas Marriott <nicholas.marriott@gmail.com>
+Date: Tue Apr 30 12:38:58 2024 +0100
+
+ Send SIGHUP since some programs ignore SIGTERM, from Eduardo Grajeda in GitHub
+ issue 3958.
+
+diff --git a/compat/systemd.c b/compat/systemd.c
+index 063474e3dd..bde372ccab 100644
+--- a/compat/systemd.c
++++ b/compat/systemd.c
+@@ -144,6 +144,17 @@ systemd_move_pid_to_new_cgroup(pid_t pid, char **cause)
+ goto finish;
+ }
+
++ /*
++ * Make sure that the session shells are terminated with SIGHUP since
++ * bash and friends tend to ignore SIGTERM.
++ */
++ r = sd_bus_message_append(m, "(sv)", "SendSIGHUP", "b", 1);
++ if (r < 0) {
++ xasprintf(cause, "failed to append to properties: %s",
++ strerror(-r));
++ goto finish;
++ }
++
+ /*
+ * Inherit the slice from the parent process, or default to
+ * "app-tmux.slice" if that fails.
diff --git a/debian/patches/upstream-424f13fe13.diff b/debian/patches/upstream-424f13fe13.diff
new file mode 100644
index 0000000..8a9fa24
--- /dev/null
+++ b/debian/patches/upstream-424f13fe13.diff
@@ -0,0 +1,20 @@
+commit 424f13fe13036e75b1c80e7751b81529f4cd8e15
+Author: Nicholas Marriott <nicholas.marriott@gmail.com>
+Date: Wed Apr 10 07:15:21 2024 +0000
+
+ Do not get muddled and crash if focusing a pane that is exiting,
+ reported by Saul Nogueras in GitHub issue 3776.
+
+diff --git a/window.c b/window.c
+index 43c272bc8e..d53c606e07 100644
+--- a/window.c
++++ b/window.c
+@@ -474,7 +474,7 @@ window_pane_update_focus(struct window_pane *wp)
+ struct client *c;
+ int focused = 0;
+
+- if (wp != NULL) {
++ if (wp != NULL && (~wp->flags & PANE_EXITED)) {
+ if (wp != wp->window->active)
+ focused = 0;
+ else {