[PATCH] xcbgen: Address API incompatability between xcb-proto-1.6 and xcb-proto-1.7

Jeremy Huddleston jeremyhu at apple.com
Sat Mar 3 21:53:59 PST 2012


Regression From: 76ca2c0b1527541be59c344118c538ba055ad9d8

Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
---
 xcbgen/xtypes.py |    9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py
index 14c318a..faf2463 100644
--- a/xcbgen/xtypes.py
+++ b/xcbgen/xtypes.py
@@ -159,6 +159,10 @@ class ListType(Type):
         Type.__init__(self, member.name)
         self.is_list = True
         self.member = member
+
+        # We store both parent and parents for API compatability
+        # <1.6 used parent (which is deprecated) and 1.7 used parents
+        self.parent = list(parent)
         self.parents = list(parent)
 
         if elt.tag == 'list':
@@ -357,7 +361,12 @@ class SwitchType(ComplexType):
 
     def __init__(self, name, elt, *parents):
         ComplexType.__init__(self, name, elt)
+
+        # We store both parent and parents for API compatability
+        # <1.6 used parent (which is deprecated) and 1.7 used parents
+        self.parent = parents
         self.parents = parents
+
         # FIXME: switch cannot store lenfields, so it should just delegate the parents
         self.lenfield_parent = list(parents) + [self]
         # self.fields contains all possible fields collected from the Bitcase objects, 
-- 
1.7.9.2




76ca2c0b1527541be59c344118c538ba055ad9d8 is the first bad commit
commit 76ca2c0b1527541be59c344118c538ba055ad9d8
Author: Christoph Reimann <oss at arcor.de>
Date:   Mon Aug 16 18:32:13 2010 +0200

    xcbgen: small fix to store anchestor objects more systematic
    xml: small fixes according to Xlib or the spec

:040000 040000 aa9bf5cfab1a4ffeb98873a581d846823340cf58 5841b923617e73a242896ed8763ec559b120bedd M	src
:040000 040000 108193a81580d531c2c147e16cc539c388c87b1a cf01ce48775fed08e361ae295a0790c76a19cdcd M	xcbgen


1: http://lists.freedesktop.org/archives/xcb/2011-January/006724.html
> On 12/29/2010 11:22 AM, Nicolas Chauvat wrote:
> > Hi,
> >
> > I am trying to compile the qtile window manager.
> >
> > I use the attached script under Debian/Lenny and Debian/Squeeze.
> >
> > I get the following error::
> >
> >    $ /usr/bin/python ./py_client.py -p
> >    /home/nico/tmp/local-qtile/lib/python2.5/site-packages
> >    /home/nico/tmp/local-qtile/share/xcb/xproto.xml
> >    Traceback (most recent call last):
> >      File "./py_client.py", line 623, in<module>
> >        module.generate()
> >      File "/home/nico/tmp/local-qtile/lib/python2.5/site-packages/xcbgen/state.py",
> >      line 101, in generate
> >        item.out(name)
> >      File "./py_client.py", line 363, in py_struct
> >        _py_complex(self, name)
> >      File "./py_client.py", line 327, in _py_complex
> >        _py('        self.%s = xcb.List(self, count, %s, %s, %d)',
> >        _n(field.field_name), _py_get_expr(field.type.expr),
> >        field.py_listtype, field.py_listsize)
> >      File "./py_client.py", line 278, in _py_get_expr
> >        lenexp = _py_get_length_field(expr)
> >      File "./py_client.py", line 264, in _py_get_length_field
> >        if hasattr(expr.parent.parent, "opcode"):
> >    AttributeError: 'ListType' object has no attribute 'parent'
> >
> > The versions I have are::
> >
> >    proto c4497cdbf0640c376cdebb0a9e5ea62458e6ba51
> >    xcb   3c5813697169a33ecfd6ac0ab5641dec654f6612
> >    xpyb  68015314d8f95ee6029d07a4bf89bdd73c46ac9c
> >
> > Since the changeset that added line 264 to py_client is fairly recent,
> > I am surprised it does not compile with the head of xcb and proto.
> >
> > Any hint ?
> >
> 
> Recent changes seem to have broken it, will try and take a look at it 
> this week, thanks for the report.
> 
> --Eamon


More information about the Xcb mailing list