Update to 1.12.3 (#1701577)
https://cffi.readthedocs.io/en/latest/whatsnew.html#v1-12-3
This commit is contained in:
parent
17bdca2041
commit
3254f34013
|
@ -17,3 +17,4 @@
|
||||||
/cffi-1.11.2.tar.gz
|
/cffi-1.11.2.tar.gz
|
||||||
/cffi-1.11.5.tar.gz
|
/cffi-1.11.5.tar.gz
|
||||||
/cffi-1.12.2.tar.gz
|
/cffi-1.12.2.tar.gz
|
||||||
|
/cffi-1.12.3.tar.gz
|
||||||
|
|
|
@ -1,136 +0,0 @@
|
||||||
# HG changeset patch
|
|
||||||
# User Armin Rigo <arigo@tunes.org>
|
|
||||||
# Date 1552719624 -3600
|
|
||||||
# Node ID 272b53198be984719f29748f998504d1e0634e21
|
|
||||||
# Parent ff25b4e68195de3034253a1b35e096f8b616aa73
|
|
||||||
py3.8 fixes
|
|
||||||
|
|
||||||
diff --git a/cffi/_embedding.h b/cffi/_embedding.h
|
|
||||||
--- a/cffi/_embedding.h
|
|
||||||
+++ b/cffi/_embedding.h
|
|
||||||
@@ -169,8 +169,10 @@
|
|
||||||
global_dict = PyDict_New();
|
|
||||||
if (global_dict == NULL)
|
|
||||||
goto error;
|
|
||||||
- if (PyDict_SetItemString(global_dict, "__builtins__",
|
|
||||||
- PyThreadState_GET()->interp->builtins) < 0)
|
|
||||||
+ PyObject *builtins = PyEval_GetBuiltins();
|
|
||||||
+ if (builtins == NULL)
|
|
||||||
+ goto error;
|
|
||||||
+ if (PyDict_SetItemString(global_dict, "__builtins__", builtins) < 0)
|
|
||||||
goto error;
|
|
||||||
x = PyEval_EvalCode(
|
|
||||||
#if PY_MAJOR_VERSION < 3
|
|
||||||
@@ -263,23 +265,33 @@
|
|
||||||
So we use a global variable as a simple spin lock. This global
|
|
||||||
variable must be from 'libpythonX.Y.so', not from this
|
|
||||||
cffi-based extension module, because it must be shared from
|
|
||||||
- different cffi-based extension modules. We choose
|
|
||||||
+ different cffi-based extension modules.
|
|
||||||
+
|
|
||||||
+ In Python < 3.8, we choose
|
|
||||||
_PyParser_TokenNames[0] as a completely arbitrary pointer value
|
|
||||||
that is never written to. The default is to point to the
|
|
||||||
string "ENDMARKER". We change it temporarily to point to the
|
|
||||||
next character in that string. (Yes, I know it's REALLY
|
|
||||||
obscure.)
|
|
||||||
+
|
|
||||||
+ In Python >= 3.8, this string array is no longer writable, so
|
|
||||||
+ instead we pick PyCapsuleType.tp_version_tag. We can't change
|
|
||||||
+ Python < 3.8 because someone might use a mixture of cffi
|
|
||||||
+ embedded modules, some of which were compiled before this file
|
|
||||||
+ changed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef WITH_THREAD
|
|
||||||
+# if PY_VERSION_HEX < 0x03080000
|
|
||||||
char *volatile *lock = (char *volatile *)_PyParser_TokenNames;
|
|
||||||
- char *old_value;
|
|
||||||
+ char *old_value, *locked_value;
|
|
||||||
|
|
||||||
while (1) { /* spin loop */
|
|
||||||
old_value = *lock;
|
|
||||||
+ locked_value = old_value + 1;
|
|
||||||
if (old_value[0] == 'E') {
|
|
||||||
assert(old_value[1] == 'N');
|
|
||||||
- if (cffi_compare_and_swap(lock, old_value, old_value + 1))
|
|
||||||
+ if (cffi_compare_and_swap(lock, old_value, locked_value))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
@@ -290,6 +302,27 @@
|
|
||||||
this is only run at start-up anyway. */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+# else
|
|
||||||
+ int volatile *lock = (int volatile *)&PyCapsule_Type.tp_version_tag;
|
|
||||||
+ int old_value, locked_value;
|
|
||||||
+ assert(!(PyCapsule_Type.tp_flags & Py_TPFLAGS_HAVE_VERSION_TAG));
|
|
||||||
+
|
|
||||||
+ while (1) { /* spin loop */
|
|
||||||
+ old_value = *lock;
|
|
||||||
+ locked_value = -42;
|
|
||||||
+ if (old_value == 0) {
|
|
||||||
+ if (cffi_compare_and_swap(lock, old_value, locked_value))
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ else {
|
|
||||||
+ assert(old_value == locked_value);
|
|
||||||
+ /* should ideally do a spin loop instruction here, but
|
|
||||||
+ hard to do it portably and doesn't really matter I
|
|
||||||
+ think: PyEval_InitThreads() should be very fast, and
|
|
||||||
+ this is only run at start-up anyway. */
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* call Py_InitializeEx() */
|
|
||||||
@@ -306,7 +339,7 @@
|
|
||||||
|
|
||||||
#ifdef WITH_THREAD
|
|
||||||
/* release the lock */
|
|
||||||
- while (!cffi_compare_and_swap(lock, old_value + 1, old_value))
|
|
||||||
+ while (!cffi_compare_and_swap(lock, locked_value, old_value))
|
|
||||||
;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
diff --git a/testing/cffi0/test_verify.py b/testing/cffi0/test_verify.py
|
|
||||||
--- a/testing/cffi0/test_verify.py
|
|
||||||
+++ b/testing/cffi0/test_verify.py
|
|
||||||
@@ -20,7 +20,8 @@
|
|
||||||
extra_compile_args.append('-Qunused-arguments')
|
|
||||||
else:
|
|
||||||
# assume a standard gcc
|
|
||||||
- extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion']
|
|
||||||
+ extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion',
|
|
||||||
+ '-Wno-unused-parameter']
|
|
||||||
|
|
||||||
class FFI(FFI):
|
|
||||||
def verify(self, *args, **kwds):
|
|
||||||
diff --git a/testing/cffi1/test_verify1.py b/testing/cffi1/test_verify1.py
|
|
||||||
--- a/testing/cffi1/test_verify1.py
|
|
||||||
+++ b/testing/cffi1/test_verify1.py
|
|
||||||
@@ -22,7 +22,8 @@
|
|
||||||
extra_compile_args.append('-Qunused-arguments')
|
|
||||||
else:
|
|
||||||
# assume a standard gcc
|
|
||||||
- extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion']
|
|
||||||
+ extra_compile_args = ['-Werror', '-Wall', '-Wextra', '-Wconversion',
|
|
||||||
+ '-Wno-unused-parameter']
|
|
||||||
|
|
||||||
class FFI(FFI):
|
|
||||||
error = _cffi_backend.FFI.error
|
|
||||||
diff --git a/testing/embedding/test_basic.py b/testing/embedding/test_basic.py
|
|
||||||
--- a/testing/embedding/test_basic.py
|
|
||||||
+++ b/testing/embedding/test_basic.py
|
|
||||||
@@ -172,7 +172,8 @@
|
|
||||||
result = popen.stdout.read()
|
|
||||||
err = popen.wait()
|
|
||||||
if err:
|
|
||||||
- raise OSError("%r failed with exit code %r" % (name, err))
|
|
||||||
+ raise OSError("%r failed with exit code %r" % (
|
|
||||||
+ os.path.join(path, executable_name), err))
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
Name: python-cffi
|
Name: python-cffi
|
||||||
Version: 1.12.2
|
Version: 1.12.3
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Foreign Function Interface for Python to call C code
|
Summary: Foreign Function Interface for Python to call C code
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://cffi.readthedocs.org/
|
URL: https://cffi.readthedocs.org/
|
||||||
Source0: %{pypi_source cffi}
|
Source0: %{pypi_source cffi}
|
||||||
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1693617
|
|
||||||
Patch0: cffi-python38.patch
|
|
||||||
|
|
||||||
BuildRequires: libffi-devel
|
BuildRequires: libffi-devel
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
|
|
||||||
|
@ -93,6 +90,10 @@ PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m pytest c/ testing/
|
||||||
%doc doc/build/html
|
%doc doc/build/html
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 25 2019 Miro Hrončok <mhroncok@redhat.com> - 1.12.3-1
|
||||||
|
- Update to 1.12.3 (#1701577)
|
||||||
|
- https://cffi.readthedocs.io/en/latest/whatsnew.html#v1-12-3
|
||||||
|
|
||||||
* Mon Jul 15 2019 Petr Viktorin <pviktori@redhat.com> - 1.12.2-2
|
* Mon Jul 15 2019 Petr Viktorin <pviktori@redhat.com> - 1.12.2-2
|
||||||
- Remove unused build dependency on Cython
|
- Remove unused build dependency on Cython
|
||||||
- Remove duplicate build dependency on pytest
|
- Remove duplicate build dependency on pytest
|
||||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
||||||
SHA512 (cffi-1.12.2.tar.gz) = af4fe47cf5d6f1126222898365cfa21e9f11d0e71b87d869014dbb37af30dca9ddf50c989030d0f610f50e8099e8dfd08a688d8c3629abbcc4f0294f5f91b817
|
SHA512 (cffi-1.12.3.tar.gz) = 9070f5cfe543c9261a79f995548899c3e7539ee20f562ba91a4a909887745bd28448b0e38241031d6b2ab87286fd0ec91768b8bf6577716427612d41b0ed3b93
|
||||||
|
|
Loading…
Reference in New Issue