summaryrefslogtreecommitdiff
path: root/package/libglib2/libglib2-make-codegen-python2-python3-compliant.patch
blob: b4838270ba58dae3957f274947691ec182261cc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
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