Hello community, here is the log from the commit of package python-persistent for openSUSE:Factory checked in at 2018-08-15 10:38:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-persistent (Old) and /work/SRC/openSUSE:Factory/.python-persistent.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-persistent" Wed Aug 15 10:38:37 2018 rev:7 rq:629251 version:4.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-persistent/python-persistent.changes 2018-07-31 15:57:54.479394733 +0200 +++ /work/SRC/openSUSE:Factory/.python-persistent.new/python-persistent.changes 2018-08-15 10:38:43.524327864 +0200 @@ -1,0 +2,16 @@ +Tue Aug 14 14:55:56 UTC 2018 - mc...@suse.com + +- Update to 4.3.0: + * Fix the possibility of a rare crash in the C extension when + deallocating items. See + https://github.com/zopefoundation/persistent/issues/66 + * Change cPickleCache's comparison of object sizes to determine + whether an object can go in the cache to use PyObject_TypeCheck(). + This matches what the pure Python implementation does and is + a stronger test that the object really is compatible with the + cache. Previously, an object could potentially include + cPersistent_HEAD and not set tp_base to cPersistenceCAPI->pertype + and still be eligible for the pickle cache; that is no longer the + case. See https://github.com/zopefoundation/persistent/issues/69 + +------------------------------------------------------------------- Old: ---- persistent-4.2.4.2.tar.gz New: ---- persistent-4.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-persistent.spec ++++++ --- /var/tmp/diff_new_pack.oewYSZ/_old 2018-08-15 10:38:45.156330839 +0200 +++ /var/tmp/diff_new_pack.oewYSZ/_new 2018-08-15 10:38:45.160330847 +0200 @@ -19,14 +19,15 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-persistent -Version: 4.2.4.2 +Version: 4.3.0 Release: 0 Summary: Translucent persistent objects License: ZPL-2.1 Group: Development/Languages/Python URL: https://github.com/zopefoundation/persistent Source: https://files.pythonhosted.org/packages/source/p/persistent/persistent-%{version}.tar.gz -Patch0: persistent-4.2.4.2-switch-off-tests.patch +# Blocking https://github.com/zopefoundation/persistent/issues/86 +Patch: persistent-4.2.4.2-switch-off-tests.patch # Documentation requirements: BuildRequires: %{python_module Sphinx} BuildRequires: %{python_module devel} @@ -62,8 +63,8 @@ %prep %setup -q -n persistent-%{version} +%autopatch -p1 rm -rf persistent.egg-info -%patch0 -p1 %build %python_build ++++++ persistent-4.2.4.2.tar.gz -> persistent-4.3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/.travis.yml new/persistent-4.3.0/.travis.yml --- old/persistent-4.2.4.2/.travis.yml 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/.travis.yml 2018-07-30 19:50:15.000000000 +0200 @@ -61,7 +61,6 @@ - echo [distutils] > ~/.pypirc - echo index-servers = pypi >> ~/.pypirc - echo [pypi] >> ~/.pypirc - - echo repository=https://pypi.python.org/pypi >> ~/.pypirc - echo username=zope.wheelbuilder >> ~/.pypirc - echo password=$PYPIPASSWORD >> ~/.pypirc - if [[ $TRAVIS_TAG && "$TRAVIS_OS_NAME" == "osx" ]]; then pip install twine; fi @@ -70,4 +69,4 @@ env: global: - secure: "NTWzDr5p8KRPNt+sniTot7csbzC87rzir/XfLtENE0GpQ49FlKw3lBhsDqAPoD8Ea5lwiHXmC/C/ci1UZhFvVEkAoQ2qJlMRnhqUdRJSrqcitmRt0fT6mLaTd+Lr+DxKlBxpssobrEm2G42V/G1s0Ggym04OqF8T+s6MF5ywgJM=" \ No newline at end of file + secure: "NTWzDr5p8KRPNt+sniTot7csbzC87rzir/XfLtENE0GpQ49FlKw3lBhsDqAPoD8Ea5lwiHXmC/C/ci1UZhFvVEkAoQ2qJlMRnhqUdRJSrqcitmRt0fT6mLaTd+Lr+DxKlBxpssobrEm2G42V/G1s0Ggym04OqF8T+s6MF5ywgJM=" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/CHANGES.rst new/persistent-4.3.0/CHANGES.rst --- old/persistent-4.2.4.2/CHANGES.rst 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/CHANGES.rst 2018-07-30 19:50:15.000000000 +0200 @@ -1,6 +1,21 @@ ``persistent`` Changelog ======================== +4.3.0 (2018-07-30) +------------------ + +- Fix the possibility of a rare crash in the C extension when + deallocating items. See https://github.com/zopefoundation/persistent/issues/66 + +- Change cPickleCache's comparison of object sizes to determine + whether an object can go in the cache to use ``PyObject_TypeCheck()``. + This matches what the pure Python implementation does and is a + stronger test that the object really is compatible with the cache. + Previously, an object could potentially include ``cPersistent_HEAD`` + and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still + be eligible for the pickle cache; that is no longer the case. See + `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_. + 4.2.4.2 (2017-04-23) -------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/PKG-INFO new/persistent-4.3.0/PKG-INFO --- old/persistent-4.2.4.2/PKG-INFO 2017-04-23 18:58:55.000000000 +0200 +++ new/persistent-4.3.0/PKG-INFO 2018-07-30 19:50:16.000000000 +0200 @@ -1,15 +1,15 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: persistent -Version: 4.2.4.2 +Version: 4.3.0 Summary: Translucent persistent objects -Home-page: http://www.zope.org/Products/ZODB +Home-page: https://github.com/zopefoundation/persistent/ Author: Zope Corporation Author-email: zodb-...@zope.org License: ZPL 2.1 Description: ``persistent``: automatic persistence for Python objects ========================================================= - .. image:: https://travis-ci.org/zopefoundation/persistent.png?branch=master + .. image:: https://travis-ci.org/zopefoundation/persistent.svg?branch=master :target: https://travis-ci.org/zopefoundation/persistent .. image:: https://readthedocs.org/projects/persistent/badge/?version=latest @@ -29,7 +29,9 @@ a database such as the ZODB. Please see the Sphinx documentation (``docs/index.rst``) for further - information. + information, or view the documentation at Read The Docs, for either + the latest (``http://persistent.readthedocs.io/en/latest/) or stable + release (``http://persistent.readthedocs.io/en/stable/``). .. note:: @@ -41,6 +43,21 @@ ``persistent`` Changelog ======================== + 4.3.0 (2018-07-30) + ------------------ + + - Fix the possibility of a rare crash in the C extension when + deallocating items. See https://github.com/zopefoundation/persistent/issues/66 + + - Change cPickleCache's comparison of object sizes to determine + whether an object can go in the cache to use ``PyObject_TypeCheck()``. + This matches what the pure Python implementation does and is a + stronger test that the object really is compatible with the cache. + Previously, an object could potentially include ``cPersistent_HEAD`` + and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still + be eligible for the pickle cache; that is no longer the case. See + `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_. + 4.2.4.2 (2017-04-23) -------------------- @@ -300,3 +317,6 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: Unix +Provides-Extra: docs +Provides-Extra: test +Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/README.rst new/persistent-4.3.0/README.rst --- old/persistent-4.2.4.2/README.rst 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/README.rst 2018-07-30 19:50:15.000000000 +0200 @@ -1,7 +1,7 @@ ``persistent``: automatic persistence for Python objects ========================================================= -.. image:: https://travis-ci.org/zopefoundation/persistent.png?branch=master +.. image:: https://travis-ci.org/zopefoundation/persistent.svg?branch=master :target: https://travis-ci.org/zopefoundation/persistent .. image:: https://readthedocs.org/projects/persistent/badge/?version=latest @@ -21,7 +21,9 @@ a database such as the ZODB. Please see the Sphinx documentation (``docs/index.rst``) for further -information. +information, or view the documentation at Read The Docs, for either +the latest (``http://persistent.readthedocs.io/en/latest/) or stable +release (``http://persistent.readthedocs.io/en/stable/``). .. note:: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/persistent/cPersistence.c new/persistent-4.3.0/persistent/cPersistence.c --- old/persistent-4.2.4.2/persistent/cPersistence.c 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/persistent/cPersistence.c 2018-07-30 19:50:15.000000000 +0200 @@ -783,6 +783,7 @@ static void Per_dealloc(cPersistentObject *self) { + PyObject_GC_UnTrack((PyObject *)self); if (self->state >= 0) { /* If the cache has been cleared, then a non-ghost object diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/persistent/cPickleCache.c new/persistent-4.3.0/persistent/cPickleCache.c --- old/persistent-4.2.4.2/persistent/cPickleCache.c 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/persistent/cPickleCache.c 2018-07-30 19:50:15.000000000 +0200 @@ -99,11 +99,6 @@ #include <stddef.h> #undef Py_FindMethod -/* Python 2.4 backward compat */ -#if PY_MAJOR_VERSION <= 2 && PY_MINOR_VERSION < 5 -#define Py_ssize_t int -typedef Py_ssize_t (*lenfunc)(PyObject *); -#endif /* Python string objects to speed lookups; set by module init. */ static PyObject *py__p_changed; @@ -111,7 +106,7 @@ static PyObject *py__p_jar; static PyObject *py__p_oid; -static cPersistenceCAPIstruct *capi; +static cPersistenceCAPIstruct *cPersistenceCAPI; /* This object is the pickle cache. The CACHE_HEAD macro guarantees that layout of this struct is the same as the start of @@ -206,7 +201,7 @@ { assert(self->ring_lock); assert(here != &self->ring_home); - + /* At this point we know that the ring only contains nodes from persistent objects, plus our own home node. We know this because the ring lock is held. We can safely assume @@ -214,14 +209,14 @@ is not the home */ object = OBJECT_FROM_RING(self, here); - if (object->state == cPersistent_UPTODATE_STATE) + if (object->state == cPersistent_UPTODATE_STATE) { CPersistentRing placeholder; PyObject *method; PyObject *temp; int error_occurred = 0; /* deactivate it. This is the main memory saver. */ - + /* Add a placeholder, a dummy node in the ring. We need to do this to mark our position in the ring. It is possible that the PyObject_GetAttr() call below will @@ -237,7 +232,7 @@ method = PyObject_GetAttr((PyObject *)object, py__p_deactivate); if (method == NULL) error_occurred = 1; - else + else { temp = PyObject_CallObject(method, NULL); Py_DECREF(method); @@ -523,7 +518,7 @@ v = Py_BuildValue("Oi", k, v->ob_refcnt); else if (! PyType_Check(v) && - (v->ob_type->tp_basicsize >= sizeof(cPersistentObject)) + PER_TypeCheck(v) ) v = Py_BuildValue("Oisi", k, v->ob_refcnt, v->ob_type->tp_name, @@ -711,13 +706,12 @@ { /* Its a persistent class, such as a ZClass. Thats ok. */ } - else if (v->ob_type->tp_basicsize < sizeof(cPersistentObject)) + else if (! PER_TypeCheck(v)) { /* If it's not an instance of a persistent class, (ie Python classes that derive from persistent.Persistent, BTrees, etc), report an error. - TODO: checking sizeof() seems a poor test. */ PyErr_SetString(PyExc_TypeError, "Cache values must be persistent objects."); @@ -891,6 +885,7 @@ static void cc_dealloc(ccobject *self) { + PyObject_GC_UnTrack((PyObject *)self); Py_XDECREF(self->data); Py_XDECREF(self->jar); PyObject_GC_Del(self); @@ -1033,13 +1028,11 @@ { /* Its a persistent class, such as a ZClass. Thats ok. */ } - else if (v->ob_type->tp_basicsize < sizeof(cPersistentObject)) + else if (! PER_TypeCheck(v)) { /* If it's not an instance of a persistent class, (ie Python classes that derive from persistent.Persistent, BTrees, etc), report an error. - - TODO: checking sizeof() seems a poor test. */ PyErr_SetString(PyExc_TypeError, "Cache values must be persistent objects."); @@ -1058,7 +1051,7 @@ PyErr_Format(PyExc_TypeError, "Cached object oid must be bytes, not a %s", oid->ob_type->tp_name); - + return -1; } @@ -1346,14 +1339,14 @@ #endif #ifdef PY3K - capi = (cPersistenceCAPIstruct *)PyCapsule_Import(CAPI_CAPSULE_NAME, 0); + cPersistenceCAPI = (cPersistenceCAPIstruct *)PyCapsule_Import(CAPI_CAPSULE_NAME, 0); #else - capi = (cPersistenceCAPIstruct *)PyCObject_Import( - "persistent.cPersistence", "CAPI"); + cPersistenceCAPI = (cPersistenceCAPIstruct *)PyCObject_Import( + "persistent.cPersistence", "CAPI"); #endif - if (!capi) + if (!cPersistenceCAPI) return NULL; - capi->percachedel = (percachedelfunc)cc_oid_unreferenced; + cPersistenceCAPI->percachedel = (percachedelfunc)cc_oid_unreferenced; py__p_changed = INTERN("_p_changed"); if (!py__p_changed) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/persistent.egg-info/PKG-INFO new/persistent-4.3.0/persistent.egg-info/PKG-INFO --- old/persistent-4.2.4.2/persistent.egg-info/PKG-INFO 2017-04-23 18:58:55.000000000 +0200 +++ new/persistent-4.3.0/persistent.egg-info/PKG-INFO 2018-07-30 19:50:16.000000000 +0200 @@ -1,15 +1,15 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: persistent -Version: 4.2.4.2 +Version: 4.3.0 Summary: Translucent persistent objects -Home-page: http://www.zope.org/Products/ZODB +Home-page: https://github.com/zopefoundation/persistent/ Author: Zope Corporation Author-email: zodb-...@zope.org License: ZPL 2.1 Description: ``persistent``: automatic persistence for Python objects ========================================================= - .. image:: https://travis-ci.org/zopefoundation/persistent.png?branch=master + .. image:: https://travis-ci.org/zopefoundation/persistent.svg?branch=master :target: https://travis-ci.org/zopefoundation/persistent .. image:: https://readthedocs.org/projects/persistent/badge/?version=latest @@ -29,7 +29,9 @@ a database such as the ZODB. Please see the Sphinx documentation (``docs/index.rst``) for further - information. + information, or view the documentation at Read The Docs, for either + the latest (``http://persistent.readthedocs.io/en/latest/) or stable + release (``http://persistent.readthedocs.io/en/stable/``). .. note:: @@ -41,6 +43,21 @@ ``persistent`` Changelog ======================== + 4.3.0 (2018-07-30) + ------------------ + + - Fix the possibility of a rare crash in the C extension when + deallocating items. See https://github.com/zopefoundation/persistent/issues/66 + + - Change cPickleCache's comparison of object sizes to determine + whether an object can go in the cache to use ``PyObject_TypeCheck()``. + This matches what the pure Python implementation does and is a + stronger test that the object really is compatible with the cache. + Previously, an object could potentially include ``cPersistent_HEAD`` + and *not* set ``tp_base`` to ``cPersistenceCAPI->pertype`` and still + be eligible for the pickle cache; that is no longer the case. See + `issue 69 <https://github.com/zopefoundation/persistent/issues/69>`_. + 4.2.4.2 (2017-04-23) -------------------- @@ -300,3 +317,6 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: Unix +Provides-Extra: docs +Provides-Extra: test +Provides-Extra: testing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/persistent-4.2.4.2/setup.py new/persistent-4.3.0/setup.py --- old/persistent-4.2.4.2/setup.py 2017-04-23 18:58:54.000000000 +0200 +++ new/persistent-4.3.0/setup.py 2018-07-30 19:50:15.000000000 +0200 @@ -20,7 +20,7 @@ from setuptools import find_packages from setuptools import setup -version = '4.2.4.2' +version = '4.3.0' here = os.path.abspath(os.path.dirname(__file__)) @@ -43,58 +43,69 @@ if is_pypy or is_jython or is_pure: ext_modules = headers = [] else: - ext_modules = [Extension(name = 'persistent.cPersistence', - sources= ['persistent/cPersistence.c', - 'persistent/ring.c', - ], - depends = ['persistent/cPersistence.h', - 'persistent/ring.h', - 'persistent/ring.c', - ] - ), - Extension(name = 'persistent.cPickleCache', - sources= ['persistent/cPickleCache.c', - 'persistent/ring.c' - ], - depends = ['persistent/cPersistence.h', - 'persistent/ring.h', - 'persistent/ring.c', - ] - ), - Extension(name = 'persistent._timestamp', - sources= ['persistent/_timestamp.c', - ], - ), - ] - headers = ['persistent/cPersistence.h', - 'persistent/ring.h'] + ext_modules = [ + Extension( + name='persistent.cPersistence', + sources=[ + 'persistent/cPersistence.c', + 'persistent/ring.c', + ], + depends=[ + 'persistent/cPersistence.h', + 'persistent/ring.h', + 'persistent/ring.c', + ] + ), + Extension( + name='persistent.cPickleCache', + sources=[ + 'persistent/cPickleCache.c', + 'persistent/ring.c', + ], + depends=[ + 'persistent/cPersistence.h', + 'persistent/ring.h', + 'persistent/ring.c', + ] + ), + Extension( + name='persistent._timestamp', + sources=[ + 'persistent/_timestamp.c', + ], + ), + ] + headers = [ + 'persistent/cPersistence.h', + 'persistent/ring.h', + ] setup(name='persistent', version=version, description='Translucent persistent objects', long_description=README, classifiers=[ - "Development Status :: 6 - Mature", - "License :: OSI Approved :: Zope Public License", - "Programming Language :: Python", - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", - "Framework :: ZODB", - "Topic :: Database", - "Topic :: Software Development :: Libraries :: Python Modules", - "Operating System :: Microsoft :: Windows", - "Operating System :: Unix", - ], + "Development Status :: 6 - Mature", + "License :: OSI Approved :: Zope Public License", + "Programming Language :: Python", + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", + "Framework :: ZODB", + "Topic :: Database", + "Topic :: Software Development :: Libraries :: Python Modules", + "Operating System :: Microsoft :: Windows", + "Operating System :: Unix", + ], author="Zope Corporation", author_email="zodb-...@zope.org", - url="http://www.zope.org/Products/ZODB", + url="https://github.com/zopefoundation/persistent/", license="ZPL 2.1", platforms=["any"], packages=find_packages(), @@ -103,13 +114,19 @@ ext_modules=ext_modules, headers=headers, extras_require={ - 'test': (), - 'testing': ['nose', 'coverage'], - 'docs': ['Sphinx', 'repoze.sphinx.autointerface'], + 'test': (), + 'testing': [ + 'nose', + 'coverage', + ], + 'docs': [ + 'Sphinx', + 'repoze.sphinx.autointerface', + ], }, test_suite="persistent.tests", install_requires=[ - 'zope.interface', + 'zope.interface', ], entry_points={}, - ) +)