From 3254f340139aa0b4e5d961f59c7e1e03501aa799 Mon Sep 17 00:00:00 2001 From: Miro Hrončok Date: Jul 25 2019 23:39:29 +0000 Subject: Update to 1.12.3 (#1701577) https://cffi.readthedocs.io/en/latest/whatsnew.html#v1-12-3 --- diff --git a/.gitignore b/.gitignore index fcbb61a..d93bf79 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /cffi-1.11.2.tar.gz /cffi-1.11.5.tar.gz /cffi-1.12.2.tar.gz +/cffi-1.12.3.tar.gz diff --git a/cffi-python38.patch b/cffi-python38.patch deleted file mode 100644 index fd4df59..0000000 --- a/cffi-python38.patch +++ /dev/null @@ -1,136 +0,0 @@ -# HG changeset patch -# User Armin Rigo -# 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 - - diff --git a/python-cffi.spec b/python-cffi.spec index 80ffb1b..e971eee 100644 --- a/python-cffi.spec +++ b/python-cffi.spec @@ -1,14 +1,11 @@ Name: python-cffi -Version: 1.12.2 -Release: 2%{?dist} +Version: 1.12.3 +Release: 1%{?dist} Summary: Foreign Function Interface for Python to call C code License: MIT URL: https://cffi.readthedocs.org/ Source0: %{pypi_source cffi} -# https://bugzilla.redhat.com/show_bug.cgi?id=1693617 -Patch0: cffi-python38.patch - BuildRequires: libffi-devel BuildRequires: gcc @@ -93,6 +90,10 @@ PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m pytest c/ testing/ %doc doc/build/html %changelog +* Thu Jul 25 2019 Miro Hrončok - 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 - 1.12.2-2 - Remove unused build dependency on Cython - Remove duplicate build dependency on pytest diff --git a/sources b/sources index 03cb786..3b833d5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (cffi-1.12.2.tar.gz) = af4fe47cf5d6f1126222898365cfa21e9f11d0e71b87d869014dbb37af30dca9ddf50c989030d0f610f50e8099e8dfd08a688d8c3629abbcc4f0294f5f91b817 +SHA512 (cffi-1.12.3.tar.gz) = 9070f5cfe543c9261a79f995548899c3e7539ee20f562ba91a4a909887745bd28448b0e38241031d6b2ab87286fd0ec91768b8bf6577716427612d41b0ed3b93