about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/glib
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-12-06 19:57:55 +0000
committerAlyssa Ross <hi@alyssa.is>2023-02-08 13:48:30 +0000
commitbf3aadfdd39aa197e18bade671fab6726349ffa4 (patch)
tree698567af766ed441d757b57a7b21e68d4a342a2b /nixpkgs/pkgs/development/libraries/glib
parentf4afc5a01d9539ce09e47494e679c51f80723d07 (diff)
parent99665eb45f58d959d2cb9e49ddb960c79d596f33 (diff)
downloadnixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.gz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.bz2
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.lz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.xz
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.tar.zst
nixlib-bf3aadfdd39aa197e18bade671fab6726349ffa4.zip
Merge commit '99665eb45f58d959d2cb9e49ddb960c79d596f33'
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/glib')
-rw-r--r--nixpkgs/pkgs/development/libraries/glib/default.nix12
-rw-r--r--nixpkgs/pkgs/development/libraries/glib/elementary-terminal-support.patch16
-rw-r--r--nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch55
3 files changed, 80 insertions, 3 deletions
diff --git a/nixpkgs/pkgs/development/libraries/glib/default.nix b/nixpkgs/pkgs/development/libraries/glib/default.nix
index ecae47b3d2dd..8fb12fc0203a 100644
--- a/nixpkgs/pkgs/development/libraries/glib/default.nix
+++ b/nixpkgs/pkgs/development/libraries/glib/default.nix
@@ -45,11 +45,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "glib";
-  version = "2.72.0";
+  version = "2.72.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/glib/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "177w1MTnpi4I77jl8lKgE1cAe5WIqH/ytGOjhXAR950=";
+    sha256 = "Sjmi9iS4US1QDVhAFz7af6hfUcEJBS6ugGrOzoXTRfA=";
   };
 
   patches = optionals stdenv.isDarwin [
@@ -61,6 +61,12 @@ stdenv.mkDerivation rec {
     ./glib-appinfo-watch.patch
     ./schema-override-variable.patch
 
+    # Add support for the GNOME’s default terminal emulator.
+    # https://gitlab.gnome.org/GNOME/glib/-/issues/2618
+    ./gnome-console-support.patch
+    # Do the same for Pantheon’s terminal emulator.
+    ./elementary-terminal-support.patch
+
     # GLib contains many binaries used for different purposes;
     # we will install them to different outputs:
     # 1. Tools for desktop environment ($bin)
@@ -115,7 +121,7 @@ stdenv.mkDerivation rec {
   strictDeps = true;
 
   nativeBuildInputs = [
-    (meson.override {
+    (buildPackages.meson.override {
       withDarwinFrameworksGtkDocPatch = stdenv.isDarwin;
     })
     ninja pkg-config perl python3 gettext gtk-doc docbook_xsl docbook_xml_dtd_45 libxml2
diff --git a/nixpkgs/pkgs/development/libraries/glib/elementary-terminal-support.patch b/nixpkgs/pkgs/development/libraries/glib/elementary-terminal-support.patch
new file mode 100644
index 000000000000..0b8c8a70871c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/glib/elementary-terminal-support.patch
@@ -0,0 +1,16 @@
+diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
+index a441bfec9..6bcd3e690 100644
+--- a/gio/gdesktopappinfo.c
++++ b/gio/gdesktopappinfo.c
+@@ -2678,6 +2678,11 @@ prepend_terminal_to_vector (int    *argc,
+             if (check != NULL)
+               pass_cmd_as_single_arg = TRUE;
+           }
++          if (check == NULL) {
++            check = g_find_program_in_path ("io.elementary.terminal");
++            if (check != NULL)
++              pass_cmd_as_single_arg = TRUE;
++          }
+           if (check == NULL)
+             check = g_find_program_in_path ("tilix");
+           if (check == NULL)
diff --git a/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch b/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch
new file mode 100644
index 000000000000..7f6894a5cec9
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/glib/gnome-console-support.patch
@@ -0,0 +1,55 @@
+diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
+index 60d6debb2..a441bfec9 100644
+--- a/gio/gdesktopappinfo.c
++++ b/gio/gdesktopappinfo.c
+@@ -2627,6 +2627,7 @@ prepend_terminal_to_vector (int    *argc,
+   int i, j;
+   char **term_argv = NULL;
+   int term_argc = 0;
++  gboolean pass_cmd_as_single_arg = FALSE;
+   char *check;
+   char **the_argv;
+ 
+@@ -2672,6 +2673,11 @@ prepend_terminal_to_vector (int    *argc,
+         }
+       else
+         {
++          if (check == NULL) {
++            check = g_find_program_in_path ("kgx");
++            if (check != NULL)
++              pass_cmd_as_single_arg = TRUE;
++          }
+           if (check == NULL)
+             check = g_find_program_in_path ("tilix");
+           if (check == NULL)
+@@ -2697,14 +2703,27 @@ prepend_terminal_to_vector (int    *argc,
+         }
+     }
+ 
+-  real_argc = term_argc + *argc;
++  real_argc = term_argc + (pass_cmd_as_single_arg ? 1 : *argc);
+   real_argv = g_new (char *, real_argc + 1);
+ 
+   for (i = 0; i < term_argc; i++)
+     real_argv[i] = term_argv[i];
+ 
+-  for (j = 0; j < *argc; j++, i++)
+-    real_argv[i] = (char *)the_argv[j];
++  if (pass_cmd_as_single_arg) {
++    char **quoted_argv = g_new (char *, *argc + 1);
++
++    for (j = 0; j < *argc; j++) {
++      quoted_argv[j] = g_shell_quote (the_argv[j]);
++      g_free (the_argv[j]);
++    }
++    quoted_argv[j] = NULL;
++
++    real_argv[i++] = g_strjoinv (" ", quoted_argv);
++    g_strfreev (quoted_argv);
++  } else {
++    for (j = 0; j < *argc; j++, i++)
++      real_argv[i] = (char *)the_argv[j];
++  }
+ 
+   real_argv[i] = NULL;
+