Subject: [bug#74989] [PATCH 10/23] gnu: xfce4-panel: Update to 4.20.0.

From: [email-masked]
Date: Fri, 20 Dec 2024 11:56:41 +0800

From: 宋文武 <[email-masked]>

* gnu/packages/xfce.scm (xfce4-panel): Update to 4.20.0.
[source]: Remove 'xfce4-panel-plugins.patch'.
[arguments]: Add 'patch-configure phase for 'gdbus-codegen'.
[inputs]: Remove gtk+-2.  Add gtk-layer-shell and libxfce4windowing.
[native-search-paths]: Replace 'X_XFCE4_LIB_DIRS' with 'XDG_DATA_DIRS'.
* gnu/packages/patches/xfce4-panel-plugins.patch: Remove patch.
* gnu/local.mk (dist_patch_DATA): Remove it.

Change-Id: I8104a9a9e0fcd69b12ebc1346681f6f4bb29e17d
---
 gnu/local.mk                                  |   1 -
 .../patches/xfce4-panel-plugins.patch         | 115 ------------------
 gnu/packages/xfce.scm                         |  20 +--
 3 files changed, 13 insertions(+), 123 deletions(-)
 delete mode 100644 gnu/packages/patches/xfce4-panel-plugins.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index fbe9dfbb0e..4f052da781 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2366,7 +2366,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfig-Enable-error-message-for-missing-libraries.patch		\
   %D%/packages/patches/xfig-Fix-double-free-when-requesting-MediaBox.patch		\
   %D%/packages/patches/xfig-Use-pkg-config-to-set-fontconfig-CFLAGS-and-LIBS.patch	\
-  %D%/packages/patches/xfce4-panel-plugins.patch		\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
diff --git a/gnu/packages/patches/xfce4-panel-plugins.patch b/gnu/packages/patches/xfce4-panel-plugins.patch
deleted file mode 100644
index df5a0a914d..0000000000
--- a/gnu/packages/patches/xfce4-panel-plugins.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-Search for xfce4 panel plugins in the directories specified
-in XDG_DATA_DIRS and X_XFCE4_LIB_DIRS.  For discussion of the
-relevant issues, see:
-
-  https://bugzilla.xfce.org/show_bug.cgi?id=5455
-
-Patch by Mark H Weaver <[email-masked]>
-
---- xfce4-panel-4.10.0/panel/panel-module.c.orig	2012-04-28 16:31:35.000000000 -0400
-+++ xfce4-panel-4.10.0/panel/panel-module.c	2014-12-14 01:31:55.728107386 -0500
-@@ -35,8 +35,14 @@
- #include <panel/panel-plugin-external-wrapper.h>
- #include <panel/panel-plugin-external-46.h>
- 
--#define PANEL_PLUGINS_LIB_DIR (LIBDIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins")
--#define PANEL_PLUGINS_LIB_DIR_OLD (LIBDIR G_DIR_SEPARATOR_S "panel-plugins")
-+#define PANEL_PLUGINS_LIB_DIR_TAIL (G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins")
-+#define PANEL_PLUGINS_LIB_DIR_TAIL_OLD (G_DIR_SEPARATOR_S "panel-plugins")
-+
-+static const gchar *plugins_lib_dir_tails[] =
-+{
-+  PANEL_PLUGINS_LIB_DIR_TAIL,
-+  PANEL_PLUGINS_LIB_DIR_TAIL_OLD
-+};
- 
- 
- typedef enum _PanelModuleRunMode PanelModuleRunMode;
-@@ -335,21 +341,39 @@
-           /* show a messsage if the old module path key still exists */
-           g_message ("Plugin %s: The \"X-XFCE-Module-Path\" key is "
-                      "ignored in \"%s\", the panel will look for the "
--                     "module in %s. See bug #5455 why this decision was made",
--                     name, filename, PANEL_PLUGINS_LIB_DIR);
-+                     "module in DIR%s for each DIR in $X_XFCE4_LIB_DIRS "
-+                     "(%s by default).  See bug #5455 for discussion.",
-+                     name, filename, PANEL_PLUGINS_LIB_DIR_TAIL, LIBDIR);
-         }
- #endif
- 
--      path = g_module_build_path (PANEL_PLUGINS_LIB_DIR, module_name);
--      found = g_file_test (path, G_FILE_TEST_EXISTS);
-+      /* search for module */
-+      {
-+        gchar   *dirs_string;
-+        gchar  **dirs;
-+        int      i, j;
-+
-+        dirs_string = (gchar *) g_getenv ("X_XFCE4_LIB_DIRS");
-+        if (!dirs_string)
-+          dirs_string = LIBDIR;
-+        dirs = g_strsplit (dirs_string, G_SEARCHPATH_SEPARATOR_S, 0);
-+
-+        found = FALSE;
-+        path = NULL;
-+
-+        for (i = 0; !found && dirs[i] != NULL; i++)
-+          for (j = 0; !found && j < G_N_ELEMENTS (plugins_lib_dir_tails); j++)
-+            {
-+              gchar *dir = g_strconcat (dirs[i], plugins_lib_dir_tails[j], NULL);
-+
-+              g_free (path);
-+              path = g_module_build_path (dir, module_name);
-+              found = g_file_test (path, G_FILE_TEST_EXISTS);
-+              g_free (dir);
-+            }
- 
--      if (!found)
--        {
--          /* deprecated location for module plugin directories */
--          g_free (path);
--          path = g_module_build_path (PANEL_PLUGINS_LIB_DIR_OLD, module_name);
--          found = g_file_test (path, G_FILE_TEST_EXISTS);
--        }
-+        g_strfreev (dirs);
-+      }
- 
-       if (G_LIKELY (found))
-         {
---- xfce4-panel-4.10.0/panel/panel-module-factory.c.orig	2012-04-28 16:31:35.000000000 -0400
-+++ xfce4-panel-4.10.0/panel/panel-module-factory.c	2014-12-13 23:55:27.439404812 -0500
-@@ -42,6 +42,11 @@
- #define PANEL_PLUGINS_DATA_DIR     (DATADIR G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins")
- #define PANEL_PLUGINS_DATA_DIR_OLD (DATADIR G_DIR_SEPARATOR_S "panel-plugins")
- 
-+static const gchar *plugins_data_dir_tails[] =
-+{
-+  (G_DIR_SEPARATOR_S "xfce4" G_DIR_SEPARATOR_S "panel" G_DIR_SEPARATOR_S "plugins"),
-+  (G_DIR_SEPARATOR_S "xfce4" G_DIR_SEPARATOR_S "panel-plugins")
-+};
- 
- 
- static void     panel_module_factory_finalize        (GObject                  *object);
-@@ -223,8 +228,22 @@
- panel_module_factory_load_modules (PanelModuleFactory *factory,
-                                    gboolean            warn_if_known)
- {
-+  const gchar * const * system_data_dirs;
-+  int i, j;
-+
-   panel_return_if_fail (PANEL_IS_MODULE_FACTORY (factory));
- 
-+  system_data_dirs = g_get_system_data_dirs ();
-+  for (i = 0; system_data_dirs[i] != NULL; i++)
-+    for (j = 0; j < G_N_ELEMENTS (plugins_data_dir_tails); j++)
-+    {
-+      gchar *dir;
-+
-+      dir = g_strconcat (system_data_dirs[i], plugins_data_dir_tails[j], NULL);
-+      panel_module_factory_load_modules_dir (factory, dir, warn_if_known);
-+      g_free (dir);
-+    }
-+
-   /* load from the new and old location */
-   panel_module_factory_load_modules_dir (factory, PANEL_PLUGINS_DATA_DIR, warn_if_known);
-   panel_module_factory_load_modules_dir (factory, PANEL_PLUGINS_DATA_DIR_OLD, warn_if_known);
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index e6499987e4..0315179ecb 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -441,7 +441,7 @@ (define-public libxfce4windowing
 (define-public xfce4-panel
   (package
     (name "xfce4-panel")
-    (version "4.18.6")
+    (version "4.20.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.xfce.org/src/xfce/"
@@ -449,12 +449,17 @@ (define-public xfce4-panel
                                   name "-" version ".tar.bz2"))
               (sha256
                (base32
-                "0qkw1msrvq7hc4mjg9iai0kymgkrpj1nijv04zjbdfcbymhp2cr1"))
-              (patches (search-patches "xfce4-panel-plugins.patch"))))
+                "1f235lwmqavvsay9899gm7p2z3fdha6qgx05wczikhhnbmgwsczz"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'patch-configure
+           (lambda _
+             (substitute* "configure"
+               ;; XDG_CHECK_PACKAGE_BINARY requires an absolute path.
+               (("\\$PKG_CONFIG --variable=gdbus_codegen gio-2.0")
+                "type -p gdbus-codegen"))))
          (add-after 'unpack 'fix-tzdata-path
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* (string-append "plugins/clock/clock.c")
@@ -470,15 +475,16 @@ (define-public xfce4-panel
     (inputs
      (list tzdata ;; For fix-tzdata-path phase only.
            exo
-           gtk+-2
            xfconf
            garcon
+           gtk-layer-shell
            libwnck
-           libxfce4ui))
+           libxfce4ui
+           libxfce4windowing))
     (native-search-paths
      (list (search-path-specification
-            (variable "X_XFCE4_LIB_DIRS")
-            (files '("lib/xfce4")))))
+            (variable "XDG_DATA_DIRS")
+            (files '("share")))))
     (home-page "https://www.xfce.org/")
     (synopsis "Xfce desktop panel")
     (description
-- 
2.46.0