Updated py-xcbgen to 1.12.

here is a new version of xcb-proto for you to enjoy. Highlights are lots of
improvements especially to the xinput extension, support for RandR 1.5 and an
automatic alignment checker.
This commit is contained in:
wiz 2016-05-19 07:08:14 +00:00
parent 583ad17547
commit 9f0e4c1b17
6 changed files with 272 additions and 11 deletions

View file

@ -1,7 +1,7 @@
# $NetBSD: Makefile,v 1.16 2014/08/05 18:37:29 wiz Exp $
# $NetBSD: Makefile,v 1.17 2016/05/19 07:08:14 wiz Exp $
DISTNAME= xcb-proto-1.11
PKGNAME= ${PYPKGPREFIX}-xcbgen-1.11
DISTNAME= xcb-proto-1.12
PKGNAME= ${PYPKGPREFIX}-xcbgen-1.12
CATEGORIES= x11
MASTER_SITES= http://xcb.freedesktop.org/dist/
EXTRACT_SUFX= .tar.bz2

View file

@ -1,7 +1,10 @@
@comment $NetBSD: PLIST,v 1.2 2009/06/14 18:25:04 joerg Exp $
@comment $NetBSD: PLIST,v 1.3 2016/05/19 07:08:14 wiz Exp $
${PYSITELIB}/xcbgen/__init__.py
${PYSITELIB}/xcbgen/__init__.pyc
${PYSITELIB}/xcbgen/__init__.pyo
${PYSITELIB}/xcbgen/align.py
${PYSITELIB}/xcbgen/align.pyc
${PYSITELIB}/xcbgen/align.pyo
${PYSITELIB}/xcbgen/error.py
${PYSITELIB}/xcbgen/error.pyc
${PYSITELIB}/xcbgen/error.pyo

View file

@ -1,7 +1,9 @@
$NetBSD: distinfo,v 1.11 2015/11/04 03:28:52 agc Exp $
$NetBSD: distinfo,v 1.12 2016/05/19 07:08:14 wiz Exp $
SHA1 (xcb-proto-1.11.tar.bz2) = 608bd60663e223464d38acec0183ddb827776401
RMD160 (xcb-proto-1.11.tar.bz2) = 956fbf550ee9a8b6f5c7db78d1806e44da3c3081
SHA512 (xcb-proto-1.11.tar.bz2) = 13c228d974f99e2f17a7352629b85c76674e395567474997015941780df123f9c809a76935242aaf31b7836b0478bd557e3cc9161dd4880b4fb8eb576216dbc1
Size (xcb-proto-1.11.tar.bz2) = 139213 bytes
SHA1 (patch-ae) = 569fede9974f9e2bc51de9bb187c9721baf21ab9
SHA1 (xcb-proto-1.12.tar.bz2) = e93da374ecef9359370edc0160bcb8b2a2f7d9f6
RMD160 (xcb-proto-1.12.tar.bz2) = 95e933656e7f8a59347296d75255e42e6f4a932a
SHA512 (xcb-proto-1.12.tar.bz2) = 1f427eaf223971b25b56c9f641350e03f5ebeb17a1fc212ce2a0c892de7aba7e53d5e3958b073a122bb344c387c0ff394cf96f542ff046f33de4e1cd27fb9e5c
Size (xcb-proto-1.12.tar.bz2) = 153890 bytes
SHA1 (patch-ae) = ae3eae2c5ebf88bfc33a04f688f5c243c1475605
SHA1 (patch-xcbgen_align.py) = 5504ddb51c7ab35b26be35288b878934a3e0f7c4
SHA1 (patch-xcbgen_xtypes.py) = 7f107721ee61e506e5485f72b064155aaa727ee9

View file

@ -1,4 +1,6 @@
$NetBSD: patch-ae,v 1.2 2012/06/03 17:28:24 wiz Exp $
$NetBSD: patch-ae,v 1.3 2016/05/19 07:08:14 wiz Exp $
Only build xcbgen parts in this package, other stuff is in xcbproto.
--- Makefile.in.orig 2012-03-23 15:24:26.000000000 +0000
+++ Makefile.in

View file

@ -0,0 +1,197 @@
$NetBSD: patch-xcbgen_align.py,v 1.1 2016/05/19 07:08:14 wiz Exp $
Python-3.x fixes.
--- xcbgen/align.py.orig 2016-05-01 07:44:48.000000000 +0000
+++ xcbgen/align.py
@@ -16,12 +16,12 @@ class Alignment(object):
return self.align == other.align and self.offset == other.offset
def __str__(self):
- return "(align=%d, offset=%d)" % (self.align, self.offset)
+ return "(align=%d, offset=%d)" % (self.align, self.offset)
@staticmethod
def for_primitive_type(size):
- # compute the required start_alignment based on the size of the type
- if size % 8 == 0:
+ # compute the required start_alignment based on the size of the type
+ if size % 8 == 0:
# do 8-byte primitives require 8-byte alignment in X11?
return Alignment(8,0)
elif size % 4 == 0:
@@ -33,7 +33,7 @@ class Alignment(object):
def align_after_fixed_size(self, size):
- new_offset = (self.offset + size) % self.align
+ new_offset = (self.offset + size) % self.align
return Alignment(self.align, new_offset)
@@ -41,7 +41,7 @@ class Alignment(object):
'''
Assuming the given external_align, checks whether
self is fulfilled for all cases.
- Returns True if yes, False otherwise.
+ Returns True if yes, False otherwise.
'''
if self.align == 1 and self.offset == 0:
# alignment 1 with offset 0 is always fulfilled
@@ -55,9 +55,9 @@ class Alignment(object):
# the external align guarantees less alignment -> not guaranteed
return False
- if external_align.align % self.align != 0:
+ if external_align.align % self.align != 0:
# the external align cannot be divided by our align
- # -> not guaranteed
+ # -> not guaranteed
# (this can only happen if there are alignments that are not
# a power of 2, which is highly discouraged. But better be
# safe and check for it)
@@ -72,7 +72,7 @@ class Alignment(object):
def combine_with(self, other):
# returns the alignment that is guaranteed when
- # both, self or other, can happen
+ # both, self or other, can happen
new_align = gcd(self.align, other.align)
new_offset_candidate1 = self.offset % new_align
new_offset_candidate2 = other.offset % new_align
@@ -83,8 +83,8 @@ class Alignment(object):
new_align = gcd(new_align, offset_diff)
new_offset_candidate1 = self.offset % new_align
new_offset_candidate2 = other.offset % new_align
- assert new_offset_candidate1 == new_offset_candidate2
- new_offset = new_offset_candidate1
+ assert new_offset_candidate1 == new_offset_candidate2
+ new_offset = new_offset_candidate1
# return the result
return Alignment(new_align, new_offset)
@@ -92,44 +92,44 @@ class Alignment(object):
class AlignmentLog(object):
def __init__(self):
- self.ok_list = []
- self.fail_list = []
- self.verbosity = 1
+ self.ok_list = []
+ self.fail_list = []
+ self.verbosity = 1
def __str__(self):
- result = ""
+ result = ""
- # output the OK-list
- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
- stacksize = len(callstack)
+ # output the OK-list
+ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list:
+ stacksize = len(callstack)
indent = ' ' * stacksize
- if self.ok_callstack_is_relevant(callstack):
+ if self.ok_callstack_is_relevant(callstack):
if field_name is None or field_name == "":
- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n"
- % (indent, str(type_obj), indent, str(align_before), str(align_after)))
- else:
- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
- % (indent, str(field_name), str(type_obj),
- indent, str(align_before), str(align_after)))
+ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n"
+ % (indent, str(type_obj), indent, str(align_before), str(align_after)))
+ else:
+ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n"
+ % (indent, str(field_name), str(type_obj),
+ indent, str(align_before), str(align_after)))
if self.verbosity >= 1:
- result += self.callstack_to_str(indent, callstack)
+ result += self.callstack_to_str(indent, callstack)
- # output the fail-list
- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
- stacksize = len(callstack)
+ # output the fail-list
+ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list:
+ stacksize = len(callstack)
indent = ' ' * stacksize
- if field_name is None or field_name == "":
- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
- % (indent, str(align_before), indent, str(type_obj), indent, reason))
- else:
- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
+ if field_name is None or field_name == "":
+ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n"
+ % (indent, str(align_before), indent, str(type_obj), indent, reason))
+ else:
+ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n"
+ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason))
if self.verbosity >= 1:
- result += self.callstack_to_str(indent, callstack)
+ result += self.callstack_to_str(indent, callstack)
- return result
+ return result
def callstack_to_str(self, indent, callstack):
@@ -137,41 +137,41 @@ class AlignmentLog(object):
for stack_elem in callstack:
result += "\t %s%s\n" % (indent, str(stack_elem))
result += "\t%s]\n" % indent
- return result
+ return result
def ok_callstack_is_relevant(self, ok_callstack):
# determine whether an ok callstack is relevant for logging
- if self.verbosity >= 2:
- return True
+ if self.verbosity >= 2:
+ return True
# empty callstacks are always relevant
- if len(ok_callstack) == 0:
+ if len(ok_callstack) == 0:
return True
- # check whether the ok_callstack is a subset or equal to a fail_callstack
+ # check whether the ok_callstack is a subset or equal to a fail_callstack
for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list:
if len(ok_callstack) <= len(fail_callstack):
zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)])
- is_subset = all([i == j for i, j in zipped])
- if is_subset:
+ is_subset = all([i == j for i, j in zipped])
+ if is_subset:
return True
return False
def ok(self, align_before, field_name, type_obj, callstack, align_after):
- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
+ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after))
def fail(self, align_before, field_name, type_obj, callstack, reason):
- self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
+ self.fail_list.append((align_before, field_name, type_obj, callstack, reason))
def append(self, other):
- self.ok_list.extend(other.ok_list)
- self.fail_list.extend(other.fail_list)
+ self.ok_list.extend(other.ok_list)
+ self.fail_list.extend(other.fail_list)
def ok_count(self):
- return len(self.ok_list)
+ return len(self.ok_list)

View file

@ -0,0 +1,57 @@
$NetBSD: patch-xcbgen_xtypes.py,v 1.1 2016/05/19 07:08:14 wiz Exp $
Python-3.x fixes.
--- xcbgen/xtypes.py.orig 2016-05-01 07:44:48.000000000 +0000
+++ xcbgen/xtypes.py
@@ -501,7 +501,7 @@ class ComplexType(Type):
int(required_start_align_element.get('align', "4"), 0),
int(required_start_align_element.get('offset', "0"), 0))
if verbose_align_log:
- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align)
+ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align))
def resolve(self, module):
if self.resolved:
@@ -592,7 +592,7 @@ class ComplexType(Type):
if verbose_align_log:
print ("calc_required_start_align: %s has start-align %s"
% (str(self), str(self.required_start_align)))
- print "Details:\n" + str(log)
+ print ("Details:\n" + str(log))
if self.required_start_align.offset != 0:
print (("WARNING: %s\n\thas start-align with non-zero offset: %s"
+ "\n\tsuggest to add explicit definition with:"
@@ -619,12 +619,12 @@ class ComplexType(Type):
for offset in range(0,align):
align_candidate = Alignment(align, offset)
if verbose_align_log:
- print "trying %s for %s" % (str(align_candidate), str(self))
+ print ("trying %s for %s" % (str(align_candidate), str(self)))
my_log = AlignmentLog()
if self.is_possible_start_align(align_candidate, callstack, my_log):
log.append(my_log)
if verbose_align_log:
- print "found start-align %s for %s" % (str(align_candidate), str(self))
+ print ("found start-align %s for %s" % (str(align_candidate), str(self)))
return align_candidate
else:
my_ok_count = my_log.ok_count()
@@ -641,7 +641,7 @@ class ComplexType(Type):
# none of the candidates applies
# this type has illegal internal aligns for all possible start_aligns
if verbose_align_log:
- print "didn't find start-align for %s" % str(self)
+ print ("didn't find start-align for %s" % str(self))
log.append(best_log)
return None
@@ -900,7 +900,7 @@ class SwitchType(ComplexType):
# aux function for unchecked_get_alignment_after
def get_align_for_selected_case_field(self, case_field, start_align, callstack, log):
if verbose_align_log:
- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))
+ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)))
total_align = start_align
for field in self.bitcases:
my_callstack = callstack[:]