]> git.pld-linux.org Git - packages/geoclue.git/commitdiff
- enhanced gpsd patch to cover gpsd 3.18-3.19
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 5 Oct 2019 13:48:55 +0000 (15:48 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Sat, 5 Oct 2019 13:48:55 +0000 (15:48 +0200)
- added nm patch (switch NetworkManager interface to libnm to support NM 1.0-1.20)
- release 6

geoclue-gpsd.patch
geoclue-nm.patch [new file with mode: 0644]
geoclue.spec

index e5e68773117cf05c28698efce4454d85ac6ce16c..51a3b5e7cc664f78b169d1e07f1e1e5e8cda8961 100644 (file)
                }
        }
        return TRUE;
+--- geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c.orig 2019-10-04 21:09:50.492270776 +0200
++++ geoclue-0.12.99/providers/gpsd/geoclue-gpsd.c      2019-10-05 15:21:29.244100259 +0200
+@@ -43,15 +43,6 @@
+ typedef struct gps_fix_t gps_fix;
+-/* only listing used tags */
+-typedef enum {
+-      NMEA_NONE,
+-      NMEA_GSA,
+-      NMEA_GGA,
+-      NMEA_GSV,
+-      NMEA_RMC
+-} NmeaTag;
+-
+ typedef struct {
+       GcProvider parent;
+@@ -229,7 +220,7 @@
+ }
+ static void
+-geoclue_gpsd_update_position (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
++geoclue_gpsd_update_position (GeoclueGpsd *gpsd)
+ {
+       gps_fix *fix = &gpsd->gpsdata->fix;
+       gps_fix *last_fix = gpsd->last_fix;
+@@ -280,7 +271,7 @@
+ }
+ static void
+-geoclue_gpsd_update_velocity (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
++geoclue_gpsd_update_velocity (GeoclueGpsd *gpsd)
+ {
+       gps_fix *fix = &gpsd->gpsdata->fix;
+       gps_fix *last_fix = gpsd->last_fix;
+@@ -293,8 +284,7 @@
+        * couldn't think of an smart way to handle this, I don't think there is one
+        */
+       
+-      if (((gpsd->gpsdata->set & TRACK_SET) || (gpsd->gpsdata->set & SPEED_SET)) &&
+-          nmea_tag == NMEA_RMC) {
++      if (((gpsd->gpsdata->set & TRACK_SET) || (gpsd->gpsdata->set & SPEED_SET))) {
+               
+               gpsd->gpsdata->set &= ~(TRACK_SET | SPEED_SET);
+               
+@@ -308,10 +298,7 @@
+                       last_fix->track = fix->track;
+                       last_fix->speed = fix->speed;
+               }
+-      } else if ((gpsd->gpsdata->set & CLIMB_SET) &&
+-                 (nmea_tag == NMEA_GGA || 
+-                  nmea_tag == NMEA_GSA || 
+-                  nmea_tag == NMEA_GSV)) {
++      } else if ((gpsd->gpsdata->set & CLIMB_SET)) {
+               
+               gpsd->gpsdata->set &= ~(CLIMB_SET);
+               
+@@ -342,7 +329,7 @@
+ }
+ static void
+-geoclue_gpsd_update_status (GeoclueGpsd *gpsd, NmeaTag nmea_tag)
++geoclue_gpsd_update_status (GeoclueGpsd *gpsd)
+ {
+       GeoclueStatus status;
+       
+@@ -367,22 +354,9 @@
+ static void 
+ gpsd_raw_hook (struct gps_data_t *gpsdata, char *message, size_t len)
+ {
+-      char *tag_str = gpsd->gpsdata->tag;
+-      NmeaTag nmea_tag = NMEA_NONE;
+-      
+-      if (tag_str[0] == 'G' && tag_str[1] == 'S' && tag_str[2] == 'A') {
+-              nmea_tag = NMEA_GSA;
+-      } else if (tag_str[0] == 'G' && tag_str[1] == 'G' && tag_str[2] == 'A') {
+-              nmea_tag = NMEA_GGA;
+-      } else if (tag_str[0] == 'G' && tag_str[1] == 'S' && tag_str[2] == 'V') {
+-              nmea_tag = NMEA_GSV;
+-      } else if (tag_str[0] == 'R' && tag_str[1] == 'M' && tag_str[2] == 'C') {
+-              nmea_tag = NMEA_RMC;
+-      }
+-      
+-      geoclue_gpsd_update_status (gpsd, nmea_tag);
+-      geoclue_gpsd_update_position (gpsd, nmea_tag);
+-      geoclue_gpsd_update_velocity (gpsd, nmea_tag);
++      geoclue_gpsd_update_status (gpsd);
++      geoclue_gpsd_update_position (gpsd);
++      geoclue_gpsd_update_velocity (gpsd);
+ }
+ static void
+@@ -414,7 +388,7 @@
+ {
+       GeoclueGpsd *self = (GeoclueGpsd*)data;
+       if (self->gpsdata) {
+-              if (gps_read(self->gpsdata) < 0) {
++              if (gps_read(self->gpsdata, NULL, 0) < 0) {
+                       geoclue_gpsd_set_status (self, GEOCLUE_STATUS_ERROR);
+                       geoclue_gpsd_stop_gpsd(self);
+                       return FALSE;
diff --git a/geoclue-nm.patch b/geoclue-nm.patch
new file mode 100644 (file)
index 0000000..17e7270
--- /dev/null
@@ -0,0 +1,135 @@
+--- geoclue-0.12.99/configure.ac.orig  2019-10-02 16:24:07.407947415 +0200
++++ geoclue-0.12.99/configure.ac       2019-10-04 20:51:53.104774152 +0200
+@@ -146,7 +146,7 @@
+ if test "x$enable_networkmanager" != "xno"; then
+    PKG_CHECK_MODULES(NETWORK_MANAGER,
+    [
+-      NetworkManager libnm-glib libnm-util
++      libnm
+    ], have_networkmanager="yes", have_networkmanager="no")
+    if test "x$have_networkmanager" = "xyes"; then
+--- geoclue-0.12.99/src/connectivity-networkmanager.h.orig     2012-07-31 18:47:05.000000000 +0200
++++ geoclue-0.12.99/src/connectivity-networkmanager.h  2019-10-04 21:12:16.438146786 +0200
+@@ -26,7 +26,7 @@
+ #define _CONNECTIVITY_NETWORKMANAGER_H
+ #include <glib-object.h>
+-#include <nm-client.h>
++#include <NetworkManager.h>
+ #include "connectivity.h"
+--- geoclue-0.12.99/src/connectivity-networkmanager.c.orig     2012-07-31 18:47:05.000000000 +0200
++++ geoclue-0.12.99/src/connectivity-networkmanager.c  2019-10-05 06:53:55.835747194 +0200
+@@ -34,10 +34,6 @@
+ #include <NetworkManager.h> /*for DBus strings */
+-#include <nm-client.h>
+-#include <nm-device-wifi.h>
+-#include <nm-setting-ip4-config.h>
+-
+ #if !defined(NM_CHECK_VERSION)
+ #define NM_CHECK_VERSION(x,y,z) 0
+ #endif
+@@ -106,7 +102,7 @@
+                               char *ap_mac;
+                               int strength;
+-                              ap_mac = g_strdup (nm_access_point_get_hw_address (ap));
++                              ap_mac = g_strdup (nm_access_point_get_bssid (ap));
+                               strength = nm_access_point_get_strength (ap);
+                               g_hash_table_insert (ht, ap_mac, GINT_TO_POINTER (strength_to_dbm (strength)));
+                       }
+@@ -161,39 +157,22 @@
+       return mac_strup (mac);
+ }
+-static gchar *
+-ip4_address_as_string (guint32 ip)
+-{
+-      struct in_addr tmp_addr;
+-      char buf[INET_ADDRSTRLEN+1];
+-
+-      memset (&buf, '\0', sizeof (buf));
+-      tmp_addr.s_addr = ip;
+-
+-      if (inet_ntop (AF_INET, &tmp_addr, buf, INET_ADDRSTRLEN))
+-              return g_strdup (buf);
+-
+-      return NULL;
+-}
+-
+ static char *
+ get_router_mac (GeoclueConnectivity *iface)
+ {
+       GeoclueNetworkManager *self = GEOCLUE_NETWORKMANAGER (iface);
+       const GPtrArray *devices;
+-      char *gateway, *mac;
++      char *mac;
++      const char *gateway = NULL;
+       guint i;
+       devices = nm_client_get_devices (self->client);
+       if (devices == NULL)
+               return NULL;
+-      gateway = NULL;
+-
+       for (i = 0; i < devices->len; i++) {
+               NMDevice *device = g_ptr_array_index (devices, i);
+-              NMIP4Config *cfg4;
+-              GSList *iter;
++              NMIPConfig *cfg4;
+               if (nm_device_get_state (device) != NM_DEVICE_STATE_ACTIVATED)
+                       continue;
+@@ -202,19 +181,12 @@
+               if (cfg4 == NULL)
+                       continue;
+-              for (iter = (GSList *) nm_ip4_config_get_addresses (cfg4); iter; iter = g_slist_next (iter)) {
+-                      NMIP4Address *addr = (NMIP4Address *) iter->data;
+-
+-                      gateway = ip4_address_as_string (nm_ip4_address_get_gateway (addr));
+-                      if (gateway != NULL)
+-                              break;
+-              }
++              gateway = nm_ip_config_get_gateway (cfg4);
+       }
+       if (gateway == NULL)
+               return NULL;
+       mac = get_mac_for_gateway (gateway);
+-      g_free (gateway);
+       return mac;
+ }
+@@ -235,7 +207,7 @@
+               strength = nm_access_point_get_strength (ap);
+               if (strength > self->ap_strength) {
+                       g_free (self->cache_ap_mac);
+-                      self->cache_ap_mac = g_strdup (nm_access_point_get_hw_address (ap));
++                      self->cache_ap_mac = g_strdup (nm_access_point_get_bssid (ap));
+                       self->ap_strength = strength;
+               }
+       }
+@@ -317,7 +289,7 @@
+       old_status = self->status;
+-      if (nm_client_get_manager_running (self->client)) {
++      if (nm_client_get_nm_running (self->client)) {
+               state = nm_client_get_state (self->client);
+               self->status = nmstate_to_geocluenetworkstatus (state);
+               cache_ap_mac (self);
+@@ -341,7 +313,7 @@
+ geoclue_networkmanager_init (GeoclueNetworkManager *self)
+ {
+       self->status = GEOCLUE_CONNECTIVITY_UNKNOWN;
+-      self->client = nm_client_new ();
++      self->client = nm_client_new (NULL, NULL);
+       if (self->client == NULL) {
+               g_warning ("%s was unable to create a connection to NetworkManager",
+                          G_OBJECT_TYPE_NAME (self));
index 36857754d2730bc1adf83589cd8d8185fced19f5..58edad213539401c1bad2ee2eed2f386e3af1136 100644 (file)
@@ -1,12 +1,15 @@
 #
 # Conditional build:
 %bcond_without gps     # GPS support via gpsd
+%bcond_with    conic   # Maemo LibConIC connectivity support
+%bcond_with    connman # ConnMan connectivity support
+%bcond_without nm      # NetworkManager connectivity support
 
 Summary:       A modular geoinformation service
 Summary(pl.UTF-8):     Modularna usÅ‚uga geoinformacyjna
 Name:          geoclue
 Version:       0.12.99
-Release:       5
+Release:       6
 License:       LGPL v2+
 Group:         Applications
 Source0:       http://freedesktop.org/~hadess/%{name}-%{version}.tar.gz
@@ -14,21 +17,26 @@ Source0:    http://freedesktop.org/~hadess/%{name}-%{version}.tar.gz
 Patch0:                %{name}-libsoup.patch
 Patch1:                %{name}-gpsd.patch
 Patch2:                %{name}-format.patch
+Patch3:                %{name}-nm.patch
 URL:           http://geoclue.freedesktop.org/
 BuildRequires: GConf2-devel >= 2.0
+%{?with_nm:BuildRequires:      NetworkManager-devel >= 1.0}
 BuildRequires: autoconf >= 2.59
 BuildRequires: automake >= 1:1.9
+%{?with_connman:BuildRequires: connman-devel}
 BuildRequires: dbus-glib-devel >= 0.86
 BuildRequires: docbook-dtd412-xml
 BuildRequires: glib2-devel >= 1:2.26
-%{?with_gps:BuildRequires:     gpsd-devel >= 3}
+%{?with_gps:BuildRequires:     gpsd-devel >= 3.18}
 BuildRequires: gtk+2-devel >= 1:2.0
 BuildRequires: gtk-doc >= 1.0
 BuildRequires: gypsy-devel >= 0.7.1
+%{?with_conic:BuildRequires:   libconic-devel}
 BuildRequires: libsoup-devel >= 2.4.0
 BuildRequires: libtool
 BuildRequires: libxml2-devel >= 2.0
 BuildRequires: libxslt-progs
+BuildRequires: pkgconfig
 Requires:      %{name}-libs = %{version}-%{release}
 Requires:      dbus
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -104,7 +112,7 @@ Summary:    gpsd provider for geoclue
 Summary(pl.UTF-8):     Interfejs geoclue do gpsd
 Group:         Applications
 Requires:      %{name} = %{version}-%{release}
-Requires:      gpsd >= 3
+Requires:      gpsd >= 3.18
 
 %description gpsd
 A gpsd provider for geoclue.
@@ -130,6 +138,7 @@ Interfejs geoclue do gypsy.
 %patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 
 %build
 %{__gtkdocize}
@@ -140,10 +149,11 @@ Interfejs geoclue do gypsy.
 %{__automake}
 %configure \
        --enable-gtk-doc \
-       --disable-conic \
+       --enable-conic%{!?with_conic:=no} \
+       --enable-connman%{!?with_connman:=no} \
        --enable-gpsd%{!?with_gps:=no} \
        --enable-gypsy \
-       --disable-networkmanager \
+       --enable-networkmanager%{!?with_nm:=no} \
        --disable-silent-rules \
        --enable-skyhook \
        --with-html-dir=%{_gtkdocdir}
This page took 0.068847 seconds and 4 git commands to generate.