summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/gnome.scm45
-rw-r--r--gnu/packages/patches/geoclue-config.patch25
3 files changed, 71 insertions, 0 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 47799230af..f9b58ddaa7 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -413,6 +413,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/flex-bison-tests.patch			\
   gnu/packages/patches/gawk-shell.patch				\
   gnu/packages/patches/gcc-cross-environment-variables.patch	\
+  gnu/packages/patches/geoclue-config.patch			\
   gnu/packages/patches/ghostscript-runpath.patch		\
   gnu/packages/patches/glib-tests-desktop.patch			\
   gnu/packages/patches/glib-tests-homedir.patch			\
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 80a8043e99..0c6476387a 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -1897,3 +1897,48 @@ keyboard shortcuts.")
 install and generate color profiles to accurately color manage input and
 output devices.")
     (license license:gpl2+)))
+
+(define-public geoclue
+  (package
+    (name "geoclue")
+    (version "2.1.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.freedesktop.org/software/" name
+                           "/releases/" (version-major+minor version) "/"
+                           name "-" version ".tar.xz"))
+       (sha256
+        (base32
+         "0s0ws2bx5g1cbjamxmm448r4n4crha2fwpzm8zbx6cq6qslygmzi"))
+       (patches (list (search-patch "geoclue-config.patch")))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     '(;; The tests want to run the system bus.
+       #:tests? #f
+       #:configure-flags (list ;; Disable bits requiring ModemManager.
+                               "--disable-3g-source"
+                               "--disable-cdma-source"
+                               "--disable-modem-gps-source"
+                               "--with-dbus-service-user=geoclue")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before configure patch-/bin/true
+                     (lambda _
+                       (substitute* "configure"
+                         (("/bin/true") (which "true"))))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("intltool" ,intltool)))
+    (inputs
+     `(("glib" ,glib)
+       ("json-glib" ,json-glib)
+       ("libsoup" ,libsoup)))
+    (home-page "http://freedesktop.org/wiki/Software/GeoClue/")
+    (synopsis "Geolocation service")
+    (description "Geoclue is a D-Bus service that provides location
+information.  The primary goal of the Geoclue project is to make creating
+location-aware applications as simple as possible, while the secondary goal is
+to ensure that no application can access location information without explicit
+permission from user. ")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/geoclue-config.patch b/gnu/packages/patches/geoclue-config.patch
new file mode 100644
index 0000000000..dd35b90be5
--- /dev/null
+++ b/gnu/packages/patches/geoclue-config.patch
@@ -0,0 +1,25 @@
+Allow the configuration file to be specified via an environment variable.
+
+--- geoclue-2.1.10/src/gclue-config.c	2015-04-07 09:50:07.721074380 +0200
++++ geoclue-2.1.10/src/gclue-config.c	2015-04-07 10:27:26.613171960 +0200
+@@ -235,6 +235,11 @@
+ gclue_config_init (GClueConfig *config)
+ {
+         GError *error = NULL;
++	const char *config_file_path;
++
++	config_file_path = g_getenv ("GEOCLUE_CONFIG_FILE");
++	if (config_file_path == NULL)
++	  config_file_path = CONFIG_FILE_PATH;
+ 
+         config->priv =
+                 G_TYPE_INSTANCE_GET_PRIVATE (config,
+@@ -242,7 +247,7 @@
+                                             GClueConfigPrivate);
+         config->priv->key_file = g_key_file_new ();
+         g_key_file_load_from_file (config->priv->key_file,
+-                                   CONFIG_FILE_PATH,
++                                   config_file_path,
+                                    0,
+                                    &error);
+         if (error != NULL) {