]> git.0d.be Git - empathy.git/commitdiff
sync tools/ with telepathy-glib
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 4 Jan 2013 10:28:17 +0000 (11:28 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Fri, 4 Jan 2013 10:29:06 +0000 (11:29 +0100)
This should allow Empathy to be build with Python 3.

https://bugzilla.gnome.org/show_bug.cgi?id=687616

13 files changed:
tools/c-constants-gen.py
tools/glib-client-gen.py
tools/glib-client-marshaller-gen.py
tools/glib-errors-check-gen.py
tools/glib-errors-str-gen.py
tools/glib-ginterface-gen.py
tools/glib-gtypes-generator.py
tools/glib-interfaces-gen.py
tools/gobject-foo.py
tools/libglibcodegen.py
tools/libtpcodegen.py
tools/make-version-script.py
tools/xincludator.py

index c7a93d3714e503555e80dfbe0b9de5f233cee695..a08afee06196cfe2e1dac3fe051434238a7a33d9 100644 (file)
@@ -3,7 +3,7 @@
 from sys import argv, stdout, stderr
 import xml.dom.minidom
 
-from libtpcodegen import file_set_contents
+from libtpcodegen import file_set_contents, u
 from libglibcodegen import NS_TP, get_docstring, \
         get_descendant_text, get_by_path
 
@@ -12,7 +12,7 @@ class Generator(object):
         self.prefix = prefix + '_'
         self.spec = get_by_path(dom, "spec")[0]
 
-       self.output_base = output_base
+        self.output_base = output_base
         self.__header = []
         self.__docs = []
 
@@ -21,14 +21,14 @@ class Generator(object):
         self.do_body()
         self.do_footer()
 
-        file_set_contents(self.output_base + '.h', ''.join(self.__header))
-        file_set_contents(self.output_base + '-gtk-doc.h', ''.join(self.__docs))
+        file_set_contents(self.output_base + '.h', u('').join(self.__header).encode('utf-8'))
+        file_set_contents(self.output_base + '-gtk-doc.h', u('').join(self.__docs).encode('utf-8'))
 
     def write(self, code):
-        self.__header.append(code.encode('utf-8'))
+        self.__header.append(code)
 
     def d(self, code):
-        self.__docs.append(code.encode('utf-8'))
+        self.__docs.append(code)
 
     # Header
     def do_header(self):
index f8465a62b9bc26e53b6f63b49aed35a8c9740687..e68e1a575f6260db90487f44f60708bd6b34aa28 100644 (file)
@@ -27,8 +27,8 @@ import os.path
 import xml.dom.minidom
 from getopt import gnu_getopt
 
-from libtpcodegen import file_set_contents
-from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
+from libtpcodegen import file_set_contents, key_by_name, u
+from libglibcodegen import Signature, type_to_gtype, \
         get_docstring, xml_escape, get_deprecated
 
 
@@ -74,18 +74,12 @@ class Generator(object):
         self.guard = opts.get('--guard', None)
 
     def h(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__header.append(s)
 
     def b(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__body.append(s)
 
     def d(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__docs.append(s)
 
     def get_iface_quark(self):
@@ -1191,7 +1185,7 @@ class Generator(object):
         self.b('')
 
         nodes = self.dom.getElementsByTagName('node')
-        nodes.sort(cmp_by_name)
+        nodes.sort(key=key_by_name)
 
         for node in nodes:
             self.do_interface(node)
@@ -1244,9 +1238,9 @@ class Generator(object):
             self.h('#endif /* defined (%s) */' % self.guard)
             self.h('')
 
-        file_set_contents(self.basename + '.h', '\n'.join(self.__header))
-        file_set_contents(self.basename + '-body.h', '\n'.join(self.__body))
-        file_set_contents(self.basename + '-gtk-doc.h', '\n'.join(self.__docs))
+        file_set_contents(self.basename + '.h', u('\n').join(self.__header).encode('utf-8'))
+        file_set_contents(self.basename + '-body.h', u('\n').join(self.__body).encode('utf-8'))
+        file_set_contents(self.basename + '-gtk-doc.h', u('\n').join(self.__docs).encode('utf-8'))
 
 def types_to_gtypes(types):
     return [type_to_gtype(t)[1] for t in types]
index cb27d638a45dc0203c11426991e5b880c4522eee..cd9823bdffb234730667f8ec1fbffee4ab1d017a 100644 (file)
@@ -31,23 +31,23 @@ class Generator(object):
         for signal in signals:
             self.do_signal(signal)
 
-        print 'void'
-        print '%s_register_dbus_glib_marshallers (void)' % self.prefix
-        print '{'
+        print('void')
+        print('%s_register_dbus_glib_marshallers (void)' % self.prefix)
+        print('{')
 
-        all = self.marshallers.keys()
+        all = list(self.marshallers.keys())
         all.sort()
         for marshaller in all:
             rhs = self.marshallers[marshaller]
 
-            print '  dbus_g_object_register_marshaller ('
-            print '      g_cclosure_marshal_generic,'
-            print '      G_TYPE_NONE,       /* return */'
+            print('  dbus_g_object_register_marshaller (')
+            print('      g_cclosure_marshal_generic,')
+            print('      G_TYPE_NONE,       /* return */')
             for type in rhs:
-                print '      G_TYPE_%s,' % type.replace('VOID', 'NONE')
-            print '      G_TYPE_INVALID);'
+                print('      G_TYPE_%s,' % type.replace('VOID', 'NONE'))
+            print('      G_TYPE_INVALID);')
 
-        print '}'
+        print('}')
 
 
 def types_to_gtypes(types):
index 553fc9cafdf9c04fa8ec43d7b5100685707ac2aa..fad261ecea0e9849146d5fecd03053b61ff95b81 100644 (file)
@@ -12,13 +12,13 @@ class Generator(object):
 
     def __call__(self):
 
-        print '{'
-        print '  GEnumClass *klass;'
-        print '  GEnumValue *value_by_name;'
-        print '  GEnumValue *value_by_nick;'
-        print ''
-        print '  g_type_init ();'
-        print '  klass = g_type_class_ref (TP_TYPE_ERROR);'
+        print('{')
+        print('  GEnumClass *klass;')
+        print('  GEnumValue *value_by_name;')
+        print('  GEnumValue *value_by_nick;')
+        print('')
+        print('  g_type_init ();')
+        print('  klass = g_type_class_ref (TP_TYPE_ERROR);')
 
         for error in self.errors.getElementsByTagNameNS(NS_TP, 'error'):
             ns = error.parentNode.getAttribute('namespace')
@@ -28,30 +28,30 @@ class Generator(object):
             s = ('TP_ERROR_STR_' +
                  error.getAttribute('name').replace(' ', '_').replace('.', '_').upper())
 
-            print ''
-            print '  /* %s.%s */' % (ns, nick)
-            print ('  value_by_name = g_enum_get_value_by_name (klass, "%s");'
-                    % enum)
-            print ('  value_by_nick = g_enum_get_value_by_nick (klass, "%s");'
-                    % nick)
-            print ('  g_assert (value_by_name != NULL);')
-            print ('  g_assert (value_by_nick != NULL);')
-            print ('  g_assert_cmpint (value_by_name->value, ==, %s);'
-                    % enum)
-            print ('  g_assert_cmpint (value_by_nick->value, ==, %s);'
-                    % enum)
-            print ('  g_assert_cmpstr (value_by_name->value_name, ==, "%s");'
-                    % enum)
-            print ('  g_assert_cmpstr (value_by_nick->value_name, ==, "%s");'
-                    % enum)
-            print ('  g_assert_cmpstr (value_by_name->value_nick, ==, "%s");'
-                    % nick)
-            print ('  g_assert_cmpstr (value_by_nick->value_nick, ==, "%s");'
-                    % nick)
-            print ('  g_assert_cmpstr (%s, ==, TP_ERROR_PREFIX ".%s");'
-                    % (s, nick))
-
-        print '}'
+            print('')
+            print('  /* %s.%s */' % (ns, nick))
+            print('  value_by_name = g_enum_get_value_by_name (klass, "%s");'
+                   % enum)
+            print('  value_by_nick = g_enum_get_value_by_nick (klass, "%s");'
+                   % nick)
+            print('  g_assert (value_by_name != NULL);')
+            print('  g_assert (value_by_nick != NULL);')
+            print('  g_assert_cmpint (value_by_name->value, ==, %s);'
+                   % enum)
+            print('  g_assert_cmpint (value_by_nick->value, ==, %s);'
+                   % enum)
+            print('  g_assert_cmpstr (value_by_name->value_name, ==, "%s");'
+                   % enum)
+            print('  g_assert_cmpstr (value_by_nick->value_name, ==, "%s");'
+                   % enum)
+            print('  g_assert_cmpstr (value_by_name->value_nick, ==, "%s");'
+                   % nick)
+            print('  g_assert_cmpstr (value_by_nick->value_nick, ==, "%s");'
+                   % nick)
+            print('  g_assert_cmpstr (%s, ==, TP_ERROR_PREFIX ".%s");'
+                   % (s, nick))
+
+        print('}')
 
 if __name__ == '__main__':
     argv = sys.argv[1:]
index b2cf520bde32d92726d7a4dd20731ef4fff9c25e..ddb1e16b77f7b2ed34086f0fd1bed92e74d34f39 100644 (file)
@@ -3,7 +3,7 @@
 import sys
 import xml.dom.minidom
 
-from libtpcodegen import file_set_contents
+from libtpcodegen import file_set_contents, u
 from libglibcodegen import NS_TP, get_docstring, xml_escape
 
 class Generator(object):
@@ -17,18 +17,12 @@ class Generator(object):
         self.__docs = []
 
     def h(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__header.append(s)
 
     def b(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__body.append(s)
 
     def d(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__docs.append(s)
 
     def __call__(self):
@@ -72,9 +66,9 @@ class Generator(object):
         self.h('')
         self.b('')
 
-        file_set_contents(self.basename + '.h', '\n'.join(self.__header))
-        file_set_contents(self.basename + '.c', '\n'.join(self.__body))
-        file_set_contents(self.basename + '-gtk-doc.h', '\n'.join(self.__docs))
+        file_set_contents(self.basename + '.h', u('\n').join(self.__header).encode('utf-8'))
+        file_set_contents(self.basename + '.c', u('\n').join(self.__body).encode('utf-8'))
+        file_set_contents(self.basename + '-gtk-doc.h', u('\n').join(self.__docs).encode('utf-8'))
 
 if __name__ == '__main__':
     argv = sys.argv[1:]
index 6fec0d3c49a5045b089c8b5035c30b7b42759e6b..c0ce20ddcdbcc36b8bc0ba8905351bd17247155a 100644 (file)
@@ -26,8 +26,8 @@ import sys
 import os.path
 import xml.dom.minidom
 
-from libtpcodegen import file_set_contents
-from libglibcodegen import Signature, type_to_gtype, cmp_by_name, \
+from libtpcodegen import file_set_contents, key_by_name, u
+from libglibcodegen import Signature, type_to_gtype, \
         NS_TP, dbus_gutils_wincaps_to_uscore
 
 
@@ -85,18 +85,12 @@ class Generator(object):
         self.allow_havoc = allow_havoc
 
     def h(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__header.append(s)
 
     def b(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__body.append(s)
 
     def d(self, s):
-        if isinstance(s, unicode):
-            s = s.encode('utf-8')
         self.__docs.append(s)
 
     def do_node(self, node):
@@ -733,7 +727,7 @@ class Generator(object):
 
     def __call__(self):
         nodes = self.dom.getElementsByTagName('node')
-        nodes.sort(cmp_by_name)
+        nodes.sort(key=key_by_name)
 
         self.h('#include <glib-object.h>')
         self.h('#include <dbus/dbus-glib.h>')
@@ -761,12 +755,12 @@ class Generator(object):
 
         self.h('')
         self.b('')
-        file_set_contents(self.basename + '.h', '\n'.join(self.__header))
-        file_set_contents(self.basename + '.c', '\n'.join(self.__body))
-        file_set_contents(self.basename + '-gtk-doc.h', '\n'.join(self.__docs))
+        file_set_contents(self.basename + '.h', u('\n').join(self.__header).encode('utf-8'))
+        file_set_contents(self.basename + '.c', u('\n').join(self.__body).encode('utf-8'))
+        file_set_contents(self.basename + '-gtk-doc.h', u('\n').join(self.__docs).encode('utf-8'))
 
 def cmdline_error():
-    print """\
+    print("""\
 usage:
     gen-ginterface [OPTIONS] xmlfile Prefix_
 options:
@@ -786,7 +780,7 @@ options:
             void symbol (DBusGMethodInvocation *context)
         and return some sort of "not implemented" error via
             dbus_g_method_return_error (context, ...)
-"""
+""")
     sys.exit(1)
 
 
index 21dfc6aa78fef50075af1b2221cbad2627298963..1477bd37bad5b98f0441b5af6d36fd984e08ed19 100644 (file)
@@ -23,7 +23,7 @@
 import sys
 import xml.dom.minidom
 
-from libtpcodegen import file_set_contents
+from libtpcodegen import file_set_contents, u
 from libglibcodegen import escape_as_identifier, \
                            get_docstring, \
                            NS_TP, \
@@ -68,13 +68,13 @@ class GTypesGenerator(object):
         self.need_other_arrays = {}
 
     def h(self, code):
-        self.header.append(code.encode("utf-8"))
+        self.header.append(code)
 
     def c(self, code):
-        self.body.append(code.encode("utf-8"))
+        self.body.append(code)
 
     def d(self, code):
-        self.docs.append(code.encode('utf-8'))
+        self.docs.append(code)
 
     def do_mapping_header(self, mapping):
         members = mapping.getElementsByTagNameNS(NS_TP, 'member')
@@ -292,9 +292,9 @@ class GTypesGenerator(object):
             self.c('  return t;\n')
             self.c('}\n\n')
 
-        file_set_contents(self.output + '.h', ''.join(self.header))
-        file_set_contents(self.output + '-body.h', ''.join(self.body))
-        file_set_contents(self.output + '-gtk-doc.h', ''.join(self.docs))
+        file_set_contents(self.output + '.h', u('').join(self.header).encode('utf-8'))
+        file_set_contents(self.output + '-body.h', u('').join(self.body).encode('utf-8'))
+        file_set_contents(self.output + '-gtk-doc.h', u('').join(self.docs).encode('utf-8'))
 
 if __name__ == '__main__':
     argv = sys.argv[1:]
index 410762cdeb114bdb8282707731ded2f6fd838d11..b67d7b4f0c8013d450f4cf6bd0cf4cdbc55d39d6 100644 (file)
@@ -3,7 +3,7 @@
 from sys import argv, stdout, stderr
 import xml.dom.minidom
 
-from libtpcodegen import file_set_contents
+from libtpcodegen import file_set_contents, u
 from libglibcodegen import NS_TP, get_docstring, \
         get_descendant_text, get_by_path
 
@@ -24,22 +24,22 @@ class Generator(object):
         self.spec = get_by_path(dom, "spec")[0]
 
     def h(self, code):
-        self.decls.append(code.encode('utf-8'))
+        self.decls.append(code)
 
     def c(self, code):
-        self.impls.append(code.encode('utf-8'))
+        self.impls.append(code)
 
     def d(self, code):
-        self.docs.append(code.encode('utf-8'))
+        self.docs.append(code)
 
     def __call__(self):
         for f in self.h, self.c:
             self.do_header(f)
         self.do_body()
 
-        file_set_contents(self.implfile, ''.join(self.impls))
-        file_set_contents(self.declfile, ''.join(self.decls))
-        file_set_contents(self.docfile, ''.join(self.docs))
+        file_set_contents(self.implfile, u('').join(self.impls).encode('utf-8'))
+        file_set_contents(self.declfile, u('').join(self.decls).encode('utf-8'))
+        file_set_contents(self.docfile, u('').join(self.docs).encode('utf-8'))
 
     # Header
     def do_header(self, f):
index 002a290ba87d20370c1630bb17339c48f6ede43a..a2abd76676b2430d73f607de0e99f8ed7115d0ad 100644 (file)
@@ -87,4 +87,4 @@ if __name__ == '__main__':
 
     head, tail = argv
 
-    print '\n'.join(gobject_header(head, tail, as_interface=as_interface))
+    print('\n'.join(gobject_header(head, tail, as_interface=as_interface)))
index 6a9d214850317dec556db5fd8cce637bf7e4a26a..6cd1a6277841e311494a3d682b5693ef34fe6594 100644 (file)
@@ -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)
index 7e9eb9a5078dffdbe068d399595813f9b7f46d73..99de66340d780e05a0fd887c11df65eff0050423 100644 (file)
@@ -21,6 +21,7 @@ please make any changes there.
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 import os
+import sys
 from string import ascii_letters, digits
 
 
@@ -28,6 +29,20 @@ NS_TP = "http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
 
 _ASCII_ALNUM = ascii_letters + digits
 
+if sys.version_info[0] >= 3:
+    def u(s):
+        """Return s, which must be a str literal with no non-ASCII characters.
+        This is like a more restricted form of the Python 2 u'' syntax.
+        """
+        return s.encode('ascii').decode('ascii')
+else:
+    def u(s):
+        """Return a Unicode version of s, which must be a str literal
+        (a bytestring) in which each byte is an ASCII character.
+        This is like a more restricted form of the u'' syntax.
+        """
+        return s.decode('ascii')
+
 def file_set_contents(filename, contents):
     try:
         os.remove(filename)
@@ -38,13 +53,15 @@ def file_set_contents(filename, contents):
     except OSError:
         pass
 
-    open(filename + '.tmp', 'w').write(contents)
+    open(filename + '.tmp', 'wb').write(contents)
     os.rename(filename + '.tmp', filename)
 
 def cmp_by_name(node1, node2):
     return cmp(node1.getAttributeNode("name").nodeValue,
                node2.getAttributeNode("name").nodeValue)
 
+def key_by_name(node):
+    return node.getAttributeNode("name").nodeValue
 
 def escape_as_identifier(identifier):
     """Escape the given string to be a valid D-Bus object path or service
@@ -168,6 +185,9 @@ class _SignatureIter:
         self.remaining = string
 
     def next(self):
+        return self.__next__()
+
+    def __next__(self):
         if self.remaining == '':
             raise StopIteration
 
index 0d30aa32328e0f2d9b5982df06288e6af5ff9609..4ced849fe432aa7a5b3cb02ff4e79d3875699bd0 100644 (file)
@@ -63,9 +63,9 @@ def main(abifiles, symbols=None, unreleased_version=None,
 
     if dpkg:
         assert dpkg_first_line is not None
-        print dpkg_first_line
+        print(dpkg_first_line)
         if dpkg_build_depends_package is not None:
-            print "* Build-Depends-Package: %s" % dpkg_build_depends_package
+            print("* Build-Depends-Package: %s" % dpkg_build_depends_package)
 
     for filename in abifiles:
         lines = open(filename, 'r').readlines()
@@ -120,8 +120,8 @@ def main(abifiles, symbols=None, unreleased_version=None,
         lines = lines[cut:]
 
         if gnuld:
-            print "%s {" % version
-            print "    global:"
+            print("%s {" % version)
+            print("    global:")
 
         for symbol in lines:
             symbol = symbol.strip()
@@ -130,7 +130,7 @@ def main(abifiles, symbols=None, unreleased_version=None,
                 continue
 
             if gnuld:
-                print "        %s;" % symbol
+                print("        %s;" % symbol)
             elif dpkg:
                 dpkg_symbols.append('%s@%s %s' % (symbol, version, release))
 
@@ -142,22 +142,22 @@ def main(abifiles, symbols=None, unreleased_version=None,
 
         if gnuld:
             if extends == '-':
-                print "    local:"
-                print "        *;"
-                print "};"
+                print("    local:")
+                print("        *;")
+                print("};")
             else:
-                print "} %s;" % extends
-                print
+                print("} %s;" % extends)
+                print("")
 
     if dpkg:
         dpkg_symbols.sort()
         dpkg_versions.sort()
 
         for x in dpkg_versions:
-            print " %s" % x
+            print(" %s" % x)
 
         for x in dpkg_symbols:
-            print " %s" % x
+            print(" %s" % x)
 
     if symbol_set is not None:
         missing = versioned_symbols - symbol_set
@@ -182,13 +182,13 @@ def main(abifiles, symbols=None, unreleased_version=None,
                 raise SystemExit(1)
 
             if gnuld:
-                print "%s {" % unreleased_version
-                print "    global:"
+                print("%s {" % unreleased_version)
+                print("    global:")
 
                 for symbol in unreleased:
-                    print "        %s;" % symbol
+                    print("        %s;" % symbol)
 
-                print "} %s;" % version
+                print("} %s;" % version)
 
 
 if __name__ == '__main__':
index 63e106ace13664eb71571342bec39780175e25bd..f9ed49ce475ca9e4b4ce222db5d192f80042a20b 100644 (file)
@@ -1,17 +1,19 @@
 #!/usr/bin/python
 
+import sys
 from sys import argv, stdout, stderr
 import codecs, locale
 import os
 import xml.dom.minidom
 
-stdout = codecs.getwriter('utf-8')(stdout)
+if sys.version_info[0] < 3:
+    stdout = codecs.getwriter('utf-8')(stdout)
 
 NS_XI = 'http://www.w3.org/2001/XInclude'
 
 def xincludate(dom, base, dropns = []):
     remove_attrs = []
-    for i in xrange(dom.documentElement.attributes.length):
+    for i in range(dom.documentElement.attributes.length):
         attr = dom.documentElement.attributes.item(i)
         if attr.prefix == 'xmlns':
             if attr.localName in dropns:
@@ -34,6 +36,11 @@ if __name__ == '__main__':
     argv = argv[1:]
     dom = xml.dom.minidom.parse(argv[0])
     xincludate(dom, argv[0])
-    xml = dom.toxml()
+
+    if sys.version_info[0] >= 3:
+        xml = dom.toxml(encoding=None)
+    else:
+        xml = dom.toxml()
+
     stdout.write(xml)
     stdout.write('\n')