From 717045f358760144d6cd7660872defb4a3fc5835c13de715a43c70fd4a9ce8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Mon, 3 Feb 2025 14:55:12 +0000 Subject: [PATCH] - Update to 18.1.13 * WARNING: Being able to compile the bindings on non x86/x86_64 Linux systems (ARM, RISC-V, etc). This improvement required to change the way compilation on Linux worked. If you find any issue with this, please report. * Compile the C module with extra static analysis and be more strict. * Some functions have unused parameters that we would like to preserve. * Different types in different python subinterpreters are tricky under Py_LIMITED_API < Python 3.10. We will delete the workarounds when Python 3.10 be the minimal supported version. * Delete some unused parameters thru all the source code. * Be explicit and complete in the sentinel values. * Be explicit initializing (missing) docstrings. * Rewrite some function prototypes to avoid warning when being strict and to avoid unneeded function castings. + Functions METH_NOARGS require two parameters, although one of them will be ignored. * Be sure we don't wrap an unsigned int operation, bypassing an assertion. * Update copyright to 2025. * Oracle Berkeley DB>=5.3: Beside db.DB_VERSION_STRING we now have db.DB_VERSION_FULL_STRING. * Oracle Berkeley DB>=6.2: Beside db.DB_DBT_BLOB we now have db.DB_DBT_EXT_FILE. * Being able to test against an especific Oracle Berkeley DB release. * Code cleanup: + Remove unnecessary semicolons in Python code. + Remove unused imports. + Split multiple imports in a single line. + Split multiple statements in multiple lines. + Delete dead assignments. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-berkeleydb?expand=0&rev=7 --- .gitattributes | 23 ++++ .gitignore | 1 + berkeleydb-18.1.10.tar.gz | 3 + berkeleydb-18.1.11.tar.gz | 3 + berkeleydb-18.1.13.tar.gz | 3 + berkeleydb-18.1.8.tar.gz | 3 + python-berkeleydb.changes | 235 ++++++++++++++++++++++++++++++++++++++ python-berkeleydb.spec | 83 ++++++++++++++ 8 files changed, 354 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.13.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.13.tar.gz b/berkeleydb-18.1.13.tar.gz new file mode 100644 index 0000000..c5decdf --- /dev/null +++ b/berkeleydb-18.1.13.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cfc4d6b2bd2aa2f223039ef877773cacf91692c986fd1ae14a53f913ee74ab8 +size 177099 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..aaeb0f6 --- /dev/null +++ b/python-berkeleydb.changes @@ -0,0 +1,235 @@ +------------------------------------------------------------------- +Mon Feb 3 14:02:53 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 18.1.13 + * WARNING: Being able to compile the bindings on non x86/x86_64 Linux + systems (ARM, RISC-V, etc). This improvement required to change the + way compilation on Linux worked. If you find any issue with this, + please report. + * Compile the C module with extra static analysis and be more strict. + * Some functions have unused parameters that we would like to preserve. + * Different types in different python subinterpreters are tricky under + Py_LIMITED_API < Python 3.10. We will delete the workarounds when + Python 3.10 be the minimal supported version. + * Delete some unused parameters thru all the source code. + * Be explicit and complete in the sentinel values. + * Be explicit initializing (missing) docstrings. + * Rewrite some function prototypes to avoid warning when being strict + and to avoid unneeded function castings. + + Functions METH_NOARGS require two parameters, although one of them + will be ignored. + * Be sure we don't wrap an unsigned int operation, bypassing an assertion. + * Update copyright to 2025. + * Oracle Berkeley DB>=5.3: Beside db.DB_VERSION_STRING we now have + db.DB_VERSION_FULL_STRING. + * Oracle Berkeley DB>=6.2: Beside db.DB_DBT_BLOB we now have + db.DB_DBT_EXT_FILE. + * Being able to test against an especific Oracle Berkeley DB release. + * Code cleanup: + + Remove unnecessary semicolons in Python code. + + Remove unused imports. + + Split multiple imports in a single line. + + Split multiple statements in multiple lines. + + Delete dead assignments. + + Delete ancient code for verbose and silent in test code. + I never used it, and it is maintenance load. + + Simplify some assertTrue() and assertFalse(). + + Imports directly from berkeleydb instead of test_all. + + Copyright and license texts should be in comments, not docstrings. + + Be more verbose and clear in the comparison test code. + + Use isinstance() for type comparison. + + Tight some tests. + + Change some ambiguous variables. + + Solve or silence ruff warnings. + + Delete legacy pychecker support. + + Delete legacy PyUnit GUI support. +- from versiom 18.1.12 + * WARNING - BREAKING CHANGE: berkeleydb._db is now berkeleydb.db. + 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. + The new name has been available for ages and the change is trivial... + * Solved DBEnv.memp_stat() crash when no database was opened yet. Triaged + and reported by Rishin Goswami. + * Added a new DBError subclass exception: DBNotSupportedError. + * Add tests for environment and database encryption. + * Document what you should know about your key when using database encryption. + Check the docs! + * Python 3.14 added to the full test matrix. + Experimental Python 3.14 support. Tested under 3.14.0a2. + * Export more error codes from Oracle Berkeley DB (which ones depends of what + Oracle Berkeley DB version you use): DB_FOREIGN_CONFLICT, DB_LOG_BUFFER_FULL, + DB_LOG_VERIFY_BAD, DB_REP_HANDLE_DEAD, DB_REP_LOCKOUT, DB_REP_UNAVAIL, + DB_REP_WOULDROLLBACK, DB_SLICE_CORRUPT, DB_VERSION_MISMATCH, DB_REP_INELECT, + DB_SYSTEM_MEM_MISSING. Some of those are not actually returned ever, but a + generic BerkeleyDB exception is raised. The error codes are available for + completion. + If you need some specific exception to be raised, let me know. + * We export more values from Oracle Berkeley DB (which ones depends of what + Oracle Berkeley DB version you use): + + DB_LOCK_GET_TIMEOUT, DB_LOCK_PUT_READ, DB_LOCK_TIMEOUT, DB_LOCK_TRADE. + + DB_EID_MASTER. + + DB_REP_WRITE_FORWARD_TIMEOUT. + + DB_EVENT_REP_AUTOTAKEOVER, DB_EVENT_REP_INQUEUE_FULL, DB_EVENT_REP_JOIN_FAILURE, + DB_EVENT_REP_WOULD_ROLLBACK, DB_EVENT_MUTEX_DIED, DB_EVENT_FAILCHK_PANIC. + + DB_REPMGR_ISELECTABLE, DB_REPMGR_ISPEER, DB_REPMGR_CONF_DISABLE_POLL, + DB_REPMGR_CONF_ENABLE_EPOLL, DB_REPMGR_CONF_FORWARD_WRITES, DB_REPMGR_CONF_PREFMAS_CLIENT, + DB_REPMGR_CONF_PREFMAS_MASTER, DB_REPMGR_NEED_RESPONSE. + + DB_MEM_DATABASE, DB_MEM_DATABASE_LENGTH, DB_MEM_EXTFILE_DATABASE, DB_MEM_REP_SITE. + + DB_LOG_EXT_FILE. + + DB_SET_MUTEX_FAILCHK_TIMEOUT. + + DB_SLICED. + + DB_VERB_BACKUP, DB_VERB_REPMGR_SSL_ALL, DB_VERB_REPMGR_SSL_CONN, + DB_VERB_REPMGR_SSL_IO, DB_VERB_SLICE. + + DB_XA_CREATE. + * Oracle Berkeley DB>=5.3: Beside db.DB_VERSION_STRING we now have db.DB_VERSION_FULL_STRING. + * Oracle Berkeley DB>=6.2: Beside db.DB_DBT_BLOB we now have db.DB_DBT_EXT_FILE. + * Being able to test against an especific Oracle Berkeley DB release. + * Code cleanup: + + Remove unnecessary semicolons in Python code. + + Remove unused imports. + + Split multiple imports in a single line. + + Split multiple statements in multiple lines. + + Delete dead assignments. + + Delete ancient code for verbose and silent in test code. + I never used it, and it is maintenance load. + + Simplify some assertTrue() and assertFalse(). + + Imports directly from berkeleydb instead of test_all. + + Copyright and license texts should be in comments, not docstrings. + + Be more verbose and clear in the comparison test code. + + Use isinstance() for type comparison. + + Tight some tests. + + Change some ambiguous variables. + + Solve or silence ruff warnings. + + Delete legacy pychecker support. + + Delete legacy PyUnit GUI support. +- Use Python 3.11 on SLE-15 by default + +------------------------------------------------------------------- +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..124e24c --- /dev/null +++ b/python-berkeleydb.spec @@ -0,0 +1,83 @@ +# +# spec file for package python-berkeleydb +# +# Copyright (c) 2025 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/ +# + + +%{?sle15_python_module_pythons} +Name: python-berkeleydb +Version: 18.1.13 +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} +sed -i '/\#\!\/usr\/bin\/env\ python/d' src/berkeleydb/dbshelve.py + +%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