[arch-commits] Commit in gnome-terminal/trunk (4 files)

Jan Steffens heftig at archlinux.org
Tue Oct 27 20:34:42 UTC 2020


    Date: Tuesday, October 27, 2020 @ 20:34:41
  Author: heftig
Revision: 398947

3.38.1-2: FS#68318

Added:
  gnome-terminal/trunk/0001-screen-Manually-handle-env-inheritance.patch
  gnome-terminal/trunk/0002-screen-Move-env-sanitization-from-client.patch
  gnome-terminal/trunk/0003-screen-Ignore-some-more-environment-variables.patch
Modified:
  gnome-terminal/trunk/PKGBUILD

----------------------------------------------------------+
 0001-screen-Manually-handle-env-inheritance.patch        |   66 ++++++++
 0002-screen-Move-env-sanitization-from-client.patch      |  107 +++++++++++++
 0003-screen-Ignore-some-more-environment-variables.patch |   26 +++
 PKGBUILD                                                 |   19 +-
 4 files changed, 215 insertions(+), 3 deletions(-)

Added: 0001-screen-Manually-handle-env-inheritance.patch
===================================================================
--- 0001-screen-Manually-handle-env-inheritance.patch	                        (rev 0)
+++ 0001-screen-Manually-handle-env-inheritance.patch	2020-10-27 20:34:41 UTC (rev 398947)
@@ -0,0 +1,66 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Tue, 27 Oct 2020 19:50:30 +0000
+Subject: [PATCH] screen: Manually handle env inheritance
+
+Don't let VTE handle merging the environment; build the merged block
+ourselves. This avoids confusion when we reuse the exec data.
+
+https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/303
+---
+ src/terminal-screen.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/src/terminal-screen.c b/src/terminal-screen.c
+index 844b563c..2442a49d 100644
+--- a/src/terminal-screen.c
++++ b/src/terminal-screen.c
+@@ -942,9 +942,7 @@ terminal_screen_exec (TerminalScreen *screen,
+                                                                   &shell);
+ 
+   gboolean preserve_cwd = FALSE;
+-  GSpawnFlags spawn_flags = G_SPAWN_SEARCH_PATH_FROM_ENVP;
+-  if (initial_envv)
+-    spawn_flags |= VTE_SPAWN_NO_PARENT_ENVV;
++  GSpawnFlags spawn_flags = G_SPAWN_SEARCH_PATH_FROM_ENVP | VTE_SPAWN_NO_PARENT_ENVV;
+   gs_strfreev char **exec_argv = NULL;
+   if (!terminal_screen_get_child_command (screen,
+                                           argv,
+@@ -1431,25 +1429,27 @@ terminal_screen_get_child_environment (TerminalScreen *screen,
+ {
+   TerminalApp *app = terminal_app_get ();
+   char **env;
++  gs_strfreev **current_environ = NULL;
+   char *e, *v;
+   GHashTable *env_table;
+   GHashTableIter iter;
+   GPtrArray *retval;
+   guint i;
+ 
+   env_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ 
+-  env = initial_envv;
+-  if (env)
++  if (initial_envv)
++    env = initial_envv;
++  else
++    env = current_environ = g_get_environ ();
++
++  for (i = 0; env[i]; ++i)
+     {
+-      for (i = 0; env[i]; ++i)
+-        {
+-          v = strchr (env[i], '=');
+-          if (v)
+-             g_hash_table_replace (env_table, g_strndup (env[i], v - env[i]), g_strdup (v + 1));
+-           else
+-             g_hash_table_replace (env_table, g_strdup (env[i]), NULL);
+-        }
++      v = strchr (env[i], '=');
++      if (v)
++          g_hash_table_replace (env_table, g_strndup (env[i], v - env[i]), g_strdup (v + 1));
++        else
++          g_hash_table_replace (env_table, g_strdup (env[i]), NULL);
+     }
+ 
+   g_hash_table_remove (env_table, "COLUMNS");

Added: 0002-screen-Move-env-sanitization-from-client.patch
===================================================================
--- 0002-screen-Move-env-sanitization-from-client.patch	                        (rev 0)
+++ 0002-screen-Move-env-sanitization-from-client.patch	2020-10-27 20:34:41 UTC (rev 398947)
@@ -0,0 +1,107 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Tue, 27 Oct 2020 19:44:58 +0000
+Subject: [PATCH] screen: Move env sanitization from client
+
+We always want to sanitize the environment, even when we start with the
+server's environment instead of the client's one.
+
+https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/303
+---
+ src/terminal-client-utils.c | 31 -------------------------------
+ src/terminal-screen.c       | 30 ++++++++++++++++++++++++++----
+ 2 files changed, 26 insertions(+), 35 deletions(-)
+
+diff --git a/src/terminal-client-utils.c b/src/terminal-client-utils.c
+index f7fb6a81..774e5f50 100644
+--- a/src/terminal-client-utils.c
++++ b/src/terminal-client-utils.c
+@@ -119,37 +119,6 @@ terminal_client_append_exec_options (GVariantBuilder *builder,
+     gs_strfreev char **envv;
+ 
+     envv = g_get_environ ();
+-    envv = g_environ_unsetenv (envv, "COLORTERM");
+-    envv = g_environ_unsetenv (envv, "COLUMNS");
+-    envv = g_environ_unsetenv (envv, "DESKTOP_STARTUP_ID");
+-    envv = g_environ_unsetenv (envv, "EXIT_CODE");
+-    envv = g_environ_unsetenv (envv, "EXIT_STATUS");
+-    envv = g_environ_unsetenv (envv, "GIO_LAUNCHED_DESKTOP_FILE");
+-    envv = g_environ_unsetenv (envv, "GIO_LAUNCHED_DESKTOP_FILE_PID");
+-    envv = g_environ_unsetenv (envv, "GNOME_DESKTOP_ICON");
+-    envv = g_environ_unsetenv (envv, "INVOCATION_ID");
+-    envv = g_environ_unsetenv (envv, "JOURNAL_STREAM");
+-    envv = g_environ_unsetenv (envv, "LINES");
+-    envv = g_environ_unsetenv (envv, "LISTEN_FDNAMES");
+-    envv = g_environ_unsetenv (envv, "LISTEN_FDS");
+-    envv = g_environ_unsetenv (envv, "LISTEN_PID");
+-    envv = g_environ_unsetenv (envv, "MAINPID");
+-    envv = g_environ_unsetenv (envv, "MANAGERPID");
+-    envv = g_environ_unsetenv (envv, "NOTIFY_SOCKET");
+-    envv = g_environ_unsetenv (envv, "NOTIFY_SOCKET");
+-    envv = g_environ_unsetenv (envv, "PIDFILE");
+-    envv = g_environ_unsetenv (envv, "PWD");
+-    envv = g_environ_unsetenv (envv, "REMOTE_ADDR");
+-    envv = g_environ_unsetenv (envv, "REMOTE_PORT");
+-    envv = g_environ_unsetenv (envv, "SERVICE_RESULT");
+-    envv = g_environ_unsetenv (envv, "TERM");
+-    envv = g_environ_unsetenv (envv, "VTE_VERSION");
+-    envv = g_environ_unsetenv (envv, "WATCHDOG_PID");
+-    envv = g_environ_unsetenv (envv, "WATCHDOG_USEC");
+-    envv = g_environ_unsetenv (envv, "WINDOWID");
+-
+-    envv = g_environ_unsetenv (envv, TERMINAL_ENV_SERVICE_NAME);
+-    envv = g_environ_unsetenv (envv, TERMINAL_ENV_SCREEN);
+ 
+     g_variant_builder_add (builder, "{sv}",
+                            "environ",
+diff --git a/src/terminal-screen.c b/src/terminal-screen.c
+index 2442a49d..8abc59fd 100644
+--- a/src/terminal-screen.c
++++ b/src/terminal-screen.c
+@@ -959,10 +959,8 @@ terminal_screen_exec (TerminalScreen *screen,
+     return FALSE;
+   }
+ 
+-  if (!preserve_cwd) {
++  if (!preserve_cwd)
+     cwd = g_get_home_dir ();
+-    envv = g_environ_unsetenv (envv, "PWD");
+-  }
+ 
+   data->fd_list = fd_list ? g_object_ref(fd_list) : NULL;
+ 
+@@ -1452,9 +1450,33 @@ terminal_screen_get_child_environment (TerminalScreen *screen,
+           g_hash_table_replace (env_table, g_strdup (env[i]), NULL);
+     }
+ 
++  g_hash_table_remove (env_table, "COLORTERM");
+   g_hash_table_remove (env_table, "COLUMNS");
+-  g_hash_table_remove (env_table, "LINES");
++  g_hash_table_remove (env_table, "DESKTOP_STARTUP_ID");
++  g_hash_table_remove (env_table, "EXIT_CODE");
++  g_hash_table_remove (env_table, "EXIT_STATUS");
++  g_hash_table_remove (env_table, "GIO_LAUNCHED_DESKTOP_FILE");
++  g_hash_table_remove (env_table, "GIO_LAUNCHED_DESKTOP_FILE_PID");
+   g_hash_table_remove (env_table, "GNOME_DESKTOP_ICON");
++  g_hash_table_remove (env_table, "INVOCATION_ID");
++  g_hash_table_remove (env_table, "JOURNAL_STREAM");
++  g_hash_table_remove (env_table, "LINES");
++  g_hash_table_remove (env_table, "LISTEN_FDNAMES");
++  g_hash_table_remove (env_table, "LISTEN_FDS");
++  g_hash_table_remove (env_table, "LISTEN_PID");
++  g_hash_table_remove (env_table, "MAINPID");
++  g_hash_table_remove (env_table, "MANAGERPID");
++  g_hash_table_remove (env_table, "NOTIFY_SOCKET");
++  g_hash_table_remove (env_table, "NOTIFY_SOCKET");
++  g_hash_table_remove (env_table, "PIDFILE");
++  g_hash_table_remove (env_table, "PWD");
++  g_hash_table_remove (env_table, "REMOTE_ADDR");
++  g_hash_table_remove (env_table, "REMOTE_PORT");
++  g_hash_table_remove (env_table, "SERVICE_RESULT");
++  g_hash_table_remove (env_table, "TERM");
++  g_hash_table_remove (env_table, "VTE_VERSION");
++  g_hash_table_remove (env_table, "WATCHDOG_PID");
++  g_hash_table_remove (env_table, "WATCHDOG_USEC");
+ 
+   /* WINDOWID does not work correctly ever since we don't use a native
+    * GdkWindow anymore, and it also becomes incorrect if the screen is

Added: 0003-screen-Ignore-some-more-environment-variables.patch
===================================================================
--- 0003-screen-Ignore-some-more-environment-variables.patch	                        (rev 0)
+++ 0003-screen-Ignore-some-more-environment-variables.patch	2020-10-27 20:34:41 UTC (rev 398947)
@@ -0,0 +1,26 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Tue, 27 Oct 2020 20:16:39 +0000
+Subject: [PATCH] screen: Ignore some more environment variables
+
+- `GJS_DEBUG_OUTPUT` and `GJS_DEBUG_TOPICS` are set by GNOME Shell.
+- `G_ENABLE_DIAGNOSTIC` is set by GNOME Terminal itself.
+---
+ src/terminal-screen.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/terminal-screen.c b/src/terminal-screen.c
+index 8abc59fd..6e8c590d 100644
+--- a/src/terminal-screen.c
++++ b/src/terminal-screen.c
+@@ -1457,7 +1457,10 @@ terminal_screen_get_child_environment (TerminalScreen *screen,
+   g_hash_table_remove (env_table, "EXIT_STATUS");
+   g_hash_table_remove (env_table, "GIO_LAUNCHED_DESKTOP_FILE");
+   g_hash_table_remove (env_table, "GIO_LAUNCHED_DESKTOP_FILE_PID");
++  g_hash_table_remove (env_table, "GJS_DEBUG_OUTPUT");
++  g_hash_table_remove (env_table, "GJS_DEBUG_TOPICS");
+   g_hash_table_remove (env_table, "GNOME_DESKTOP_ICON");
++  g_hash_table_remove (env_table, "G_ENABLE_DIAGNOSTIC");
+   g_hash_table_remove (env_table, "INVOCATION_ID");
+   g_hash_table_remove (env_table, "JOURNAL_STREAM");
+   g_hash_table_remove (env_table, "LINES");

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-10-27 20:32:13 UTC (rev 398946)
+++ PKGBUILD	2020-10-27 20:34:41 UTC (rev 398947)
@@ -3,7 +3,7 @@
 
 pkgname=gnome-terminal
 pkgver=3.38.1
-pkgrel=1
+pkgrel=2
 pkgdesc="The GNOME Terminal Emulator"
 url="https://wiki.gnome.org/Apps/Terminal"
 arch=(x86_64)
@@ -13,8 +13,14 @@
              gnome-shell vala yelp-tools git)
 groups=(gnome)
 _commit=71b414832b1bf02f748048c59c31de7761181d44  # tags/3.38.1^0
-source=("git+https://gitlab.gnome.org/GNOME/gnome-terminal.git#commit=$_commit")
-sha256sums=('SKIP')
+source=("git+https://gitlab.gnome.org/GNOME/gnome-terminal.git#commit=$_commit"
+        0001-screen-Manually-handle-env-inheritance.patch
+        0002-screen-Move-env-sanitization-from-client.patch
+        0003-screen-Ignore-some-more-environment-variables.patch)
+sha256sums=('SKIP'
+            '9517a7be3c8debdd7c57390e3c62eb8395daf9b9949614023e385cc8cd91b1e4'
+            'c48fe6060b852e136fee7b94b42fce5c8b9ac201720083d0b3edfc22cacdd285'
+            'dc80adeee3d1106d6e814c2799a58e1bf4900c967aa7b3ca603f393b5abfcde7')
 
 pkgver() {
   cd $pkgname
@@ -23,6 +29,13 @@
 
 prepare() {
   cd $pkgname
+
+  # https://bugs.archlinux.org/task/68318
+  # https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/303
+  git apply -3 ../0001-screen-Manually-handle-env-inheritance.patch
+  git apply -3 ../0002-screen-Move-env-sanitization-from-client.patch
+  git apply -3 ../0003-screen-Ignore-some-more-environment-variables.patch
+
   NOCONFIGURE=1 ./autogen.sh
 }
 



More information about the arch-commits mailing list