commit:     6040e1f56ea5f55bad8f124c104adcaa1b171fa1
Author:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 21 17:23:29 2017 +0000
Commit:     Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Sat Jan 21 17:24:11 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6040e1f5

app-misc/tmux: Revbump to fix status-right display (bug #606568).

Package-Manager: Portage-2.3.3, Repoman-2.3.1

 .../files/tmux-2.3-screen_write_copy-fix.patch     | 63 ++++++++++++++
 app-misc/tmux/tmux-2.3-r1.ebuild                   | 96 ++++++++++++++++++++++
 2 files changed, 159 insertions(+)

diff --git a/app-misc/tmux/files/tmux-2.3-screen_write_copy-fix.patch 
b/app-misc/tmux/files/tmux-2.3-screen_write_copy-fix.patch
new file mode 100644
index 00000000..b838327
--- /dev/null
+++ b/app-misc/tmux/files/tmux-2.3-screen_write_copy-fix.patch
@@ -0,0 +1,63 @@
+From 30086e504c8a5389b96b72b81ac8dbefe19e0cf1 Mon Sep 17 00:00:00 2001
+From: nicm <nicm>
+Date: Wed, 5 Oct 2016 22:00:29 +0000
+Subject: [PATCH] screen_write_copy tried to be clever and clear the line if it
+ reached the end of the source, but it was wrong and causes problems that are
+ only showing up now we are more aggressive about skipping redundant screen
+ updates. Remove the optimization entirely as more trouble than it is worth to
+ fix (and it'll have to go when BCE is done anyway).
+
+---
+ screen-write.c | 34 +++++++---------------------------
+ 1 file changed, 7 insertions(+), 27 deletions(-)
+
+diff --git a/screen-write.c b/screen-write.c
+index 3977517..3a1fc8c 100644
+--- a/screen-write.c
++++ b/screen-write.c
+@@ -394,38 +394,18 @@ screen_write_copy(struct screen_write_ctx *ctx, struct 
screen *src, u_int px,
+ {
+       struct screen           *s = ctx->s;
+       struct grid             *gd = src->grid;
+-      struct grid_line        *gl;
+       struct grid_cell         gc;
+-      u_int                    xx, yy, cx, cy, ax, bx;
++      u_int                    xx, yy, cx, cy;
+ 
+       cx = s->cx;
+       cy = s->cy;
++
+       for (yy = py; yy < py + ny; yy++) {
+-              gl = &gd->linedata[yy];
+-              if (yy < gd->hsize + gd->sy) {
+-                      /*
+-                       * Find start and end position and copy between
+-                       * them. Limit to the real end of the line then use a
+-                       * clear EOL only if copying to the end, otherwise
+-                       * could overwrite whatever is there already.
+-                       */
+-                      if (px > gl->cellsize)
+-                              ax = gl->cellsize;
+-                      else
+-                              ax = px;
+-                      if (px + nx == gd->sx && px + nx > gl->cellsize)
+-                              bx = gl->cellsize;
+-                      else
+-                              bx = px + nx;
+-
+-                      for (xx = ax; xx < bx; xx++) {
+-                              grid_get_cell(gd, xx, yy, &gc);
+-                              screen_write_cell(ctx, &gc);
+-                      }
+-                      if (px + nx == gd->sx && px + nx > gl->cellsize)
+-                              screen_write_clearendofline(ctx);
+-              } else
+-                      screen_write_clearline(ctx);
++              for (xx = px; xx < px + nx; xx++) {
++                      grid_get_cell(gd, xx, yy, &gc);
++                      screen_write_cell(ctx, &gc);
++              }
++
+               cy++;
+               screen_write_cursormove(ctx, cx, cy);
+       }

diff --git a/app-misc/tmux/tmux-2.3-r1.ebuild b/app-misc/tmux/tmux-2.3-r1.ebuild
new file mode 100644
index 00000000..bc1dfcd
--- /dev/null
+++ b/app-misc/tmux/tmux-2.3-r1.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit autotools flag-o-matic versionator
+
+DESCRIPTION="Terminal multiplexer"
+HOMEPAGE="http://tmux.github.io/";
+SRC_URI="https://github.com/${PN}/${PN}/releases/download/${PV}/${P}.tar.gz";
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x64-freebsd ~amd64-linux ~x86-linux 
~ppc-macos ~x64-macos ~x86-macos"
+IUSE="debug selinux utempter vim-syntax kernel_FreeBSD kernel_linux"
+
+CDEPEND="
+       dev-libs/libevent:0=
+       || (
+               =dev-libs/libevent-2.0*
+               >=dev-libs/libevent-2.1.5-r4
+       )
+       utempter? (
+               kernel_linux? ( sys-libs/libutempter )
+               kernel_FreeBSD? ( || ( >=sys-freebsd/freebsd-lib-9.0 
sys-libs/libutempter ) )
+       )
+       sys-libs/ncurses:0="
+DEPEND="${CDEPEND}
+       virtual/pkgconfig"
+RDEPEND="${CDEPEND}
+       dev-libs/libevent:=
+       selinux? ( sec-policy/selinux-screen )
+       vim-syntax? (
+               || (
+                       app-editors/vim
+                       app-editors/gvim
+               )
+       )"
+
+DOCS=( CHANGES FAQ README TODO )
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-2.3-flags.patch
+
+       # usptream fixes (can be removed with next version bump)
+       "${FILESDIR}"/${P}-screen_write_copy-fix.patch
+)
+
+src_prepare() {
+       # bug 438558
+       # 1.7 segfaults when entering copy mode if compiled with -Os
+       replace-flags -Os -O2
+
+       # regenerate aclocal.m4 to support earlier automake versions
+       rm aclocal.m4 || die
+
+       default
+
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --sysconfdir="${EPREFIX}"/etc \
+               $(use_enable debug) \
+               $(use_enable utempter)
+}
+
+src_install() {
+       default
+
+       einstalldocs
+
+       dodoc example_tmux.conf
+       docompress -x /usr/share/doc/${PF}/example_tmux.conf
+
+       if use vim-syntax; then
+               insinto /usr/share/vim/vimfiles/ftdetect
+               doins "${FILESDIR}"/tmux.vim
+       fi
+}
+
+pkg_postinst() {
+       if ! version_is_at_least 1.9a ${REPLACING_VERSIONS:-1.9a}; then
+               echo
+               ewarn "Some configuration options changed in this release."
+               ewarn "Please read the CHANGES file in /usr/share/doc/${PF}/"
+               ewarn
+               ewarn "WARNING: After updating to ${P} you will _not_ be able 
to connect to any"
+               ewarn "older, running tmux server instances. You'll have to use 
an existing client to"
+               ewarn "end your old sessions or kill the old server instances. 
Otherwise you'll have"
+               ewarn "to temporarily downgrade to access them."
+               echo
+       fi
+}

Reply via email to