Fixed typecast issues using debian patch(int->size_t)(BZ#1140189)

This commit is contained in:
Jakub Čajka 2014-09-15 13:27:38 +02:00 committed by Dan Horák
parent 21632c5158
commit 72978d4809
2 changed files with 94 additions and 14 deletions

View File

@ -6,21 +6,26 @@
Name: PyYAML
Version: 3.11
Release: 5%{?dist}
Release: 6%{?dist}
Summary: YAML parser and emitter for Python
Group: Development/Libraries
License: MIT
URL: http://pyyaml.org/
Source0: http://pyyaml.org/download/pyyaml/%{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: python-devel, python-setuptools, libyaml-devel
BuildRequires: Cython
BuildRequires: libyaml-devel
Provides: python-yaml = %{version}-%{release}
Provides: python-yaml%{?_isa} = %{version}-%{release}
%if 0%{?with_python3}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-Cython
%endif
# debian patch, upstream ticket http://pyyaml.org/ticket/247 and
# https://bitbucket.org/xi/pyyaml/issue/35/test-fails-on-be-s390-x-ppc64
Patch0: debian-big-endian-fix.patch
%description
YAML is a data serialization format designed for human readability and
@ -57,26 +62,30 @@ configuration files to object serialization and persistance.
%prep
%setup -q -n %{name}-%{version}
%patch0 -p1 -b .be
chmod a-x examples/yaml-highlight/yaml_hl.py
%if 0%{?with_python3}
rm -rf %{py3dir}
cp -a . %{py3dir}
%endif
# remove pre-generated file
rm -rf ext/_yaml.c
%build
CFLAGS="${RPM_OPT_FLAGS}" %{__python} setup.py --with-libyaml build
# regenerate ext/_yaml.c
CFLAGS="${RPM_OPT_FLAGS}" %{__python} setup.py --with-libyaml build_ext
%if 0%{?with_python3}
rm -rf %{py3dir}
# ext/_yaml.c is needed
cp -a . %{py3dir}
pushd %{py3dir}
CFLAGS="${RPM_OPT_FLAGS}" %{__python3} setup.py --with-libyaml build
popd
%endif
CFLAGS="${RPM_OPT_FLAGS}" %{__python} setup.py --with-libyaml build
%install
rm -rf %{buildroot}
%{__python} setup.py install -O1 --skip-build --root %{buildroot}
%if 0%{?with_python3}
@ -96,12 +105,7 @@ popd
%endif
%clean
rm -rf %{buildroot}
%files
%defattr(644,root,root,755)
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc CHANGES PKG-INFO README examples
@ -109,7 +113,6 @@ rm -rf %{buildroot}
%if 0%{?with_python3}
%files -n python3-PyYAML
%defattr(644,root,root,755)
%{!?_licensedir:%global license %%doc}
%license LICENSE
%doc CHANGES PKG-INFO README examples
@ -118,6 +121,10 @@ rm -rf %{buildroot}
%changelog
* Mon Sep 15 2014 Jakub Čajka <jcajka@redhat.com> - 3.11-6
- fixed typecast issues using debian patch(int->size_t)(BZ#1140189)
- spec file cleanup
* Fri Aug 15 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.11-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild

View File

@ -0,0 +1,73 @@
pyyaml FTBFS on the s390x buildd. It seems this is due to using int
where the libyaml API uses size_t. I tested the attached patch in
zelenka.d.o's sid chroot, and at least the python2 build/test worked (it
failed with the same error as the buildd pre-patching).
Patch by Julien Cristau <jcristau@debian.org>
Add to the pyyaml package by Scott Kitterman <scott@kitterman.com>
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=676536
Index: pyyaml-3.10/ext/_yaml.pxd
===================================================================
--- pyyaml-3.10.orig/ext/_yaml.pxd 2011-05-29 23:31:01.000000000 -0400
+++ pyyaml-3.10/ext/_yaml.pxd 2012-06-08 16:33:54.309407701 -0400
@@ -86,15 +86,15 @@
YAML_MAPPING_END_EVENT
ctypedef int yaml_read_handler_t(void *data, char *buffer,
- int size, int *size_read) except 0
+ size_t size, size_t *size_read) except 0
ctypedef int yaml_write_handler_t(void *data, char *buffer,
- int size) except 0
+ size_t size) except 0
ctypedef struct yaml_mark_t:
- int index
- int line
- int column
+ size_t index
+ size_t line
+ size_t column
ctypedef struct yaml_version_directive_t:
int major
int minor
@@ -113,7 +113,7 @@
char *suffix
ctypedef struct _yaml_token_scalar_data_t:
char *value
- int length
+ size_t length
yaml_scalar_style_t style
ctypedef struct _yaml_token_version_directive_data_t:
int major
@@ -152,7 +152,7 @@
char *anchor
char *tag
char *value
- int length
+ size_t length
int plain_implicit
int quoted_implicit
yaml_scalar_style_t style
Index: pyyaml-3.10/ext/_yaml.pyx
===================================================================
--- pyyaml-3.10.orig/ext/_yaml.pyx 2011-05-29 23:31:01.000000000 -0400
+++ pyyaml-3.10/ext/_yaml.pyx 2012-06-08 16:33:54.313409701 -0400
@@ -905,7 +905,7 @@
raise error
return 1
-cdef int input_handler(void *data, char *buffer, int size, int *read) except 0:
+cdef int input_handler(void *data, char *buffer, size_t size, size_t *read) except 0:
cdef CParser parser
parser = <CParser>data
if parser.stream_cache is None:
@@ -1515,7 +1515,7 @@
self.ascend_resolver()
return 1
-cdef int output_handler(void *data, char *buffer, int size) except 0:
+cdef int output_handler(void *data, char *buffer, size_t size) except 0:
cdef CEmitter emitter
emitter = <CEmitter>data
if emitter.dump_unicode == 0: