From e8d12395db956727b037cefdf0e60ed409f0b33a Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Tue, 17 Mar 2020 09:15:02 +0100
Subject: [PATCH 1/2] tools: Fix errors running glib-ginterface-gen under
 Python3

1)
    print """\
<snip>
            dbus_g_method_return_error (context, ...)
"""
          ^
SyntaxError: invalid syntax

2)

Traceback (most recent call last):
  File "./tools/glib-ginterface-gen.py", line 30, in <module>
    from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
  File "/home/hadess/Projects/Fedora/merged/telepathy-idle/master/telepathy-idle-0.2.0/tools/libglibcodegen.py", line 157
    raise Exception, "can't index a hashtable off non-basic type " + s
                   ^
SyntaxError: invalid syntax

3)

Traceback (most recent call last):
  File "./tools/glib-ginterface-gen.py", line 30, in <module>
    from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
  File "/home/hadess/Projects/Fedora/merged/telepathy-idle/master/telepathy-idle-0.2.0/tools/libglibcodegen.py", line 172
    raise Exception, "don't know the GType for " + s
                   ^
SyntaxError: invalid syntax

4)

Traceback (most recent call last):
  File "../tools/glib-ginterface-gen.py", line 839, in <module>
    Generator(dom, prefix, basename, signal_marshal_prefix, headers,
  File "../tools/glib-ginterface-gen.py", line 736, in __call__
    nodes.sort(cmp_by_name)
TypeError: sort() takes no positional arguments
---
 tools/glib-ginterface-gen.py | 7 ++++---
 tools/libglibcodegen.py      | 4 ++--
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/tools/glib-ginterface-gen.py b/tools/glib-ginterface-gen.py
index 8fea5df..e32d7b8 100644
--- a/tools/glib-ginterface-gen.py
+++ b/tools/glib-ginterface-gen.py
@@ -22,6 +22,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
+import functools
 import sys
 import os.path
 import xml.dom.minidom
@@ -733,7 +734,7 @@ class Generator(object):
 
     def __call__(self):
         nodes = self.dom.getElementsByTagName('node')
-        nodes.sort(cmp_by_name)
+        nodes.sort(key=functools.cmp_to_key(cmp_by_name))
 
         self.h('#include <glib-object.h>')
         self.h('#include <dbus/dbus-glib.h>')
@@ -768,7 +769,7 @@ class Generator(object):
         file_set_contents(self.basename + '-gtk-doc.h', '\n'.join(self.__docs))
 
 def cmdline_error():
-    print """\
+    print ("""\
 usage:
     gen-ginterface [OPTIONS] xmlfile Prefix_
 options:
@@ -788,7 +789,7 @@ options:
             void symbol (DBusGMethodInvocation *context)
         and return some sort of "not implemented" error via
             dbus_g_method_return_error (context, ...)
-"""
+""")
     sys.exit(1)
 
 
diff --git a/tools/libglibcodegen.py b/tools/libglibcodegen.py
index 6a9d214..2c9f164 100644
--- a/tools/libglibcodegen.py
+++ b/tools/libglibcodegen.py
@@ -154,7 +154,7 @@ def type_to_gtype(s):
         return ("GHashTable *", "DBUS_TYPE_G_STRING_STRING_HASHTABLE", "BOXED", False)
     elif s[:2] == 'a{':  #some arbitrary hash tables
         if s[2] not in ('y', 'b', 'n', 'q', 'i', 'u', 's', 'o', 'g'):
-            raise Exception, "can't index a hashtable off non-basic type " + s
+            raise Exception("can't index a hashtable off non-basic type " + s)
         first = type_to_gtype(s[2])
         second = type_to_gtype(s[3:-1])
         return ("GHashTable *", "(dbus_g_type_get_map (\"GHashTable\", " + first[1] + ", " + second[1] + "))", "BOXED", False)
@@ -169,4 +169,4 @@ def type_to_gtype(s):
         return ("GValueArray *", gtype, "BOXED", True)
 
     # we just don't know ..
-    raise Exception, "don't know the GType for " + s
+    raise(Exception, "don't know the GType for " + s)
-- 
2.25.1

