diff options
-rw-r--r-- | package/libglib2/libglib2-make-codegen-python2-python3-compliant.patch | 192 |
1 files changed, 192 insertions, 0 deletions
diff --git a/package/libglib2/libglib2-make-codegen-python2-python3-compliant.patch b/package/libglib2/libglib2-make-codegen-python2-python3-compliant.patch new file mode 100644 index 000000000..b4838270b --- /dev/null +++ b/package/libglib2/libglib2-make-codegen-python2-python3-compliant.patch @@ -0,0 +1,192 @@ +Fetch from http://git.gnome.org/browse/glib/patch/?id=03611f7c0670ea14eedbc121972aed7ce60bb9ee + +This patch is already included upstream, from the glib-2.32.4 release. + +Signed-off-by: Samuel Martin <s.martin49@gmail.com> +--- +From 03611f7c0670ea14eedbc121972aed7ce60bb9ee Mon Sep 17 00:00:00 2001 +From: Simon Feltman <s.feltman@gmail.com> +Date: Thu, 14 Jun 2012 06:20:17 +0000 +Subject: Updated codegen to work with python3. + +Most changes were just replacing usage of "has_key" with "in". +Also updated the sorting function which was simplified and +changed to a "key" function instead of "cmp" (which is no longer +supported in python3. Verified everything builds with +python 2.7 and 3. + +https://bugzilla.gnome.org/show_bug.cgi?id=678066 +--- +diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py +index 41ea8fa..bca3490 100644 +--- a/gio/gdbus-2.0/codegen/codegen.py ++++ b/gio/gdbus-2.0/codegen/codegen.py +@@ -304,11 +304,8 @@ class CodeGenerator: + # + # See https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5 + # for discussion +- keys = function_pointers.keys() +- if len(keys) > 0: +- keys.sort(cmp=utils.my_version_cmp) +- for key in keys: +- self.h.write('%s'%function_pointers[key]) ++ for key in sorted(function_pointers.keys(), key=utils.version_cmp_key): ++ self.h.write('%s'%function_pointers[key]) + + self.h.write('};\n') + self.h.write('\n') +@@ -1022,11 +1019,9 @@ class CodeGenerator: + value = '@get_%s: '%(p.name_lower) + value += 'Getter for the #%s:%s property.'%(i.camel_name, p.name_hyphen) + doc_bits[key] = value +- keys = doc_bits.keys() +- if len(keys) > 0: +- keys.sort(cmp=utils.my_version_cmp) +- for key in keys: +- self.c.write(' * %s\n'%doc_bits[key]) ++ for key in sorted(doc_bits.keys(), key=utils.version_cmp_key): ++ self.c.write(' * %s\n'%doc_bits[key]) ++ + self.c.write(self.docbook_gen.expand( + ' *\n' + ' * Virtual table for the D-Bus interface #%s.\n' +diff --git a/gio/gdbus-2.0/codegen/codegen_docbook.py b/gio/gdbus-2.0/codegen/codegen_docbook.py +index 4ceef57..00581f1 100644 +--- a/gio/gdbus-2.0/codegen/codegen_docbook.py ++++ b/gio/gdbus-2.0/codegen/codegen_docbook.py +@@ -259,14 +259,12 @@ class DocbookCodeGenerator: + self.expand_member_dict[key] = value + # Make sure to expand the keys in reverse order so e.g. #org.foo.Iface:MediaCompat + # is evaluated before #org.foo.Iface:Media ... +- self.expand_member_dict_keys = self.expand_member_dict.keys() +- self.expand_member_dict_keys.sort(reverse=True) +- self.expand_iface_dict_keys = self.expand_iface_dict.keys() +- self.expand_iface_dict_keys.sort(reverse=True) ++ self.expand_member_dict_keys = sorted(self.expand_member_dict.keys(), reverse=True) ++ self.expand_iface_dict_keys = sorted(self.expand_iface_dict.keys(), reverse=True) + + def generate(self): + for i in self.ifaces: +- self.out = file('%s-%s.xml'%(self.docbook, i.name), 'w') ++ self.out = open('%s-%s.xml'%(self.docbook, i.name), 'w') + self.out.write(''%()) + self.out.write('<?xml version="1.0" encoding="utf-8"?>\n'%()) + self.out.write('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"\n'%()) +diff --git a/gio/gdbus-2.0/codegen/codegen_main.py b/gio/gdbus-2.0/codegen/codegen_main.py +index 76c838c..735cc1f 100755 +--- a/gio/gdbus-2.0/codegen/codegen_main.py ++++ b/gio/gdbus-2.0/codegen/codegen_main.py +@@ -184,8 +184,8 @@ def codegen_main(): + + c_code = opts.generate_c_code + if c_code: +- h = file(c_code + '.h', 'w') +- c = file(c_code + '.c', 'w') ++ h = open(c_code + '.h', 'w') ++ c = open(c_code + '.c', 'w') + gen = codegen.CodeGenerator(all_ifaces, + opts.c_namespace, + opts.interface_prefix, +diff --git a/gio/gdbus-2.0/codegen/parser.py b/gio/gdbus-2.0/codegen/parser.py +index 5fabd44..7b9d216 100644 +--- a/gio/gdbus-2.0/codegen/parser.py ++++ b/gio/gdbus-2.0/codegen/parser.py +@@ -152,12 +152,12 @@ class DBusXMLParser: + self.state = DBusXMLParser.STATE_IGNORED + + # assign docs, if any +- if attrs.has_key('name') and self.doc_comment_last_symbol == attrs['name']: ++ if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']: + self._cur_object.doc_string = self.doc_comment_body +- if self.doc_comment_params.has_key('short_description'): ++ if 'short_description' in self.doc_comment_params: + short_description = self.doc_comment_params['short_description'] + self._cur_object.doc_string_brief = short_description +- if self.doc_comment_params.has_key('since'): ++ if 'since' in self.doc_comment_params: + self._cur_object.since = self.doc_comment_params['since'] + + elif self.state == DBusXMLParser.STATE_INTERFACE: +@@ -185,16 +185,16 @@ class DBusXMLParser: + self.state = DBusXMLParser.STATE_IGNORED + + # assign docs, if any +- if attrs.has_key('name') and self.doc_comment_last_symbol == attrs['name']: ++ if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']: + self._cur_object.doc_string = self.doc_comment_body +- if self.doc_comment_params.has_key('since'): ++ if 'since' in self.doc_comment_params: + self._cur_object.since = self.doc_comment_params['since'] + + elif self.state == DBusXMLParser.STATE_METHOD: + if name == DBusXMLParser.STATE_ARG: + self.state = DBusXMLParser.STATE_ARG + arg_name = None +- if attrs.has_key('name'): ++ if 'name' in attrs: + arg_name = attrs['name'] + arg = dbustypes.Arg(arg_name, attrs['type']) + direction = attrs['direction'] +@@ -215,18 +215,18 @@ class DBusXMLParser: + + # assign docs, if any + if self.doc_comment_last_symbol == old_cur_object.name: +- if attrs.has_key('name') and self.doc_comment_params.has_key(attrs['name']): ++ if 'name' in attrs and attrs['name'] in self.doc_comment_params: + doc_string = self.doc_comment_params[attrs['name']] + if doc_string != None: + self._cur_object.doc_string = doc_string +- if self.doc_comment_params.has_key('since'): ++ if 'since' in self.doc_comment_params: + self._cur_object.since = self.doc_comment_params['since'] + + elif self.state == DBusXMLParser.STATE_SIGNAL: + if name == DBusXMLParser.STATE_ARG: + self.state = DBusXMLParser.STATE_ARG + arg_name = None +- if attrs.has_key('name'): ++ if 'name' in attrs: + arg_name = attrs['name'] + arg = dbustypes.Arg(arg_name, attrs['type']) + self._cur_object.args.append(arg) +@@ -241,11 +241,11 @@ class DBusXMLParser: + + # assign docs, if any + if self.doc_comment_last_symbol == old_cur_object.name: +- if attrs.has_key('name') and self.doc_comment_params.has_key(attrs['name']): ++ if 'name' in attrs and attrs['name'] in self.doc_comment_params: + doc_string = self.doc_comment_params[attrs['name']] + if doc_string != None: + self._cur_object.doc_string = doc_string +- if self.doc_comment_params.has_key('since'): ++ if 'since' in self.doc_comment_params: + self._cur_object.since = self.doc_comment_params['since'] + + elif self.state == DBusXMLParser.STATE_PROPERTY: +diff --git a/gio/gdbus-2.0/codegen/utils.py b/gio/gdbus-2.0/codegen/utils.py +index 94bd05c..239b64e 100644 +--- a/gio/gdbus-2.0/codegen/utils.py ++++ b/gio/gdbus-2.0/codegen/utils.py +@@ -97,15 +97,8 @@ def lookup_brief_docs(annotations): + else: + return s + +-# I'm sure this could be a lot more elegant if I was +-# more fluent in python... +-def my_version_cmp(a, b): +- if len(a[0]) > 0 and len(b[0]) > 0: +- va = distutils.version.LooseVersion(a[0]) +- vb = distutils.version.LooseVersion(b[0]) +- ret = va.__cmp__(vb) +- else: +- ret = cmp(a[0], b[0]) +- if ret != 0: +- return ret +- return cmp(a[1], b[1]) ++def version_cmp_key(key): ++ # If the 'since' version is empty put a 0 in its place as this will ++ # allow LooseVersion to work and will always compare lower. ++ v = key[0] if key[0] else '0' ++ return (distutils.version.LooseVersion(v), key[1]) +-- +cgit v0.9.0.2 |