From 16e78b99be5dd938ea95dd16d6d67378ffce63cf98d04ad6e6476b3a10b84a4c Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Tue, 19 Nov 2024 12:53:05 +0000 Subject: [PATCH] - update to 18.1.11: * WARNING - BREAKING CHANGE: Drop support for Python 3.8. This breaking change should usually require a major and/or minor number update. Since berkeleydb traditional numbering is related to the higher Oracle Berkeley DB supported, I would usually wait until Oracle releases a new version to upgrade my own version and deprecate old Python support at the same time. Given that Oracle has not released a new Oracle Berkeley DB in almost five years, I must break this practice for now. I am sorry if this update breaks your Python 3.8 environment. In that case, please pin your berkeleydb installation to OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-berkeleydb?expand=0&rev=5 --- .gitattributes | 23 +++++++ .gitignore | 1 + berkeleydb-18.1.10.tar.gz | 3 + berkeleydb-18.1.11.tar.gz | 3 + berkeleydb-18.1.8.tar.gz | 3 + python-berkeleydb.changes | 125 ++++++++++++++++++++++++++++++++++++++ python-berkeleydb.spec | 81 ++++++++++++++++++++++++ 7 files changed, 239 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 berkeleydb-18.1.10.tar.gz create mode 100644 berkeleydb-18.1.11.tar.gz create mode 100644 berkeleydb-18.1.8.tar.gz create mode 100644 python-berkeleydb.changes create mode 100644 python-berkeleydb.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/berkeleydb-18.1.10.tar.gz b/berkeleydb-18.1.10.tar.gz new file mode 100644 index 0000000..6d069d5 --- /dev/null +++ b/berkeleydb-18.1.10.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:426341a16007a9002d987a6f4d97226f8eafffcb1a0488488053d38a3127c81a +size 298248 diff --git a/berkeleydb-18.1.11.tar.gz b/berkeleydb-18.1.11.tar.gz new file mode 100644 index 0000000..d54679b --- /dev/null +++ b/berkeleydb-18.1.11.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7454f560d2d1a0e5d0d5630a437f19926b68bc794eb161edea2cdc4b267cf574 +size 174774 diff --git a/berkeleydb-18.1.8.tar.gz b/berkeleydb-18.1.8.tar.gz new file mode 100644 index 0000000..2b2dbef --- /dev/null +++ b/berkeleydb-18.1.8.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1831a790bfd855740e5c12f952f19f646c269806cfc362775afd9878cf32557 +size 294803 diff --git a/python-berkeleydb.changes b/python-berkeleydb.changes new file mode 100644 index 0000000..822f9f7 --- /dev/null +++ b/python-berkeleydb.changes @@ -0,0 +1,125 @@ +------------------------------------------------------------------- +Tue Nov 19 12:52:51 UTC 2024 - Dirk Müller + +- update to 18.1.11: + * WARNING - BREAKING CHANGE: Drop support for Python 3.8. This + breaking change should usually require a major and/or minor + number update. Since berkeleydb traditional numbering is + related to the higher Oracle Berkeley DB supported, I would + usually wait until Oracle releases a new version to upgrade + my own version and deprecate old Python support at the same + time. Given that Oracle has not released a new Oracle + Berkeley DB in almost five years, I must break this practice + for now. I am sorry if this update breaks your Python 3.8 + environment. In that case, please pin your berkeleydb + installation to + +------------------------------------------------------------------- +Wed Oct 9 06:33:55 UTC 2024 - Dirk Müller + +- update to 18.1.10: + * Since MS Windows is unsupported without community help, I + deleted some legacy code. It could be restored if there is + demand and some help to improve MS Windows support. + * New URL for :Oracle:`Oracle documentation `. + * Now we also use Python Stable ABI under Python 3.8 and 3.9. + Under Python 3.10 and up we can define types that users can + not instantiate as Py_TPFLAGS_DISALLOW_INSTANTIATION, but + that flag is not available under previous Python versions. In + Python 3.8 and 3.9 we used to do type->tp_new = NULL; for + that, but this approach is not available under Python Stable + ABI. That is the reason this module could use Python Stable + ABI only when compiled under Python 3.10 and superior. In + this release we define the slot Py_tp_new as NULL in Python + 3.8 and 3.9 to achieve the same effect, and that is available + under Python Stable ABI. + * Since this module can now use Python Stable ABI under all + supported Python releases, that is exactly what we do. From + now on this module always uses Python Stable ABI. + * WARNING - BREAKING CHANGE: Change return value of + berkeleydb.py_limited_api(). This function was introduced in + 18.1.9 and it is used to indicate if the module was using the + Python Stable ABI or not, and the version Python Stable ABI + used. Now that the module has been improved to use Python + Stable ABI always, the function returns a tuple of integers. + First tuple element tells us what Python Stable ABI version + are we supporting. Second element tells us what Python + release was this module compiled under, although it should + work in any more recent Python release. Since this function + was introduced in release 18.1.9, we consider this breaking + change a minor infraction affecting most probably nobody. + * Delete some unneeded ancient Python 2.x code. + * Delete more unneeded code to check threading support since + Python 3.7 and up always guarantee threads. + * pkg_resources is deprecated, so migrate to packaging. This is + already provided by modern setuptools. This change only + affects you if you run the test suite. + * If compiled under Python 3.10 or higher, we use the Python + Stable ABI, as defined in PEP 384 and related PEPs. That is, + you can use the same compiled module with any Python release + if Python version >= 3.10. In order to achieve this, we have + made these changes: Some fast Python API (not error + checking) have been replaced by somewhat slower functions + (functions that do error checking), because the former are + not available in the Stable ABI: PyBytes_GET_SIZE(), + PyBytes_AS_STRING(), PyTuple_SET_ITEM(). We replaced + PyErr_Warn() by PyErr_WarnEx() because it is not available in + the Stable ABI. When an exception is raised because an + incompatible type, we need to write complicated code because + Py_TYPE(keyobj)->tp_name is not available in the Stable ABI. + Code generated for Python < 3.11 is "ugly", we will clean it + up when the minimum supported Python version is 3.11. + TYPE->tp_alloc is not available under the Stable ABI. We + replace it with PyType_GenericNew(). Internal types that + should NOT be instanciated by the user has type->tp_new = + NULL. This can not be done under the Stable ABI, so we use + Py_TPFLAGS_DISALLOW_INSTANTIATION flag. This is the reason we + only create Stable ABI modules under Python >= 3.10, because + that flag is defined in that Python release. The new function + berkeleydb.py_limited_api() returns an integer describing the + minimum supported Stable ABI or None. If None, the module is + not compiled with Stable ABI and can not be used with a + different Python version. When not None, the value of + berkeleydb.py_limited_api() can be easily interpreted using + something like hex(berkeleydb.py_limited_api()). + * Some fast Python API (not error checking) have been replaced + by somewhat slower functions (functions that do error + checking), because the former are not available in the Stable + ABI: PyBytes_GET_SIZE(), PyBytes_AS_STRING(), + PyTuple_SET_ITEM(). + * We replaced PyErr_Warn() by PyErr_WarnEx() because it is not + available in the Stable ABI. + * When an exception is raised because an incompatible type, we + need to write complicated code because + Py_TYPE(keyobj)->tp_name is not available in the Stable ABI. + Code generated for Python < 3.11 is "ugly", we will clean it + up when the minimum supported Python version is 3.11. + * TYPE->tp_alloc is not available under the Stable ABI. We + replace it with PyType_GenericNew(). + * Internal types that should NOT be instanciated by the user + has type->tp_new = NULL. This can not be done under the + Stable ABI, so we use Py_TPFLAGS_DISALLOW_INSTANTIATION flag. + This is the reason we only create Stable ABI modules under + Python >= 3.10, because that flag is defined in that Python + release. + * The new function berkeleydb.py_limited_api() returns an + integer describing the minimum supported Stable ABI or None. + If None, the module is not compiled with Stable ABI and can + not be used with a different Python version. When not None, + the value of berkeleydb.py_limited_api() can be easily + interpreted using something like + hex(berkeleydb.py_limited_api()). + * Python 3.13 added to the full test matrix. + * Experimental Python 3.13 support. Tested under 3.13.0b2. + * This code can be compiled under MS Windows, but I am unable + to provide support for it and it is far from trivial. Because + of this and some complains about it, I change the + "Classifiers" for this project from 'Operating System :: OS + Independent' to 'Operating System :: Unix' I would restore + MS Windows support if there is some kind of community support + for it. I can not do it by myself alone. Sorry about that. + +------------------------------------------------------------------- +Mon Feb 5 03:28:49 UTC 2024 - Steve Kowalik + +- Initial release of 18.1.8 diff --git a/python-berkeleydb.spec b/python-berkeleydb.spec new file mode 100644 index 0000000..f99f199 --- /dev/null +++ b/python-berkeleydb.spec @@ -0,0 +1,81 @@ +# +# spec file for package python-berkeleydb +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-berkeleydb +Version: 18.1.11 +Release: 0 +Summary: Python bindings for Oracle Berkeley DB +License: BSD-3-Clause +URL: https://www.jcea.es/programacion/pybsddb.htm +Source: https://files.pythonhosted.org/packages/source/b/berkeleydb/berkeleydb-%{version}.tar.gz +BuildRequires: %{python_module devel} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools >= 65.5.0} +BuildRequires: %{python_module testsuite} +BuildRequires: %{python_module wheel} +BuildRequires: db-devel +BuildRequires: fdupes +BuildRequires: python-rpm-macros +%python_subpackages + +%description +This module provides a nearly complete wrapping of the Oracle/Sleepycat C API +for the Database Environment, Database, Cursor, Log Cursor, Sequence and +Transaction objects, and each of these is exposed as a Python type in the +berkeleydb.db module. The database objects can use various access methods: +btree, hash, recno, queue and heap. Complete support of Oracle Berkeley DB +distributed transactions. Complete support for Oracle Berkeley DB Replication +Manager. Complete support for Oracle Berkeley DB Base Replication. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version} + +%description devel +This module provides a nearly complete wrapping of the Oracle/Sleepycat C API +for the Database Environment, Database, Cursor, Log Cursor, Sequence and +Transaction objects, and each of these is exposed as a Python type in the +berkeleydb.db module. + +This package contains the development files for %{name} + +%prep +%autosetup -p1 -n berkeleydb-%{version} + +%build +export CFLAGS="%{optflags} -fno-strict-aliasing" +%pyproject_wheel + +%install +%pyproject_install +%python_expand %fdupes %{buildroot}%{$python_sitearch} %{buildroot}%{_docdir} + +%check +%python_exec test.py + +%files %{python_files} +%doc ChangeLog README.txt docs/* +%license LICENSE.txt licenses.txt +%{python_sitearch}/berkeleydb +%{python_sitearch}/berkeleydb-%{version}.dist-info + +%files %{python_files devel} +%license licenses.txt LICENSE.txt +%{_includedir}/python%{python_version}*/berkeleydb + +%changelog