This commit is contained in:
Gerben Jan Dijkman 2022-10-28 14:12:01 +02:00
parent fca93b590c
commit 69dc7e35da
8 changed files with 435 additions and 0 deletions

6
x11-libs/vte/Manifest Normal file
View File

@ -0,0 +1,6 @@
DIST vte-0.28.2.tar.xz 962340 BLAKE2B 1e4b5977962265be77917ccfc9118ed93232c03d7a16b6c08a27e721fe71f8c1dd1783a439530d7b3d915111cb8cc78281f1e9e351d6a83edd31f224309ca1e9 SHA512 d6a50481aaa8946cca3779e0b328fef551be534d70366a75385d1f8ead3fcddec57bed85c7d4bc2d9f34546532129e63083aafa33cbb0efcbc7dc9d66e7c45f6
DIST vte-0.68.0-command-notify.patch.xz 9748 BLAKE2B de2d4c9b7f2c2b21518984f818d0052c0084398f5f4ee30d766a6adb9c4536fdec5027c753d3d710fb7432e67472b7f8ca44f1dd5f51aaef48d9124708975d24 SHA512 89be91cdba36749f97bac872f0f2196be7d36a58beaf94fa24a3ae9c266bdfbf4f4fbf1d10f43a276540653fff7062eb844107016e7f014437f2903d251dc1d7
DIST vte-0.68.0.tar.bz2 507598 BLAKE2B 10274d9e804f00bf071b7848633ca8de2953f4e91dc2967e33b7d6698bb304baac4f0e0431debae5a972c2c56c65efd1c5b92455a17db08cf254ddec56d3276e SHA512 785df7261b5075f166e59de7d3535b381564715ce65efd4837a130e153528691b610fc6160c00f0f17008f5f4ee94c23350d9a477b4b1d58da6ace083e5caae1
DIST vte-0.70.0-command-notify.patch.xz 9040 BLAKE2B 108dd05d00409af90b1fd3e9b5c3b0e5586ac80204cef8840fda935204cbc480fec1193e2a0a2782f98e2b094c3caebbfe61cf18631b16921df05cf3808afd22 SHA512 92123e7f5cb6ef876f2b2b108dbef59bce212efebd64cd790d49d9ee3215344acd848eec5d326fe2c3bd236846ed3b896148024390093491b2f6e2f7c46e2bd1
DIST vte-0.70.0.tar.bz2 499283 BLAKE2B 694cf4dfee334e9b54bb8e47f862167acbb8ffc7ac8e81889acd4786449cb45944a87a5adaa036f46458c350ca2119bb356e90dfa71f03638c9c2b14d2ccb877 SHA512 362b71296ae39a16b55402f524a39b063f66ae237e6e161ccc89ca2bb1f2a5c43f4d706d9f3bfae12a99fdb81c4e70408c7f3eca2c01316950b0a3a1a1d79423
DIST vte-0.70.1.tar.bz2 502044 BLAKE2B 0a9ce43c1863e823fcd073fd30fb6b2cb39e9168e850796fe12be2b9bdfc0b24ceea974b4c94bcdd10f2225613990e0e079194380241b7e625cb6dc4309a7476 SHA512 88de629b382eca8a42199b2ba9b248e231817e1de7183417aed150bcf61530084f7177d73dee9aab25fe4c3ab80d795b5fdcae336687560d3b582bd04181353d

View File

@ -0,0 +1,51 @@
reported upstream: https://bugzilla.gnome.org/show_bug.cgi?id=652290
diff -ru vte-0.26.2.orig/configure.in vte-0.26.2/configure.in
--- vte-0.26.2.orig/configure.in 2011-08-17 08:30:55 +0200
+++ vte-0.26.2/configure.in 2011-08-17 08:35:42 +0200
@@ -362,7 +362,11 @@
AC_DEFINE(HAVE_RECVMSG,1,[Define if you have the recvmsg function.])
fi
AC_CHECK_FUNC(floor,,AC_CHECK_LIB(m,floor,LIBS=["$LIBS -lm"]))
-AC_CHECK_FUNCS([ceil floor])
+dnl if the first check didn't find floor, it caches the "no" value,
+dnl and doesn't recheck. this makes the below check fail always on
+dnl systems with floor in -lm. thus we unset the chached result.
+unset ac_cv_func_floor
+AC_CHECK_FUNCS([ceil floor round])
# Look for tgetent
--- vte-0.26.2.orig/configure 2012-04-30 20:02:55.000000000 +0200
+++ vte-0.26.2/configure 2012-04-30 20:03:16.000000000 +0200
@@ -13277,7 +13277,7 @@
fi
-for ac_func in ceil floor
+for ac_func in ceil floor round
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
diff -ru vte-0.26.2.orig/src/vte.c vte-0.26.2/src/vte.c
--- vte-0.26.2.orig/src/vte.c 2011-08-17 08:30:58 +0200
+++ vte-0.26.2/src/vte.c 2011-08-17 08:38:09 +0200
@@ -63,6 +63,18 @@
#include <locale.h>
#endif
+#ifndef HAVE_ROUND
+# if defined(HAVE_CEIL) && defined(HAVE_FLOOR)
+static inline double round(double x) {
+ if(x - floor(x) < 0.5) {
+ return floor(x);
+ } else {
+ return ceil(x);
+ }
+}
+# endif
+#endif
+
#if GTK_CHECK_VERSION (2, 90, 7)
#define GDK_KEY(symbol) GDK_KEY_##symbol
#else

View File

@ -0,0 +1,40 @@
From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
From: Christian Persch <chpe@gnome.org>
Date: Sat, 19 May 2012 17:36:09 +0000
Subject: emulation: Limit integer arguments to 65535
To guard against malicious sequences containing excessively big numbers,
limit all parsed numbers to 16 bit range. Doing this here in the parsing
routine is a catch-all guard; this doesn't preclude enforcing
more stringent limits in the handlers themselves.
https://bugzilla.gnome.org/show_bug.cgi?id=676090
---
diff --git a/src/table.c b/src/table.c
index 140e8c8..85cf631 100644
--- a/src/table.c
+++ b/src/table.c
@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
if (G_UNLIKELY (*array == NULL)) {
*array = g_value_array_new(1);
}
- g_value_set_long(&value, total);
+ g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
g_value_array_append(*array, &value);
} while (i++ < arginfo->length);
g_value_unset(&value);
diff --git a/src/vteseq.c b/src/vteseq.c
index 457c06a..46def5b 100644
--- a/src/vteseq.c
+++ b/src/vteseq.c
@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
GValueArray *params,
VteTerminalSequenceHandler handler)
{
- vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
+ vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
}
static void
--
cgit v0.9.0.2

View File

@ -0,0 +1,86 @@
https://git.gnome.org/browse/vte/commit/?id=88e8e89560a62d0981ce2b18974a230d0a07dbdd
From 88e8e89560a62d0981ce2b18974a230d0a07dbdd Mon Sep 17 00:00:00 2001
From: Micah Cowan <micah@cowan.name>
Date: Tue, 22 Oct 2013 23:30:43 +0200
Subject: widget: Fix invalidation region
When the sequence handler moves the cursor into the restricted scrolling region,
the bbox needs to be reset, too.
Fixes glitches with interspersing writes to the bottom line with scrolls of the
upper region, and also fixes missing screen redraws when using mosh.
https://bugzilla.gnome.org/show_bug.cgi?id=542087
https://bugzilla.gnome.org/show_bug.cgi?id=686097
diff --git a/src/vte.c b/src/vte.c
index 9f6d7d8..a4d9d25 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -4077,6 +4077,7 @@ vte_terminal_process_incoming(VteTerminal *terminal)
long wcount, start, delta;
gboolean leftovers, modified, bottom, again;
gboolean invalidated_text;
+ gboolean in_scroll_region;
GArray *unichars;
struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL;
@@ -4096,6 +4097,10 @@ vte_terminal_process_incoming(VteTerminal *terminal)
cursor = screen->cursor_current;
cursor_visible = terminal->pvt->cursor_visible;
+ in_scroll_region = screen->scrolling_restricted
+ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start))
+ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end));
+
/* We should only be called when there's data to process. */
g_assert(terminal->pvt->incoming ||
(terminal->pvt->pending->len > 0));
@@ -4194,6 +4199,8 @@ skip_chunk:
* points to the first character which isn't part of this
* sequence. */
if ((match != NULL) && (match[0] != '\0')) {
+ gboolean new_in_scroll_region;
+
/* Call the right sequence handler for the requested
* behavior. */
_vte_terminal_handle_sequence(terminal,
@@ -4204,12 +4211,21 @@ skip_chunk:
start = (next - wbuf);
modified = TRUE;
- /* if we have moved during the sequence handler, restart the bbox */
+ new_in_scroll_region = screen->scrolling_restricted
+ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start))
+ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end));
+
+ delta = screen->scroll_delta; /* delta may have changed from sequence. */
+
+ /* if we have moved greatly during the sequence handler, or moved
+ * into a scroll_region from outside it, restart the bbox.
+ */
if (invalidated_text &&
- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK ||
- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK ||
- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK ||
- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) {
+ ((new_in_scroll_region && !in_scroll_region) ||
+ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK ||
+ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK ||
+ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK ||
+ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) {
/* Clip off any part of the box which isn't already on-screen. */
bbox_topleft.x = MAX(bbox_topleft.x, 0);
bbox_topleft.y = MAX(bbox_topleft.y, delta);
@@ -4229,6 +4245,8 @@ skip_chunk:
bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT;
bbox_topleft.x = bbox_topleft.y = G_MAXINT;
}
+
+ in_scroll_region = new_in_scroll_region;
} else
/* Second, we have a NULL match, and next points to the very
* next character in the buffer. Insert the character which
--
cgit v0.10.2

View File

@ -0,0 +1,74 @@
From 180dcc578e13c6096e277fb853e7162db640f207 Mon Sep 17 00:00:00 2001
From: Alexandre Rostovtsev <tetromino@gentoo.org>
Date: Tue, 15 Nov 2011 03:06:40 -0500
Subject: [PATCH] Map both gdk's Meta and Alt to vte's Meta for >=gtk+-3.2.2
compatibility
Also, since VTE_META_MASK is now a mask with multiple bits set, code that
compares gdk key modifiers to VTE_META_MASK by numerical equality is no
longer guaranteed to work. Therefore, for such comparisons a new function,
vte_keymap_fixup_modifiers, is introduced; it ensures that if any bits
matching matching VTE_META_MASK are set, then all are set.
https://bugzilla.gnome.org/show_bug.cgi?id=663779
---
src/keymap.c | 15 +++++++++++++--
src/keymap.h | 2 +-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/src/keymap.c b/src/keymap.c
index 9a21669..95b4c5b 100644
--- a/src/keymap.c
+++ b/src/keymap.c
@@ -990,6 +990,17 @@ static const struct _vte_keymap_group {
{GDK_KEY (F35), _vte_keymap_GDK_F35},
};
+/* Restrict modifiers to the specified mask and ensure that VTE_META_MASK,
+ * despite being a compound mask, is treated as indivisible. */
+GdkModifierType
+_vte_keymap_fixup_modifiers(GdkModifierType modifiers,
+ GdkModifierType mask)
+{
+ if (modifiers & VTE_META_MASK)
+ modifiers |= VTE_META_MASK;
+ return modifiers & mask;
+}
+
/* Map the specified keyval/modifier setup, dependent on the mode, to either
* a literal string or a capability name. */
void
@@ -1104,7 +1115,7 @@ _vte_keymap_map(guint keyval,
} else {
fkey_mode = fkey_default;
}
- modifiers &= (GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
+ modifiers = _vte_keymap_fixup_modifiers(modifiers, GDK_SHIFT_MASK | GDK_CONTROL_MASK | VTE_META_MASK | VTE_NUMLOCK_MASK);
/* Search for the conditions. */
for (i = 0; entries[i].normal_length || entries[i].special[0]; i++)
@@ -1375,7 +1386,7 @@ _vte_keymap_key_add_key_modifiers(guint keyval,
return;
}
- switch (modifiers & significant_modifiers) {
+ switch (_vte_keymap_fixup_modifiers(modifiers, significant_modifiers)) {
case 0:
modifier = 0;
break;
diff --git a/src/keymap.h b/src/keymap.h
index 243e22e..21d9b8e 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -27,7 +27,7 @@
G_BEGIN_DECLS
-#define VTE_META_MASK GDK_META_MASK
+#define VTE_META_MASK (GDK_META_MASK | GDK_MOD1_MASK)
#define VTE_NUMLOCK_MASK GDK_MOD2_MASK
/* Map the specified keyval/modifier setup, dependent on the mode, to either
--
1.7.8.rc3

View File

@ -0,0 +1,48 @@
https://gitlab.gnome.org/GNOME/vte/-/issues/350
From d459d32126119c8d78f8239b8b857a255e6005d7 Mon Sep 17 00:00:00 2001
From: Matt Turner <mattst88@gmail.com>
Date: Sat, 1 May 2021 08:31:45 -0400
Subject: [PATCH] meson: Find python explicitly to honor downstream python
choice
---
meson.build | 1 +
src/meson.build | 2 ++
2 files changed, 3 insertions(+)
diff --git a/meson.build b/meson.build
index 4f5a7c57..6404802f 100644
--- a/meson.build
+++ b/meson.build
@@ -461,6 +461,7 @@ pango_dep = dependency('pango', version: '>=' + pango_req_version)
pcre2_dep = dependency('libpcre2-8', version: '>=' + pcre2_req_version)
pthreads_dep = dependency('threads')
zlib_dep = dependency('zlib')
+python = import('python').find_installation('python3')
if get_option('fribidi')
fribidi_dep = dependency('fribidi', version: '>=' + fribidi_req_version)
diff --git a/src/meson.build b/src/meson.build
index a1440da5..4ac6a7f2 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -60,6 +60,7 @@ modes_sources = files(
modes_sources += custom_target(
'modes',
command: [
+ python,
files('modes.py'),
'--destdir', '@OUTDIR@',
],
@@ -92,6 +93,7 @@ parser_sources = files(
parser_sources += custom_target(
'parser-seq',
command: [
+ python,
files('parser-seq.py'),
'--destdir', '@OUTDIR@',
],
--
2.26.3

View File

@ -0,0 +1,29 @@
https://gitlab.gnome.org/GNOME/vte/-/issues/72
https://bugs.gentoo.org/835489
https://bugs.gentoo/org/554416
From 1c1de9e9119cf1e0ef45a594ca9bbf306d2209cb Mon Sep 17 00:00:00 2001
From:
Date: Fri, 12 Mar 2021 08:41:13 -0600
Subject: [PATCH] Expanded non-standard W_EXITCODE macro for Musl compatibility
--- a/src/widget.cc
+++ b/src/widget.cc
@@ -20,8 +20,6 @@
#include "widget.hh"
-#include <sys/wait.h> // for W_EXITCODE
-
#include <exception>
#include <new>
#include <string>
@@ -235,7 +233,7 @@ void
Widget::dispose() noexcept
{
if (m_terminal->terminate_child()) {
- int status = W_EXITCODE(0, SIGKILL);
+ int status = (0) << 8 | (SIGKILL); // W_EXITCODE(ret, sig)
emit_child_exited(status);
}
}

View File

@ -0,0 +1,101 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{8..11} )
inherit gnome.org meson python-any-r1 vala xdg
DESCRIPTION="Library providing a virtual terminal emulator widget"
HOMEPAGE="https://wiki.gnome.org/Apps/Terminal/VTE https://gitlab.gnome.org/GNOME/vte"
# Once SIXEL support ships (0.66 or later), might need xterm license (but code might be considered upgraded to LGPL-3+)
LICENSE="LGPL-3+ GPL-3+"
SLOT="2.91" # vte_api_version in meson.build
IUSE="+crypt debug gtk-doc +icu +introspection systemd +vala vanilla"
KEYWORDS="~amd64 ~arm64"
REQUIRED_USE="
gtk-doc? ( introspection )
vala? ( introspection )
"
# Upstream is hostile and refuses to upload tarballs.
SRC_URI="https://gitlab.gnome.org/GNOME/${PN}/-/archive/${PV}/${P}.tar.bz2"
SRC_URI="${SRC_URI} !vanilla? ( https://dev.gentoo.org/~mattst88/distfiles/${PN}-0.70.0-command-notify.patch.xz )"
DEPEND="
>=x11-libs/gtk+-3.24.22:3[introspection?]
>=dev-libs/fribidi-1.0.0
>=dev-libs/glib-2.52:2
crypt? ( >=net-libs/gnutls-3.2.7:0= )
icu? ( dev-libs/icu:= )
>=x11-libs/pango-1.22.0
>=dev-libs/libpcre2-10.21:=
systemd? ( >=sys-apps/systemd-220:= )
sys-libs/zlib
introspection? ( >=dev-libs/gobject-introspection-1.56:= )
x11-libs/pango[introspection?]
"
RDEPEND="${DEPEND}
~gui-libs/vte-common-${PV}[systemd?]
"
BDEPEND="
${PYTHON_DEPS}
dev-libs/libxml2:2
dev-util/glib-utils
gtk-doc? ( dev-util/gi-docgen )
>=sys-devel/gettext-0.19.8
virtual/pkgconfig
vala? ( $(vala_depend) )
"
src_prepare() {
default
use vala && vala_setup
xdg_environment_reset
use elibc_musl && eapply "${FILESDIR}"/${PN}-0.66.2-musl-W_EXITCODE.patch
if ! use vanilla; then
# Part of https://src.fedoraproject.org/rpms/vte291/raw/f37/f/vte291-cntnr-precmd-preexec-scroll.patch
# Adds OSC 777 support for desktop notifications in gnome-terminal or elsewhere
eapply "${WORKDIR}"/${PN}-0.70.0-command-notify.patch
fi
# -Ddebugg option enables various debug support via VTE_DEBUG, but also ggdb3; strip the latter
sed -e '/ggdb3/d' -i meson.build || die
sed -i 's/vte_gettext_domain = vte_api_name/vte_gettext_domain = vte_gtk3_api_name/' meson.build || die
}
src_configure() {
local emesonargs=(
-Da11y=true
$(meson_use debug debugg)
$(meson_use gtk-doc docs)
$(meson_use introspection gir)
-Dfribidi=true # pulled in by pango anyhow
-Dglade=true
$(meson_use crypt gnutls)
-Dgtk3=true
-Dgtk4=false
$(meson_use icu)
$(meson_use systemd _systemd)
$(meson_use vala vapi)
)
meson_src_configure
}
src_install() {
meson_install # not meson_src_install because this would include einstalldocs, which would result in file collisions with gui-libs/vte
# Remove files that are provided by gui-libs/vte-common
rm "${ED}"/usr/libexec/vte-urlencode-cwd || die
rm "${ED}"/etc/profile.d/vte.sh || die
rm "${ED}"/etc/profile.d/vte.csh || die
if use systemd; then
rm "${ED}"/usr/lib/systemd/user/vte-spawn-.scope.d/defaults.conf || die
fi
if use gtk-doc; then
mkdir -p "${ED}"/usr/share/gtk-doc/ || die
mv "${ED}"/usr/share/doc/vte-${SLOT} "${ED}"/usr/share/gtk-doc/vte-${SLOT}-gtk3 || die
fi
}