Hello community,

here is the log from the commit of package modem-manager-gui for 
openSUSE:Factory checked in at 2015-04-27 13:05:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/modem-manager-gui (Old)
 and      /work/SRC/openSUSE:Factory/.modem-manager-gui.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "modem-manager-gui"

Changes:
--------
--- /work/SRC/openSUSE:Factory/modem-manager-gui/modem-manager-gui.changes      
2014-09-06 16:59:31.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.modem-manager-gui.new/modem-manager-gui.changes 
2015-04-27 13:05:11.000000000 +0200
@@ -1,0 +2,8 @@
+Sat Apr 25 21:22:41 UTC 2015 - [email protected]
+
+- Added http://download.tuxfamily.org/gsf/patch/…-api-break.patch
+  ( modem-manager-gui-0.0.17.1-fix-libebook-api-break.patch )
+  because of API break in libebook library from Evolution data
+  server version 3.16. Resolves bnc#927724 (openSUSE Factory).
+
+-------------------------------------------------------------------

New:
----
  modem-manager-gui-0.0.17.1-fix-libebook-api-break.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ modem-manager-gui.spec ++++++
--- /var/tmp/diff_new_pack.BwqS40/_old  2015-04-27 13:05:12.000000000 +0200
+++ /var/tmp/diff_new_pack.BwqS40/_new  2015-04-27 13:05:12.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package modem-manager-gui
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,9 @@
 Url:            http://linuxonly.ru/cms/page.php?7
 Source:         
http://download.tuxfamily.org/gsf/source/modem-manager-gui-%{version}.tar.gz
 
+# PATCH-FIX-UPSTREAM vs. evolution data server 3.16 libebook api break.
+Patch0:         modem-manager-gui-0.0.17.1-fix-libebook-api-break.patch
+
 BuildRequires:  fdupes
 BuildRequires:  gdbm-devel
 BuildRequires:  itstool >= 1.2
@@ -55,6 +58,10 @@
 
 %prep
 %setup -q
+# NOTE: if evolution-data-server >= 3.16.
+%if 0%{?suse_version} > 1320
+%patch0 -p1
+%endif
 
 %build
 %configure

++++++ modem-manager-gui-0.0.17.1-fix-libebook-api-break.patch ++++++
diff -rupN modem-manager-gui-0.0.17.1.old/src/addressbooks.c 
modem-manager-gui-0.0.17.1/src/addressbooks.c
--- modem-manager-gui-0.0.17.1.old/src/addressbooks.c   2014-08-28 
15:04:24.000000000 +0400
+++ modem-manager-gui-0.0.17.1/src/addressbooks.c       2015-04-25 
21:10:05.137967000 +0300
@@ -36,6 +36,8 @@
 #include "vcard.h"
 #include "addressbooks.h"
 
+#define MMGUI_ADDRESSBOOKS_GNOME_CONNECT_TIMEOUT     15
+
 #define MMGUI_ADDRESSBOOKS_AKONADI_LINK_PATH         
"%s/.local/share/akonadi/socket-localhost"
 #define MMGUI_ADDRESSBOOKS_AKONADI_SOCKET_PATH       "%s/akonadiserver.socket"
 #define MMGUI_ADDRESSBOOKS_AKONADI_DBUS_INTERFACE    
"org.freedesktop.Akonadi.Control"
@@ -78,7 +80,6 @@ struct _mmgui_addressbooks_akonadi_colle
 
 typedef struct _mmgui_addressbooks_akonadi_collection 
*mmgui_addressbooks_akonadi_collection_t;
 
-
 //KDE (Akonadi)
 static gboolean mmgui_addressbooks_session_service_activate(gchar *interface, 
guint *status);
 static gint mmgui_addressbooks_open_kde_socket(void);
@@ -871,14 +872,25 @@ static gboolean mmgui_addressbooks_get_g
                        addressbooks->gnomesourcename = "";
                }
                
-               if (addressbooks->e_book_client_connect_sync != NULL) {
-                       /*Version 3.8*/
-                       client = (EBookClient 
*)(addressbooks->e_book_client_connect_sync)(source, NULL, &error);
-                       if (client == NULL) {
-                               (addressbooks->e_book_query_unref)(query);
-                               g_debug("Failed to get EBookClient: %s\n", 
error->message);
-                               g_error_free(error);
-                               return FALSE;
+               if ((addressbooks->e_book_client_connect_sync != NULL) || 
(addressbooks->e_book_client_connect_sync316 != NULL)) {
+                       if (addressbooks->gnomelibversion >= 16) {
+                               /*Version 3.16 ...*/
+                               client = (EBookClient 
*)(addressbooks->e_book_client_connect_sync316)(source, 
MMGUI_ADDRESSBOOKS_GNOME_CONNECT_TIMEOUT, NULL, &error);
+                               if (client == NULL) {
+                                       
(addressbooks->e_book_query_unref)(query);
+                                       g_debug("Failed to get EBookClient: 
%s\n", error->message);
+                                       g_error_free(error);
+                                       return FALSE;
+                               }
+                       } else {
+                               /*Version 3.8 ... 3.16*/
+                               client = (EBookClient 
*)(addressbooks->e_book_client_connect_sync)(source, NULL, &error);
+                               if (client == NULL) {
+                                       
(addressbooks->e_book_query_unref)(query);
+                                       g_debug("Failed to get EBookClient: 
%s\n", error->message);
+                                       g_error_free(error);
+                                       return FALSE;
+                               }
                        }
                } else {
                        /*Versions 3.2 ... 3.6*/
@@ -889,7 +901,7 @@ static gboolean mmgui_addressbooks_get_g
                                g_error_free(error);
                                return FALSE;
                        }
-                       
+               
                        if (!(addressbooks->e_client_open_sync)((EClient 
*)client, TRUE, NULL, &error)) {
                                (addressbooks->e_book_query_unref)(query);
                                g_debug("Failed to open EBookClient: %s\n", 
error->message);
@@ -941,6 +953,7 @@ static gboolean mmgui_addressbooks_get_g
 mmgui_addressbooks_t mmgui_addressbooks_new(mmgui_libpaths_cache_t libcache)
 {
        mmgui_addressbooks_t addressbooks;
+       gpointer *connectfunc;
        gboolean libopened;
        guint akonadistatus;
        
@@ -953,6 +966,7 @@ mmgui_addressbooks_t mmgui_addressbooks_
        
        /*Open module*/
        addressbooks->ebookmodule = 
g_module_open(mmgui_libpaths_cache_get_library_name(libcache, "libebook-1.2"), 
G_MODULE_BIND_LAZY);
+       addressbooks->gnomelibversion = 
mmgui_libpaths_cache_get_library_major_version(libcache, "libebook-1.2");
        
        if (addressbooks->ebookmodule != NULL) {
                libopened = TRUE;
@@ -974,7 +988,13 @@ mmgui_addressbooks_t mmgui_addressbooks_
                        addressbooks->e_book_query_to_string = NULL;
                        addressbooks->e_book_client_get_contacts_sync = NULL;
                } else {
-                       if (!g_module_symbol(addressbooks->ebookmodule, 
"e_book_client_connect_sync", (gpointer 
*)&(addressbooks->e_book_client_connect_sync))) {
+                       /*API was broken in version 3.16*/
+                       if (addressbooks->gnomelibversion >= 16) {
+                               connectfunc = (gpointer 
*)&(addressbooks->e_book_client_connect_sync316);
+                       } else {
+                               connectfunc = (gpointer 
*)&(addressbooks->e_book_client_connect_sync);
+                       }
+                       if (!g_module_symbol(addressbooks->ebookmodule, 
"e_book_client_connect_sync", connectfunc)) {
                                /*Since version 3.2 used these functions, but 
in 3.8 they are deprecated*/
                                libopened = libopened && 
g_module_symbol(addressbooks->ebookmodule, "e_book_client_new", (gpointer 
*)&(addressbooks->e_book_client_new));
                                libopened = libopened && 
g_module_symbol(addressbooks->ebookmodule, "e_client_open_sync", (gpointer 
*)&(addressbooks->e_client_open_sync));
diff -rupN modem-manager-gui-0.0.17.1.old/src/addressbooks.h 
modem-manager-gui-0.0.17.1/src/addressbooks.h
--- modem-manager-gui-0.0.17.1.old/src/addressbooks.h   2014-08-28 
00:24:41.000000000 +0400
+++ modem-manager-gui-0.0.17.1/src/addressbooks.h       2015-04-25 
21:00:50.449376000 +0300
@@ -247,6 +247,7 @@ typedef const gchar *(*e_source_get_disp
 typedef EBookClient *(*e_book_client_new_func)(ESource *source, GError 
**error);
 typedef gboolean (*e_client_open_sync_func)(EClient *client, gboolean 
only_if_exists, gpointer cancellable, GError **error);
 typedef EClient *(*e_book_client_connect_sync_func)(ESource *source, gpointer 
cancellable, GError **error);
+typedef EClient *(*e_book_client_connect_sync316_func)(ESource *source, 
guint32 wait_for_connected_seconds, gpointer cancellable, GError **error);
 typedef gchar *(*e_book_query_to_string_func)(EBookQuery *q);
 typedef gboolean (*e_book_client_get_contacts_sync_func)(EBookClient *client, 
const gchar *sexp, GSList **out_contacts, gpointer cancellable, GError **error);
 typedef EBook *(*e_book_new_system_addressbook_func)(GError **error);
@@ -269,6 +270,7 @@ struct _mmgui_addressbooks {
        e_book_client_new_func e_book_client_new;
        e_client_open_sync_func e_client_open_sync;
        e_book_client_connect_sync_func e_book_client_connect_sync;
+       e_book_client_connect_sync316_func e_book_client_connect_sync316;
        e_book_query_to_string_func e_book_query_to_string;
        e_book_client_get_contacts_sync_func e_book_client_get_contacts_sync;
        e_book_new_system_addressbook_func e_book_new_system_addressbook;
@@ -280,6 +282,7 @@ struct _mmgui_addressbooks {
        e_contact_get_func e_contact_get;
        //GNOME stuff
        gboolean gnomesupported;
+       gint gnomelibversion;
        GSList *gnomecontacts;
        const gchar *gnomesourcename;
        //Akonadi access data
diff -rupN modem-manager-gui-0.0.17.1.old/src/libpaths.c 
modem-manager-gui-0.0.17.1/src/libpaths.c
--- modem-manager-gui-0.0.17.1.old/src/libpaths.c       2014-01-05 
18:23:44.000000000 +0400
+++ modem-manager-gui-0.0.17.1/src/libpaths.c   2015-04-25 20:40:08.544962000 
+0300
@@ -32,6 +32,7 @@
 
 #define MMGUI_LIBPATHS_CACHE_FILE         "/etc/ld.so.cache"
 #define MMGUI_LIBPATHS_CACHE_SOEXT        ".so"
+#define MMGUI_LIBPATHS_CACHE_SOEXT_LEN    3
 #define MMGUI_LIBPATHS_CACHE_LIB_TEMP     "/usr/lib/%s.so"
 #define MMGUI_LIBPATHS_CACHE_PATH_TEMP    "/usr/lib/%s.so"
 /*Cache file*/
@@ -39,17 +40,21 @@
 #define MMGUI_LIBPATHS_LOCAL_CACHE_DIR    "modem-manager-gui"
 #define MMGUI_LIBPATHS_LOCAL_CACHE_FILE   "libpaths.conf"
 #define MMGUI_LIBPATHS_LOCAL_CACHE_PERM   0755
+#define MMGUI_LIBPATHS_LOCAL_CACHE_VER    2
 /*Cache file sections*/
 #define MMGUI_LIBPATHS_FILE_ROOT_SECTION  "cache"
 #define MMGUI_LIBPATHS_FILE_TIMESTAMP     "timestamp"
+#define MMGUI_LIBPATHS_FILE_VERSION       "version"
 #define MMGUI_LIBPATHS_FILE_NAME          "name"
 #define MMGUI_LIBPATHS_FILE_PATH          "path"
+#define MMGUI_LIBPATHS_FILE_MAJORVER      "majorver"
 
 
 struct _mmgui_libpaths_entry {
        gchar *id;
        gchar *libname;
        gchar *libpath;
+       gint   majorver;
 };
 
 typedef struct _mmgui_libpaths_entry *mmgui_libpaths_entry_t;
@@ -60,6 +65,7 @@ static gboolean mmgui_libpaths_cache_ope
        const gchar *homepath; 
        gchar *confpath;
        guint64 localtimestamp;
+       gint filever;
        GError *error;
        
        if (libcache == NULL) return FALSE;
@@ -95,11 +101,28 @@ static gboolean mmgui_libpaths_cache_ope
                        localtimestamp = 
g_key_file_get_uint64(libcache->localkeyfile, MMGUI_LIBPATHS_FILE_ROOT_SECTION, 
MMGUI_LIBPATHS_FILE_TIMESTAMP, &error);
                        if (error == NULL) {
                                if (localtimestamp == dbtimestamp) {
-                                       libcache->updatelocal = FALSE;
+                                       /*Timestamp is up to date - check 
version*/
+                                       filever = 
g_key_file_get_integer(libcache->localkeyfile, 
MMGUI_LIBPATHS_FILE_ROOT_SECTION, MMGUI_LIBPATHS_FILE_VERSION, &error);
+                                       if (error == NULL) {
+                                               if (filever >= 
MMGUI_LIBPATHS_LOCAL_CACHE_VER) {
+                                                       /*Acceptable version of 
file*/
+                                                       libcache->updatelocal = 
FALSE;
+                                               } else {
+                                                       /*Old version of file*/
+                                                       libcache->updatelocal = 
TRUE;
+                                               }
+                                       } else {
+                                               /*Unknown version of file*/
+                                               libcache->updatelocal = TRUE;
+                                               g_debug("Local cache contain 
unreadable version identifier: %s", error->message);
+                                               g_error_free(error);
+                                       }
                                } else {
+                                       /*Wrong timestamp*/
                                        libcache->updatelocal = TRUE;
                                }
                        } else {
+                               /*Unknown timestamp*/
                                libcache->updatelocal = TRUE;
                                g_debug("Local cache contain unreadable 
timestamp: %s", error->message);
                                g_error_free(error);
@@ -126,6 +149,8 @@ static gboolean mmgui_libpaths_cache_clo
        if (update) {
                /*Save timestamp*/
                g_key_file_set_int64(libcache->localkeyfile, 
MMGUI_LIBPATHS_FILE_ROOT_SECTION, MMGUI_LIBPATHS_FILE_TIMESTAMP, 
(gint64)libcache->modtime);
+               /*Save version of file*/
+               g_key_file_set_integer(libcache->localkeyfile, 
MMGUI_LIBPATHS_FILE_ROOT_SECTION, MMGUI_LIBPATHS_FILE_VERSION, 
MMGUI_LIBPATHS_LOCAL_CACHE_VER);
                /*Write to file*/
                error = NULL;
                filedata = g_key_file_to_data(libcache->localkeyfile, 
&datasize, &error);
@@ -158,6 +183,8 @@ static gboolean mmgui_libpaths_cache_add
                        if (cachedlib->libpath != NULL) {
                                g_key_file_set_string(libcache->localkeyfile, 
cachedlib->id, MMGUI_LIBPATHS_FILE_PATH, cachedlib->libpath);
                        }
+                       /*Library major version*/
+                       g_key_file_set_integer(libcache->localkeyfile, 
cachedlib->id, MMGUI_LIBPATHS_FILE_MAJORVER, cachedlib->majorver);
                }
        }
        
@@ -183,8 +210,10 @@ static gboolean mmgui_libpaths_cache_get
                                }
                        } else {
                                cachedlib->libname = NULL;
-                               g_debug("Local cache does not contain library 
name: %s", error->message);
-                               g_error_free(error);
+                               if (error != NULL) {
+                                       g_debug("Local cache does not contain 
library name: %s", error->message);
+                                       g_error_free(error);
+                               }
                        }
                        /*Library path*/
                        error = NULL;
@@ -197,8 +226,26 @@ static gboolean mmgui_libpaths_cache_get
                                }
                        } else {
                                cachedlib->libpath = NULL;
-                               g_debug("Local cache does not contain library 
path: %s", error->message);
-                               g_error_free(error);
+                               if (error != NULL) {
+                                       g_debug("Local cache does not contain 
library path: %s", error->message);
+                                       g_error_free(error);
+                               }
+                       }
+                       /*Library major version*/
+                       error = NULL;
+                       if (g_key_file_has_key(libcache->localkeyfile, 
cachedlib->id, MMGUI_LIBPATHS_FILE_MAJORVER, &error)) {
+                               error = NULL;
+                               cachedlib->majorver = 
g_key_file_get_integer(libcache->localkeyfile, cachedlib->id, 
MMGUI_LIBPATHS_FILE_MAJORVER, &error);
+                               if (error != NULL) {
+                                       g_debug("Local cache contain unreadable 
library major version: %s", error->message);
+                                       g_error_free(error);
+                               }
+                       } else {
+                               cachedlib->majorver = 0;
+                               if (error != NULL) {
+                                       g_debug("Local cache does not contain 
library major version: %s", error->message);
+                                       g_error_free(error);
+                               }
                        }
                }
        }
@@ -223,6 +270,7 @@ static void mmgui_libpaths_cache_destroy
        if (cachedlib->libpath != NULL) {
                g_free(cachedlib->libpath);
        }
+       cachedlib->majorver = 0;
        g_free(cachedlib);
 }
 
@@ -232,6 +280,12 @@ static gboolean mmgui_libpaths_cache_get
        gchar *libext, *libid;
        guint pathlen, sym, lnsym, lilen, lnlen;
        gboolean res;
+       gchar *majorverstart, *majorverend;
+       gsize fragmentlen;
+       gint i, d;
+       guint mult;
+       gchar curdigit;
+       gchar digits[2][10] = {{'0','1','2','3','4','5','6','7','8','9'}, 
{0,1,2,3,4,5,6,7,8,9}};
        
        if ((libcache == NULL) || (libpath == NULL)) return FALSE;
        
@@ -281,6 +335,42 @@ static gboolean mmgui_libpaths_cache_get
                        mmgui_libpaths_cache_add_to_local_cache_file(libcache, 
cachedlib);
                        g_debug("Library path: %s (%s)\n", cachedlib->libpath, 
libid);
                }
+               
+               cachedlib->majorver = 0;
+               
+               if ((libext[MMGUI_LIBPATHS_CACHE_SOEXT_LEN] == '.') && 
(libext[MMGUI_LIBPATHS_CACHE_SOEXT_LEN+1] != '\0')) {
+                       majorverstart = libext + MMGUI_LIBPATHS_CACHE_SOEXT_LEN 
+ 1;
+                       majorverend = strchr(majorverstart, '.');
+                       if (majorverend != NULL) {
+                               fragmentlen = majorverend - majorverstart;
+                       } else {
+                               fragmentlen = strlen(libext) - 
(MMGUI_LIBPATHS_CACHE_SOEXT_LEN + 1);
+                       }
+                       
+                       if (fragmentlen > 0) {
+                               mult = 1;
+                               for (i=fragmentlen-1; i>=0; i--) {
+                                       /*Seqrch for digit*/
+                                       curdigit = -1;
+                                       for (d=0; d<10; d++) {
+                                               if (digits[0][d] == 
majorverstart[i]) {
+                                                       curdigit = digits[1][d];
+                                                       break;
+                                               }
+                                       }
+                                       /*Add digit*/
+                                       if (curdigit != -1) {
+                                               cachedlib->majorver += mult * 
curdigit;
+                                               mult *= 10;
+                                       } else {
+                                               cachedlib->majorver = 0;
+                                               break;
+                                       }
+                               }
+                               
mmgui_libpaths_cache_add_to_local_cache_file(libcache, cachedlib);
+                               g_debug("Library version: %i (%s)\n", 
cachedlib->majorver, libid);
+                       }
+               }
                res = TRUE;
        }
        
@@ -510,3 +600,20 @@ gchar *mmgui_libpaths_cache_get_library_
                return libcache->safename;
        }
 }
+
+gint mmgui_libpaths_cache_get_library_major_version(mmgui_libpaths_cache_t 
libcache, gchar *libname)
+{
+       mmgui_libpaths_entry_t cachedlib;
+       
+       if ((libcache == NULL) || (libname == NULL)) return 0;
+       
+       cachedlib = 
(mmgui_libpaths_entry_t)g_hash_table_lookup(libcache->cache, libname);
+       
+       if (cachedlib != NULL) {
+               /*Cached library version*/
+               return cachedlib->majorver;
+       } else {
+               /*Safe library version*/
+               return 0;
+       }
+}
diff -rupN modem-manager-gui-0.0.17.1.old/src/libpaths.h 
modem-manager-gui-0.0.17.1/src/libpaths.h
--- modem-manager-gui-0.0.17.1.old/src/libpaths.h       2013-06-17 
23:02:10.000000000 +0400
+++ modem-manager-gui-0.0.17.1/src/libpaths.h   2015-04-25 20:40:28.911690000 
+0300
@@ -41,5 +41,6 @@ mmgui_libpaths_cache_t mmgui_libpaths_ca
 void mmgui_libpaths_cache_close(mmgui_libpaths_cache_t libcache);
 gchar *mmgui_libpaths_cache_get_library_name(mmgui_libpaths_cache_t libcache, 
gchar *libname);
 gchar *mmgui_libpaths_cache_get_library_path(mmgui_libpaths_cache_t libcache, 
gchar *libname);
+gint mmgui_libpaths_cache_get_library_major_version(mmgui_libpaths_cache_t 
libcache, gchar *libname);
 
 #endif /* __LIBPATHS_H__ */

Reply via email to