diff --git a/x11-libs/vte/Manifest b/x11-libs/vte/Manifest new file mode 100644 index 0000000..2ea5475 --- /dev/null +++ b/x11-libs/vte/Manifest @@ -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 diff --git a/x11-libs/vte/files/vte-0.28.2-interix.patch b/x11-libs/vte/files/vte-0.28.2-interix.patch new file mode 100644 index 0000000..c54d46e --- /dev/null +++ b/x11-libs/vte/files/vte-0.28.2-interix.patch @@ -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 + #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 diff --git a/x11-libs/vte/files/vte-0.28.2-limit-arguments.patch b/x11-libs/vte/files/vte-0.28.2-limit-arguments.patch new file mode 100644 index 0000000..fd45407 --- /dev/null +++ b/x11-libs/vte/files/vte-0.28.2-limit-arguments.patch @@ -0,0 +1,40 @@ +From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001 +From: Christian Persch +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 diff --git a/x11-libs/vte/files/vte-0.28.2-repaint-after-change-scroll-region.patch b/x11-libs/vte/files/vte-0.28.2-repaint-after-change-scroll-region.patch new file mode 100644 index 0000000..86e5471 --- /dev/null +++ b/x11-libs/vte/files/vte-0.28.2-repaint-after-change-scroll-region.patch @@ -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 +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 + diff --git a/x11-libs/vte/files/vte-0.30.1-alt-meta.patch b/x11-libs/vte/files/vte-0.30.1-alt-meta.patch new file mode 100644 index 0000000..bd364be --- /dev/null +++ b/x11-libs/vte/files/vte-0.30.1-alt-meta.patch @@ -0,0 +1,74 @@ +From 180dcc578e13c6096e277fb853e7162db640f207 Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev +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 + diff --git a/x11-libs/vte/files/vte-0.64.1-meson-Find-python-explicitly-to-honor-downstream-pyt.patch b/x11-libs/vte/files/vte-0.64.1-meson-Find-python-explicitly-to-honor-downstream-pyt.patch new file mode 100644 index 0000000..79171d2 --- /dev/null +++ b/x11-libs/vte/files/vte-0.64.1-meson-Find-python-explicitly-to-honor-downstream-pyt.patch @@ -0,0 +1,48 @@ +https://gitlab.gnome.org/GNOME/vte/-/issues/350 + +From d459d32126119c8d78f8239b8b857a255e6005d7 Mon Sep 17 00:00:00 2001 +From: Matt Turner +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 + diff --git a/x11-libs/vte/files/vte-0.66.2-musl-W_EXITCODE.patch b/x11-libs/vte/files/vte-0.66.2-musl-W_EXITCODE.patch new file mode 100644 index 0000000..b629613 --- /dev/null +++ b/x11-libs/vte/files/vte-0.66.2-musl-W_EXITCODE.patch @@ -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 // for W_EXITCODE +- + #include + #include + #include +@@ -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); + } + } diff --git a/x11-libs/vte/vte-0.70.1.ebuild b/x11-libs/vte/vte-0.70.1.ebuild new file mode 100644 index 0000000..66ad554 --- /dev/null +++ b/x11-libs/vte/vte-0.70.1.ebuild @@ -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 +}