654 lines
23 KiB
Diff
654 lines
23 KiB
Diff
From f4634b2caf1f92f27a507207ff181d3a7927871f Mon Sep 17 00:00:00 2001
|
|
From: Simon McVittie <simon.mcvittie@collabora.co.uk>
|
|
Date: Thu, 3 Jan 2013 12:33:09 +0000
|
|
Subject: [PATCH] Make the code generation tools work under either Python 2 or
|
|
3
|
|
|
|
They have been verified to produce identical output in _gen.
|
|
|
|
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=56758
|
|
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
|
|
Reviewed-by: Xavier Claessens <xavier.claessens@collabora.co.uk>
|
|
---
|
|
tools/c-constants-gen.py | 12 +++---
|
|
tools/glib-client-gen.py | 18 +++------
|
|
tools/glib-client-marshaller-gen.py | 20 +++++-----
|
|
tools/glib-errors-check-gen.py | 62 ++++++++++++++---------------
|
|
tools/glib-errors-str-gen.py | 14 ++-----
|
|
tools/glib-ginterface-gen.py | 22 ++++------
|
|
tools/glib-gtypes-generator.py | 14 +++----
|
|
tools/glib-interfaces-gen.py | 14 +++----
|
|
tools/gobject-foo.py | 2 +-
|
|
tools/libglibcodegen.py | 4 +-
|
|
tools/libtpcodegen.py | 22 +++++++++-
|
|
tools/make-version-script.py | 32 +++++++--------
|
|
tools/xincludator.py | 13 ++++--
|
|
13 files changed, 129 insertions(+), 120 deletions(-)
|
|
|
|
diff --git a/tools/c-constants-gen.py b/tools/c-constants-gen.py
|
|
index c7a93d371..a08afee06 100644
|
|
--- a/tools/c-constants-gen.py
|
|
+++ b/tools/c-constants-gen.py
|
|
@@ -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 @@ def __init__(self, prefix, dom, output_base):
|
|
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 @@ def __call__(self):
|
|
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):
|
|
diff --git a/tools/glib-client-gen.py b/tools/glib-client-gen.py
|
|
index f8465a62b..e68e1a575 100644
|
|
--- a/tools/glib-client-gen.py
|
|
+++ b/tools/glib-client-gen.py
|
|
@@ -27,8 +27,8 @@
|
|
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 @@ def __init__(self, dom, prefix, basename, opts):
|
|
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 @@ def __call__(self):
|
|
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 @@ def __call__(self):
|
|
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]
|
|
diff --git a/tools/glib-client-marshaller-gen.py b/tools/glib-client-marshaller-gen.py
|
|
index cb27d638a..cd9823bdf 100644
|
|
--- a/tools/glib-client-marshaller-gen.py
|
|
+++ b/tools/glib-client-marshaller-gen.py
|
|
@@ -31,23 +31,23 @@ def __call__(self):
|
|
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):
|
|
diff --git a/tools/glib-errors-check-gen.py b/tools/glib-errors-check-gen.py
|
|
index 553fc9caf..fad261ece 100644
|
|
--- a/tools/glib-errors-check-gen.py
|
|
+++ b/tools/glib-errors-check-gen.py
|
|
@@ -12,13 +12,13 @@ def __init__(self, dom):
|
|
|
|
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 @@ def __call__(self):
|
|
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:]
|
|
diff --git a/tools/glib-errors-str-gen.py b/tools/glib-errors-str-gen.py
|
|
index b2cf520bd..ddb1e16b7 100644
|
|
--- a/tools/glib-errors-str-gen.py
|
|
+++ b/tools/glib-errors-str-gen.py
|
|
@@ -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 @@ def __init__(self, dom, basename):
|
|
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 @@ def __call__(self):
|
|
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:]
|
|
diff --git a/tools/glib-ginterface-gen.py b/tools/glib-ginterface-gen.py
|
|
index 6fec0d3c4..c0ce20ddc 100644
|
|
--- a/tools/glib-ginterface-gen.py
|
|
+++ b/tools/glib-ginterface-gen.py
|
|
@@ -26,8 +26,8 @@
|
|
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 @@ def __init__(self, dom, prefix, basename, signal_marshal_prefix,
|
|
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 @@ def have_properties(self, nodes):
|
|
|
|
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 @@ def __call__(self):
|
|
|
|
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 @@ def cmdline_error():
|
|
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/glib-gtypes-generator.py b/tools/glib-gtypes-generator.py
|
|
index 21dfc6aa7..1477bd37b 100644
|
|
--- a/tools/glib-gtypes-generator.py
|
|
+++ b/tools/glib-gtypes-generator.py
|
|
@@ -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 @@ def __init__(self, dom, output, mixed_case_prefix):
|
|
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 @@ def __call__(self):
|
|
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:]
|
|
diff --git a/tools/glib-interfaces-gen.py b/tools/glib-interfaces-gen.py
|
|
index 410762cde..b67d7b4f0 100644
|
|
--- a/tools/glib-interfaces-gen.py
|
|
+++ b/tools/glib-interfaces-gen.py
|
|
@@ -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 @@ def __init__(self, prefix, implfile, declfile, dom):
|
|
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):
|
|
diff --git a/tools/gobject-foo.py b/tools/gobject-foo.py
|
|
index 002a290ba..a2abd7667 100644
|
|
--- a/tools/gobject-foo.py
|
|
+++ b/tools/gobject-foo.py
|
|
@@ -87,4 +87,4 @@ def gobject_header(head, tail, as_interface=False):
|
|
|
|
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)))
|
|
diff --git a/tools/libglibcodegen.py b/tools/libglibcodegen.py
|
|
index 6a9d21485..6cd1a6277 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)
|
|
diff --git a/tools/libtpcodegen.py b/tools/libtpcodegen.py
|
|
index 7e9eb9a50..99de66340 100644
|
|
--- a/tools/libtpcodegen.py
|
|
+++ b/tools/libtpcodegen.py
|
|
@@ -21,6 +21,7 @@
|
|
# 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 @@
|
|
|
|
_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 @@ def __init__(self, string):
|
|
self.remaining = string
|
|
|
|
def next(self):
|
|
+ return self.__next__()
|
|
+
|
|
+ def __next__(self):
|
|
if self.remaining == '':
|
|
raise StopIteration
|
|
|
|
diff --git a/tools/make-version-script.py b/tools/make-version-script.py
|
|
index 0d30aa323..4ced849fe 100644
|
|
--- a/tools/make-version-script.py
|
|
+++ b/tools/make-version-script.py
|
|
@@ -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__':
|
|
diff --git a/tools/xincludator.py b/tools/xincludator.py
|
|
index 63e106ace..f9ed49ce4 100644
|
|
--- a/tools/xincludator.py
|
|
+++ b/tools/xincludator.py
|
|
@@ -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 @@ def xincludate(dom, base, dropns = []):
|
|
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')
|