Subject: [bug#74493] [PATCH v1] gnu: geoclue: Update to 2.7.2.

From: Sergey Trofimov <[email-masked]>
Date: Sun, 24 Nov 2024 14:50:00 +0100

* gnu/packages/gnome.scm (geoclue): Update to 2.7.2.
* gnu/packages/patches/geoclue-config.patch: Adjust.
---
 gnu/packages/gnome.scm                    |  6 +-
 gnu/packages/patches/geoclue-config.patch | 70 ++++++++++++++++-------
 2 files changed, 52 insertions(+), 24 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index b8accb737d..5fb98ff568 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -5760,7 +5760,7 @@ (define-public colord
 (define-public geoclue
   (package
     (name "geoclue")
-    (version "2.6.0")
+    (version "2.7.2")
     (source
      (origin
        (method url-fetch)
@@ -5768,7 +5768,7 @@ (define-public geoclue
         (string-append "https://gitlab.freedesktop.org/geoclue/geoclue/-/archive/"
                        version "/geoclue-" version ".tar.bz2"))
        (sha256
-        (base32 "1854i8lih1jkks5w38xv8k5gs7s8629qjg3cg96ji0ffk35yzjfd"))
+        (base32 "1ljn4k1zlfx0ymmdz8ycfb976vx8r61sx68q854r0xinl124mlh1"))
        (patches (search-patches "geoclue-config.patch"))))
     (build-system meson-build-system)
     (arguments
@@ -5786,7 +5786,7 @@ (define-public geoclue
            `(,glib "bin")
            glib-networking
            json-glib
-           libsoup-minimal-2))
+           libsoup-minimal))
     (home-page "https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home")
     (synopsis "Geolocation service")
     (description "Geoclue is a D-Bus service that provides location
diff --git a/gnu/packages/patches/geoclue-config.patch b/gnu/packages/patches/geoclue-config.patch
index e4ef6f2d33..8d65dfee5a 100644
--- a/gnu/packages/patches/geoclue-config.patch
+++ b/gnu/packages/patches/geoclue-config.patch
@@ -1,27 +1,55 @@
 Allow the configuration file to be specified via an environment variable.
 
+---
+ src/gclue-config.c        | 13 ++++++++++---
+ src/gclue-static-source.c |  2 +-
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
 diff --git a/src/gclue-config.c b/src/gclue-config.c
-index 7ab2a67..e41f3df 100644
+index acd6009..3045571 100644
 --- a/src/gclue-config.c
 +++ b/src/gclue-config.c
-@@ -332,6 +332,11 @@ static void
- gclue_config_init (GClueConfig *config)
- {
-         GError *error = NULL;
-+	const char *config_file_path;
+@@ -26,8 +26,8 @@
+ 
+ #include "gclue-config.h"
+ 
+-#define CONFIG_FILE_PATH SYSCONFDIR "/geoclue/geoclue.conf"
+-#define CONFIG_D_DIRECTORY SYSCONFDIR "/geoclue/conf.d/"
++#define CONFIG_FILE_PATH "/etc/geoclue/geoclue.conf"
++#define CONFIG_D_DIRECTORY "/etc/geoclue/conf.d/"
+ 
+ /* This class will be responsible for fetching configuration. */
+ 
+@@ -546,8 +546,15 @@ gclue_config_init (GClueConfig *config)
+         priv->wifi_submit_url = g_strdup (DEFAULT_WIFI_SUBMIT_URL);
+         priv->wifi_submit_nick = g_strdup (DEFAULT_WIFI_SUBMIT_NICK);
+ 
+-        /* Load config file from default path, log all missing parameters */
+         priv->key_file = g_key_file_new ();
 +
-+	config_file_path = g_getenv ("GEOCLUE_CONFIG_FILE");
-+	if (!config_file_path)
-+            config_file_path = CONFIG_FILE_PATH;
- 
-         config->priv = gclue_config_get_instance_private(config);
-         config->priv->key_file = g_key_file_new ();
-@@ -341,7 +346,7 @@ gclue_config_init (GClueConfig *config)
-                                    &error);
-         if (error != NULL) {
-                 g_critical ("Failed to load configuration file '%s': %s",
--                            CONFIG_FILE_PATH, error->message);
-+                            config_file_path, error->message);
-                 g_error_free (error);
- 
-                 return;
++        char *env_config_file = g_getenv ("GEOCLUE_CONFIG_FILE");
++        if (env_config_file) {
++                load_config_file (config, env_config_file);
++                goto out; // don't load conf.d
++        }
++
++        /* Load config file from default path, log all missing parameters */
+         load_config_file (config, CONFIG_FILE_PATH);
+ 
+         /*
+diff --git a/src/gclue-static-source.c b/src/gclue-static-source.c
+index 1c35cea..7957797 100644
+--- a/src/gclue-static-source.c
++++ b/src/gclue-static-source.c
+@@ -26,7 +26,7 @@
+ #include "gclue-enum-types.h"
+ 
+ #define GEO_FILE_NAME "geolocation"
+-#define GEO_FILE_PATH SYSCONFDIR "/" GEO_FILE_NAME
++#define GEO_FILE_PATH "/etc/" GEO_FILE_NAME
+ 
+ /* Rate limit of geolocation file monitoring.
+  * In milliseconds.
+-- 
+2.46.0
+

base-commit: 36831c2624dffe70307db737c09bae324d6b6b61
prerequisite-patch-id: f9cc903b8048c8c6fde576fbf38ab110263020e3
prerequisite-patch-id: d09c064d38df73405d505b90d222dccfd7be09b9
-- 
2.46.0