Hello community, here is the log from the commit of package xcb-proto for openSUSE:Factory checked in at 2018-01-19 11:48:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xcb-proto (Old) and /work/SRC/openSUSE:Factory/.xcb-proto.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xcb-proto" Fri Jan 19 11:48:01 2018 rev:11 rq:566632 version:7.6_1.12 Changes: -------- --- /work/SRC/openSUSE:Factory/xcb-proto/xcb-proto.changes 2018-01-16 09:26:07.691292532 +0100 +++ /work/SRC/openSUSE:Factory/.xcb-proto.new/xcb-proto.changes 2018-01-19 11:48:43.484333126 +0100 @@ -1,0 +2,9 @@ +Wed Jan 17 13:05:11 UTC 2018 - [email protected] + +- Tweak the python conditions to pick between py2 and py3 only + do not bother with "both at once" scenario +- Apply patches to make sure we really work with python3: + * U_python-whitespace.patch + * U_python3-compat.patch + +------------------------------------------------------------------- New: ---- U_python-whitespace.patch U_python3-compat.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xcb-proto.spec ++++++ --- /var/tmp/diff_new_pack.dZCPhM/_old 2018-01-19 11:48:43.992309176 +0100 +++ /var/tmp/diff_new_pack.dZCPhM/_new 2018-01-19 11:48:43.996308988 +0100 @@ -16,13 +16,12 @@ # -%if %suse_version >= 1500 -%define have_python2 0 +%define dirsuffix 1.12 +%if 0%{?suse_version} >= 1500 +%bcond_with python2 %else -%define have_python2 1 +%bcond_without python2 %endif - -%define dirsuffix 1.12 Name: xcb-proto Version: 7.6_%{dirsuffix} Release: 0 @@ -30,21 +29,23 @@ License: X11 Group: Development/Libraries/X11 Url: http://xorg.freedesktop.org/ -#Git-Clone: git://anongit.freedesktop.org/xorg/proto/xcb-proto -#Git-Web: http://cgit.freedesktop.org/xorg/proto/xcb-proto/ +#Git-Web: https://cgit.freedesktop.org/xcb/proto Source: http://xorg.freedesktop.org/archive/individual/xcb/%{name}-%{dirsuffix}.tar.bz2 Patch1: U_xinput-typedef-for-event_type_base.patch Patch2: U_add-support-for-eventstruct.patch Patch3: U_SendExtensionEvent-uses-eventstruct.patch +Patch4: U_python-whitespace.patch +Patch5: U_python3-compat.patch BuildRequires: autoconf >= 2.57 BuildRequires: automake BuildRequires: fdupes BuildRequires: pkgconfig BuildRequires: python-rpm-macros -%if %{have_python2} +%if %{with python2} BuildRequires: python2-base -%endif +%else BuildRequires: python3-base +%endif %description The XCB protocol headers for X11 development. xcb-proto provides the @@ -54,16 +55,19 @@ %package devel Summary: The X11 Protocol: X Protocol C Bindings Group: Development/Libraries/X11 -Requires: python3-xcb-proto-devel = %{version} Provides: xorg-x11-proto-devel = 7.6 Obsoletes: xorg-x11-proto-devel <= 7.6 +%if %{with python2} +Requires: python2-xcb-proto-devel = %{version} +%else +Requires: python3-xcb-proto-devel = %{version} +%endif %description devel The XCB protocol headers for X11 development. xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to generate the majority of its code and API. -%if %{have_python2} %package -n python2-xcb-proto-devel Summary: Python libraries mandatory for XML-XCB Development Group: Development/Libraries/X11 @@ -76,7 +80,6 @@ Language-independent Python libraries that used to parse an XML description and create objects used by Python code generators in individual language bindings. -%endif %package -n python3-xcb-proto-devel Summary: Python libraries mandatory for XML-XCB Development @@ -89,43 +92,35 @@ %prep %setup -q -n %{name}-%{dirsuffix} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 +%autopatch -p1 %build autoreconf -fiv -# In order to build both python2 and python3 version we need to run -# configure and install twice - -%if %{have_python2} +%if %{with python2} export PYTHON="python2" -%configure -make %{?_smp_mflags} -%make_install -%endif - +%else export PYTHON="python3" +%endif %configure make %{?_smp_mflags} -%make_install %install -%fdupes -s %{buildroot}/%{_prefix} +%make_install +%fdupes %{buildroot}/%{_prefix} %files devel %dir %{_datadir}/xcb %doc %{_datadir}/xcb/* %{_libdir}/pkgconfig/*.pc -%if %{have_python2} +%if %{with python2} %files -n python2-xcb-proto-devel %doc COPYING %{python_sitelib}/xcbgen/ -%endif - +%else %files -n python3-xcb-proto-devel -%doc COPYING +%license COPYING %{python3_sitelib}/xcbgen/ +%endif %changelog ++++++ U_python-whitespace.patch ++++++ >From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 From: Thomas Klausner <[email protected]> Date: Thu, 19 May 2016 17:30:04 +0200 Subject: Make whitespace use consistent. At least python-3.5.x complains about this forcefully. Signed-off-by: Thomas Klausner <[email protected]> Signed-off-by: Uli Schlachter <[email protected]> --- xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/xcbgen/align.py b/xcbgen/align.py index 5e31838..d4c12ee 100644 --- a/xcbgen/align.py +++ b/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) -- cgit v1.1 ++++++ U_python3-compat.patch ++++++ >From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 From: Thomas Klausner <[email protected]> Date: Thu, 19 May 2016 17:30:05 +0200 Subject: print() is a function and needs parentheses. Fixes build with python-3.x. Signed-off-by: Thomas Klausner <[email protected]> Signed-off-by: Uli Schlachter <[email protected]> --- xcbgen/xtypes.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py index c3b5758..b83b119 100644 --- a/xcbgen/xtypes.py +++ b/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[:] -- cgit v1.1
