Accepting request 636994 from devel:languages:python

- Add 3184b0a675fc425b821b528d7fdf744b2f08dadf.patch as
  a workardond against
  https://bitbucket.org/cffi/cffi/issues/378/ (possible bug in
  GCC, see https://bugzilla.redhat.com/1552724).
- Add e2e324a2f13e3a646de6f6ff03e90ed7d37e2636.patch from
  upstream to remove some warnings.
  https://bitbucket.org/cffi/cffi/issues/384/

OBS-URL: https://build.opensuse.org/request/show/636994
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-cffi?expand=0&rev=22
This commit is contained in:
Dominique Leuenberger 2018-09-26 12:53:50 +00:00 committed by Git OBS Bridge
commit 5060e23178
5 changed files with 112 additions and 5 deletions

View File

@ -0,0 +1,46 @@
# HG changeset patch
# User Armin Rigo <arigo@tunes.org>
# Date 1536839482 -7200
# Node ID 3184b0a675fc425b821b528d7fdf744b2f08dadf
# Parent 97a61f7b0bcd48eb74f136280ffd8733e829f153
Issue 378
Workaround for a GCC bug
diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -892,11 +892,21 @@
return 0;
}
+#ifdef __GNUC__
+/* This is a workaround for what I think is a GCC bug on several
+ platforms. See issue #378. */
+__attribute__((noinline))
+#endif
+void _cffi_memcpy(char *target, const void *src, size_t size)
+{
+ memcpy(target, src, size);
+}
+
#define _write_raw_data(type) \
do { \
if (size == sizeof(type)) { \
type r = (type)source; \
- memcpy(target, &r, sizeof(type)); \
+ _cffi_memcpy(target, &r, sizeof(type)); \
return; \
} \
} while(0)
@@ -970,8 +980,8 @@
if (size == 2*sizeof(type)) { \
type r = (type)source.real; \
type i = (type)source.imag; \
- memcpy(target, &r, sizeof(type)); \
- memcpy(target+sizeof(type), &i, sizeof(type)); \
+ _cffi_memcpy(target, &r, sizeof(type)); \
+ _cffi_memcpy(target+sizeof(type), &i, sizeof(type)); \
return; \
} \
} while(0)

View File

@ -0,0 +1,32 @@
# HG changeset patch
# User Armin Rigo <arigo@tunes.org>
# Date 1537369554 -7200
# Node ID e2e324a2f13e3a646de6f6ff03e90ed7d37e2636
# Parent 8076f2ac1bd2b68b7015fb1fb936bd6907946756
Issue #384
Un-ignore the warnings when testing for them, in case someone runs
py.test with the PYTHONWARNINGS environment variable set
diff --git a/c/test_c.py b/c/test_c.py
--- a/c/test_c.py
+++ b/c/test_c.py
@@ -3968,6 +3968,7 @@
z3 = cast(BVoidP, 0)
z4 = cast(BUCharP, 0)
with warnings.catch_warnings(record=True) as w:
+ warnings.simplefilter("always")
newp(new_pointer_type(BIntP), z1) # warn
assert len(w) == 1
newp(new_pointer_type(BVoidP), z1) # fine
diff --git a/testing/cffi0/backend_tests.py b/testing/cffi0/backend_tests.py
--- a/testing/cffi0/backend_tests.py
+++ b/testing/cffi0/backend_tests.py
@@ -1386,6 +1386,7 @@
ffi = FFI(backend=self.Backend())
ffi.cdef("enum foo;")
with warnings.catch_warnings(record=True) as log:
+ warnings.simplefilter("always")
n = ffi.cast("enum foo", -1)
assert int(n) == 0xffffffff
assert str(log[0].message) == (

View File

@ -1,4 +1,4 @@
# cffi specifically installs C headers in site-packages, so :
addFilter("devel-file-in-non-devel-package .*/site-packages/cffi/parse_c_type.h")
addFilter("devel-file-in-non-devel-package .*/site-packages/cffi/_cffi_include.h")
addFilter("devel-file-in-non-devel-package .*/site-packages/cffi/_cffi_(include|errors).h")
addFilter("devel-file-in-non-devel-package .*/site-packages/cffi/_embedding.h")

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Fri Sep 21 07:24:58 CEST 2018 - mcepl@suse.com
- Add 3184b0a675fc425b821b528d7fdf744b2f08dadf.patch as
a workardond against
https://bitbucket.org/cffi/cffi/issues/378/ (possible bug in
GCC, see https://bugzilla.redhat.com/1552724).
-------------------------------------------------------------------
Wed Sep 19 20:43:08 CEST 2018 - mcepl@suse.com
- Remove ignore-tests.patch -- testing what will happen
- Add e2e324a2f13e3a646de6f6ff03e90ed7d37e2636.patch from
upstream to remove some warnings.
-------------------------------------------------------------------
Tue Sep 18 15:51:02 UTC 2018 - Matěj Cepl <mcepl@suse.com>
- Switch off falling tests with new patch
ignore-tests.patch instead of -k parameter for py.test.
https://bitbucket.org/cffi/cffi/issues/384/
-------------------------------------------------------------------
Fri Mar 2 23:14:41 UTC 2018 - arun@gmx.de

View File

@ -12,7 +12,7 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@ -23,13 +23,18 @@ Release: 0
Summary: Foreign Function Interface for Python calling C code
License: MIT
Group: Development/Languages/Python
Url: http://cffi.readthedocs.org
URL: http://cffi.readthedocs.org
Source0: https://files.pythonhosted.org/packages/source/c/cffi/cffi-%{version}.tar.gz
Source1: python-cffi-rpmlintrc
# https://bitbucket.org/cffi/cffi/issues/384/
Patch0: e2e324a2f13e3a646de6f6ff03e90ed7d37e2636.patch
# https://bitbucket.org/cffi/cffi/issues/378
Patch1: 3184b0a675fc425b821b528d7fdf744b2f08dadf.patch
BuildRequires: %{python_module devel}
BuildRequires: %{python_module pycparser}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
@ -43,6 +48,7 @@ is to provide a convenient and reliable way of calling C code from Python.
%prep
%setup -q -n cffi-%{version}
%autopatch -p1
%build
export CFLAGS="%{optflags}"
@ -50,12 +56,13 @@ export CFLAGS="%{optflags}"
%install
%python_install
%python_expand %fdupes %{buildroot}%{$python_sitearch}
%check
%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} py.test-%$python_bin_suffix -k "not test_init_once_multithread" c/ testing/
%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} py.test-%$python_bin_suffix -W ignore::UserWarning c/ testing/
%files %{python_files}
%doc LICENSE
%license LICENSE
%{python_sitearch}/*
%changelog