Accepting request 566623 from openSUSE:Factory:Staging:O
- 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 OBS-URL: https://build.opensuse.org/request/show/566623 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xcb-proto?expand=0&rev=25
This commit is contained in:
parent
852073b9aa
commit
a34804da53
211
U_python-whitespace.patch
Normal file
211
U_python-whitespace.patch
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Klausner <wiz@NetBSD.org>
|
||||||
|
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 <wiz@NetBSD.org>
|
||||||
|
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
71
U_python3-compat.patch
Normal file
71
U_python3-compat.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thomas Klausner <wiz@NetBSD.org>
|
||||||
|
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 <wiz@NetBSD.org>
|
||||||
|
Signed-off-by: Uli Schlachter <psychon@znc.in>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 17 13:05:11 UTC 2018 - tchvatal@suse.com
|
||||||
|
|
||||||
|
- 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
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jan 8 13:56:31 UTC 2018 - msrb@suse.com
|
Mon Jan 8 13:56:31 UTC 2018 - msrb@suse.com
|
||||||
|
|
||||||
|
@ -16,13 +16,12 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%if %suse_version >= 1500
|
|
||||||
%define have_python2 0
|
|
||||||
%else
|
|
||||||
%define have_python2 1
|
|
||||||
%endif
|
|
||||||
|
|
||||||
%define dirsuffix 1.12
|
%define dirsuffix 1.12
|
||||||
|
%if 0%{?suse_version} >= 1500
|
||||||
|
%bcond_with python2
|
||||||
|
%else
|
||||||
|
%bcond_without python2
|
||||||
|
%endif
|
||||||
Name: xcb-proto
|
Name: xcb-proto
|
||||||
Version: 7.6_%{dirsuffix}
|
Version: 7.6_%{dirsuffix}
|
||||||
Release: 0
|
Release: 0
|
||||||
@ -30,21 +29,23 @@ Summary: The X11 Protocol: X Protocol C Bindings
|
|||||||
License: X11
|
License: X11
|
||||||
Group: Development/Libraries/X11
|
Group: Development/Libraries/X11
|
||||||
Url: http://xorg.freedesktop.org/
|
Url: http://xorg.freedesktop.org/
|
||||||
#Git-Clone: git://anongit.freedesktop.org/xorg/proto/xcb-proto
|
#Git-Web: https://cgit.freedesktop.org/xcb/proto
|
||||||
#Git-Web: http://cgit.freedesktop.org/xorg/proto/xcb-proto/
|
|
||||||
Source: http://xorg.freedesktop.org/archive/individual/xcb/%{name}-%{dirsuffix}.tar.bz2
|
Source: http://xorg.freedesktop.org/archive/individual/xcb/%{name}-%{dirsuffix}.tar.bz2
|
||||||
Patch1: U_xinput-typedef-for-event_type_base.patch
|
Patch1: U_xinput-typedef-for-event_type_base.patch
|
||||||
Patch2: U_add-support-for-eventstruct.patch
|
Patch2: U_add-support-for-eventstruct.patch
|
||||||
Patch3: U_SendExtensionEvent-uses-eventstruct.patch
|
Patch3: U_SendExtensionEvent-uses-eventstruct.patch
|
||||||
|
Patch4: U_python-whitespace.patch
|
||||||
|
Patch5: U_python3-compat.patch
|
||||||
BuildRequires: autoconf >= 2.57
|
BuildRequires: autoconf >= 2.57
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
%if %{have_python2}
|
%if %{with python2}
|
||||||
BuildRequires: python2-base
|
BuildRequires: python2-base
|
||||||
%endif
|
%else
|
||||||
BuildRequires: python3-base
|
BuildRequires: python3-base
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The XCB protocol headers for X11 development. xcb-proto provides the
|
The XCB protocol headers for X11 development. xcb-proto provides the
|
||||||
@ -54,16 +55,19 @@ its code and API.
|
|||||||
%package devel
|
%package devel
|
||||||
Summary: The X11 Protocol: X Protocol C Bindings
|
Summary: The X11 Protocol: X Protocol C Bindings
|
||||||
Group: Development/Libraries/X11
|
Group: Development/Libraries/X11
|
||||||
Requires: python3-xcb-proto-devel = %{version}
|
|
||||||
Provides: xorg-x11-proto-devel = 7.6
|
Provides: xorg-x11-proto-devel = 7.6
|
||||||
Obsoletes: 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
|
%description devel
|
||||||
The XCB protocol headers for X11 development. xcb-proto provides the
|
The XCB protocol headers for X11 development. xcb-proto provides the
|
||||||
XML-XCB protocol descriptions that libxcb uses to generate the majority of
|
XML-XCB protocol descriptions that libxcb uses to generate the majority of
|
||||||
its code and API.
|
its code and API.
|
||||||
|
|
||||||
%if %{have_python2}
|
|
||||||
%package -n python2-xcb-proto-devel
|
%package -n python2-xcb-proto-devel
|
||||||
Summary: Python libraries mandatory for XML-XCB Development
|
Summary: Python libraries mandatory for XML-XCB Development
|
||||||
Group: Development/Libraries/X11
|
Group: Development/Libraries/X11
|
||||||
@ -76,7 +80,6 @@ Obsoletes: python-xcb-proto-devel <= 7.6
|
|||||||
Language-independent Python libraries that used to parse an XML description
|
Language-independent Python libraries that used to parse an XML description
|
||||||
and create objects used by Python code generators in individual language
|
and create objects used by Python code generators in individual language
|
||||||
bindings.
|
bindings.
|
||||||
%endif
|
|
||||||
|
|
||||||
%package -n python3-xcb-proto-devel
|
%package -n python3-xcb-proto-devel
|
||||||
Summary: Python libraries mandatory for XML-XCB Development
|
Summary: Python libraries mandatory for XML-XCB Development
|
||||||
@ -89,43 +92,35 @@ bindings.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{dirsuffix}
|
%setup -q -n %{name}-%{dirsuffix}
|
||||||
%patch1 -p1
|
%autopatch -p1
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fiv
|
autoreconf -fiv
|
||||||
# In order to build both python2 and python3 version we need to run
|
%if %{with python2}
|
||||||
# configure and install twice
|
|
||||||
|
|
||||||
%if %{have_python2}
|
|
||||||
export PYTHON="python2"
|
export PYTHON="python2"
|
||||||
%configure
|
%else
|
||||||
make %{?_smp_mflags}
|
|
||||||
%make_install
|
|
||||||
%endif
|
|
||||||
|
|
||||||
export PYTHON="python3"
|
export PYTHON="python3"
|
||||||
|
%endif
|
||||||
%configure
|
%configure
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
%make_install
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%fdupes -s %{buildroot}/%{_prefix}
|
%make_install
|
||||||
|
%fdupes %{buildroot}/%{_prefix}
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%dir %{_datadir}/xcb
|
%dir %{_datadir}/xcb
|
||||||
%doc %{_datadir}/xcb/*
|
%doc %{_datadir}/xcb/*
|
||||||
%{_libdir}/pkgconfig/*.pc
|
%{_libdir}/pkgconfig/*.pc
|
||||||
|
|
||||||
%if %{have_python2}
|
%if %{with python2}
|
||||||
%files -n python2-xcb-proto-devel
|
%files -n python2-xcb-proto-devel
|
||||||
%doc COPYING
|
%doc COPYING
|
||||||
%{python_sitelib}/xcbgen/
|
%{python_sitelib}/xcbgen/
|
||||||
|
%else
|
||||||
|
%files -n python3-xcb-proto-devel
|
||||||
|
%license COPYING
|
||||||
|
%{python3_sitelib}/xcbgen/
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files -n python3-xcb-proto-devel
|
|
||||||
%doc COPYING
|
|
||||||
%{python3_sitelib}/xcbgen/
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
Loading…
x
Reference in New Issue
Block a user