Compare commits
2 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| b31313f477 | |||
| 9b633c6a33 |
BIN
apsw-3.46.1.0.tar.gz
LFS
BIN
apsw-3.46.1.0.tar.gz
LFS
Binary file not shown.
3
apsw-3.51.1.0.tar.gz
Normal file
3
apsw-3.51.1.0.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a3322d4f44b19693dc5e3d9b24339ecb2b5225e0ac8b00090b3c466d3c2e4dc6
|
||||||
|
size 1156262
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
From 0103ade603b321aa66e5bfc7a5a078219e888481 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roger Binns <rogerb@rogerbinns.com>
|
|
||||||
Date: Mon, 7 Oct 2024 07:13:54 -0700
|
|
||||||
Subject: [PATCH] Disable infinite recursion test in non-debug builds
|
|
||||||
|
|
||||||
You'll need a wide window to read this
|
|
||||||
|
|
||||||
This is the backtrace on Ubuntu 24.10 with Python 3.12.7 - it has occurred on versions too
|
|
||||||
|
|
||||||
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
|
|
||||||
#0 0x00007ffff7c6c804 in __printf_buffer (buf=buf@entry=0x7fffff7ff240, format=0x71cdf5 "%zd", ap=0x7fffff7ff290, mode_flags=6) at ./stdio-common/vfprintf-internal.c:600
|
|
||||||
#1 0x00007ffff7c8dc93 in __vsprintf_internal (string=string@entry=0x7fffff7ff430 "", maxlen=maxlen@entry=26, format=<optimised out>, args=args@entry=0x7fffff7ff290, mode_flags=mode_flags@entry=6) at ./libio/iovsprintf.c:62
|
|
||||||
#2 0x00007ffff7d4228f in ___sprintf_chk (s=s@entry=0x7fffff7ff430 "", flag=flag@entry=2, slen=slen@entry=26, format=<optimised out>) at ./debug/sprintf_chk.c:40
|
|
||||||
#3 0x00000000005abf85 in sprintf (__s=<optimised out>, __fmt=<optimised out>) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:30
|
|
||||||
#4 unicode_fromformat_arg (writer=0x7fffff7ff3f0, f=0x71cdf7 "d", vargs=0x7fffff7ff3d8) at ../Objects/unicodeobject.c:2740
|
|
||||||
#5 PyUnicode_FromFormatV (format=<optimised out>, vargs=vargs@entry=0x7fffff7ff4a8) at ../Objects/unicodeobject.c:2963
|
|
||||||
#6 0x00000000005b3c6f in PyUnicode_FromFormat (format=format@entry=0x71cdf5 "%zd") at ../Objects/unicodeobject.c:3011
|
|
||||||
#7 0x00000000005d7a3e in too_many_positional (co=<optimised out>, tstate=0xbae310 <_PyRuntime+458992>, given=2, defaults=<optimised out>, localsplus=0x7ffff7fb0cb0, qualname='APSW.testIssue425.<locals>.handler') at ../Python/ceval.c:1150
|
|
||||||
#8 initialize_locals (tstate=tstate@entry=0xbae310 <_PyRuntime+458992>, func=func@entry=0x7fffe9094ae0, localsplus=<optimised out>, args=<optimised out>, argcount=<optimised out>, kwnames=<optimised out>) at ../Python/ceval.c:1459
|
|
||||||
#9 0x00000000005d7642 in _PyEvalFramePushAndInit (tstate=0xbae310 <_PyRuntime+458992>, func=0x7fffe9094ae0, locals=<optimised out>, args=0x7fffff7ff708, argcount=<optimised out>, kwnames=0x0) at ../Python/ceval.c:1594
|
|
||||||
#10 _PyEval_Vector (tstate=0xbae310 <_PyRuntime+458992>, func=0x7fffe9094ae0, locals=<optimised out>, args=0x7fffff7ff708, argcount=2, kwnames=0x0) at ../Python/ceval.c:1677
|
|
||||||
#11 0x000000000054a2d5 in _PyObject_VectorcallTstate (tstate=0xbae310 <_PyRuntime+458992>, callable=<function at remote 0x7fffe9094ae0>, args=<optimised out>, nargsf=<optimised out>, kwnames=<optimised out>) at ../Include/internal/pycore_call.h:92
|
|
||||||
#12 PyObject_Vectorcall (callable=<function at remote 0x7fffe9094ae0>, args=<optimised out>, nargsf=<optimised out>, kwnames=<optimised out>) at ../Objects/call.c:325
|
|
||||||
#13 0x00007fffe96aa94c in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff7ff770 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:447
|
|
||||||
#14 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff7ff880) at sqlite3/sqlite3.c:32459
|
|
||||||
#15 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#16 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
#17 0x00007fffe96aaaf1 in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff7ffbc0 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:464
|
|
||||||
#18 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff7ffcd0) at sqlite3/sqlite3.c:32459
|
|
||||||
#19 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#20 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
#21 0x00007fffe96aaaf1 in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff800010 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:464
|
|
||||||
#22 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff800120) at sqlite3/sqlite3.c:32459
|
|
||||||
#23 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#24 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
#25 0x00007fffe96aaaf1 in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff800460 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:464
|
|
||||||
#26 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff800570) at sqlite3/sqlite3.c:32459
|
|
||||||
#27 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#28 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
#29 0x00007fffe96aaaf1 in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff8008b0 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:464
|
|
||||||
#30 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff8009c0) at sqlite3/sqlite3.c:32459
|
|
||||||
#31 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#32 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
#33 0x00007fffe96aaaf1 in apsw_logger (arg=0x7fffe9094ae0, errcode=1, message=0x7fffff800d00 "apsw_write_unraisable TypeError: APSW.testIssue425.<locals>.handler() takes 0 positional arguments but 2 were given") at src/apsw.c:464
|
|
||||||
#34 0x00007fffe945ece4 in renderLogMsg (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s", ap=0x7fffff800e10) at sqlite3/sqlite3.c:32459
|
|
||||||
#35 0x00007fffe945edfa in sqlite3_log (iErrCode=1, zFormat=0x7fffe96ce958 "apsw_write_unraisable %s: %s") at sqlite3/sqlite3.c:32470
|
|
||||||
#36 0x00007fffe95d903a in apsw_write_unraisable (hookobject=0x0) at src/util.c:174
|
|
||||||
|
|
||||||
These repeat because that is the point of the test until you get into the Python test code.
|
|
||||||
---
|
|
||||||
apsw/tests.py | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/apsw/tests.py b/apsw/tests.py
|
|
||||||
index a349533b..bfec8e9f 100644
|
|
||||||
--- a/apsw/tests.py
|
|
||||||
+++ b/apsw/tests.py
|
|
||||||
@@ -1188,6 +1188,14 @@ def testIssue376(self):
|
|
||||||
def testIssue425(self):
|
|
||||||
"Infinite recursion"
|
|
||||||
|
|
||||||
+ # When Python tries to output an error message after reaching
|
|
||||||
+ # the recursion limit it can segv which is nothing to do with
|
|
||||||
+ # the apsw code, and the Python code looks good to me. Debug
|
|
||||||
+ # Python builds don't have this problem. See the commit
|
|
||||||
+ # message for this change for backtrace etc.
|
|
||||||
+ if "d" not in getattr(sys, "abiflags", ""):
|
|
||||||
+ return
|
|
||||||
+
|
|
||||||
class VFSA(apsw.VFS):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
@@ -1,8 +1,170 @@
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Aug 19 11:54:17 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
Fri Dec 12 10:55:57 UTC 2025 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
- Add upstream patch disable-infinite-recursion-in-tests.patch
|
- update to 3.51.1.0:
|
||||||
gh#rogerbinns/apsw@0103ade60
|
* All objects that can be closed implement __bool__() which
|
||||||
|
returns True while open and False when closed - Connection,
|
||||||
|
Cursor, Backup, Blob, Session, ChangesetBuilder, Rebaser.
|
||||||
|
- update to 3.51.0.0:
|
||||||
|
* JSON can be used as though it is a native type of SQLite,
|
||||||
|
with automatic conversion of Python objects on writing and
|
||||||
|
reading. (example)
|
||||||
|
* Connection.convert_binding (and Cursor.convert_binding)
|
||||||
|
callback to allow conversion of bindings when executing SQL.
|
||||||
|
* Connection.convert_jsonb (and Cursor.convert_jsonb) callback
|
||||||
|
to allow conversion of JSONB when reading query results.
|
||||||
|
(JSONB is SQLite’s binary internal parsed format for quick
|
||||||
|
operations on JSON.)
|
||||||
|
* 3 functions for working directly with JSONB allowing direct
|
||||||
|
conversion between Python objects and JSONB, without having
|
||||||
|
to go through the intermediate JSON text format.
|
||||||
|
* Added apsw.ext.Function() for calling SQL functions directly
|
||||||
|
from Python.
|
||||||
|
* When using with (Connection context manager) you can set the
|
||||||
|
outer transaction mode to DEFERRED (default) / IMMEDIATE /
|
||||||
|
EXCLUSIVE. (APSW issue 578)
|
||||||
|
* Changeset.apply() now takes filter_change parameter for
|
||||||
|
allowing filtering on individual change level, taking
|
||||||
|
advantage of sqlite3changeset_apply_v3
|
||||||
|
* Updated Connection.status() to use 64 bit API, and
|
||||||
|
apsw.ext.ShowResourceUsage() to show TEMPBUF_SPILL. (pragma
|
||||||
|
cache_size controls the amount of temp/cache memory
|
||||||
|
available.)
|
||||||
|
* The percentile extension is enabled when enabling all
|
||||||
|
extensions, which is standard for pypi downloads. It enables
|
||||||
|
several percentile, median, and related SQL functions.
|
||||||
|
* The carray extension is enabled when enabling all extensions,
|
||||||
|
which is standard for pypi downloads. apsw.carray() allows
|
||||||
|
binding bulk numbers, strings, and blobs to a query. See the
|
||||||
|
example.
|
||||||
|
* SQLITE_SCM_ constants (BRANCH, TAGS, DATETIME) are available
|
||||||
|
on the module if built with the amalgamation.
|
||||||
|
* apsw.ext.generate_series_sqlite() updated to exactly match
|
||||||
|
SQLite’s behaviour. apsw.ext.generate_series() is recommended
|
||||||
|
as it matches other databases.
|
||||||
|
* Updated apsw.unicode to support Unicode 17.0 which adds 4,803
|
||||||
|
new codepoints, and updated line breaking, along with other
|
||||||
|
small tweaks.
|
||||||
|
* The Geopoly extension (GeoJSON access to RTree) is enabled
|
||||||
|
when --enable-all-extensions is used with setup.py. This
|
||||||
|
includes pypi builds.
|
||||||
|
* This is the final release supporting Python 3.9.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 5 08:38:22 UTC 2025 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
||||||
|
|
||||||
|
- Update to 3.50.4.0
|
||||||
|
* PyPI binary builds are available for:
|
||||||
|
* Python 3.14
|
||||||
|
* Windows ARM
|
||||||
|
* Python 3.14 `free threaded`__ (no GIL). The GIL will be
|
||||||
|
enabled when APSW is loaded. APSW will be free threaded
|
||||||
|
in the future (#568)
|
||||||
|
- from version 3.50.3.0
|
||||||
|
* preupdate_hook` is available. The `commit` and `rollback`
|
||||||
|
hooks let you provide multiple callbacks, multiplex by APSW.
|
||||||
|
`apsw.ext.Trace` can now show updates, and transaction begin,
|
||||||
|
commit, and rollback.
|
||||||
|
- from version 3.50.2.0
|
||||||
|
* PyPi builds now use `cibuildwheel version 3` which advances
|
||||||
|
the minimum supported Linux distribution. It is configured
|
||||||
|
to continue building both 32 and 64 bit binaries.
|
||||||
|
- from version 3.50.1.0
|
||||||
|
* No user visible changes.
|
||||||
|
- from version 3.50.0.0
|
||||||
|
* Full support for the `session`
|
||||||
|
* Added `Connection.setlk_timeout`, `apsw.mapping_setlk_timeout_flags`,
|
||||||
|
and enabled the timeout for amalgamation builds such as PyPI.
|
||||||
|
* Shell `open command <shell-cmd-open>` allows specifying flags to
|
||||||
|
open a connection, and `connection command <shell-cmd-connection>`
|
||||||
|
shows flags used for each open. (#557)
|
||||||
|
* Type stubs updated to `collections.abc.Buffer` (Python 3.12+)
|
||||||
|
wherever some bytes are taken. `Buffers `__ have always been used,
|
||||||
|
but Python 3.12 added typing.
|
||||||
|
- from version 3.49.2.0
|
||||||
|
* Shell dump command handles generated columns correctly. (#556)
|
||||||
|
- from version 3.49.1.0
|
||||||
|
* No APSW changes.
|
||||||
|
- from version 3.49.0.0
|
||||||
|
* `Connection.set_progress_handler` allows multiple callbacks
|
||||||
|
(multiplexed by APSW).
|
||||||
|
* Added `apsw.ext.query_limit` to limit total row count and execution
|
||||||
|
time within a block. (#520)
|
||||||
|
* `Connection.config` updated with new DBCONFIG options
|
||||||
|
* Adjustments for SQLite's new build process.
|
||||||
|
- from version 3.48.0.0
|
||||||
|
* You can `pass any Python objects <pyobject>` into SQLite, and
|
||||||
|
return them when used as runtime values such as functions. SQLite's
|
||||||
|
`pointer passing interface` is used behind the scenes. (#521)
|
||||||
|
* `Source releases <sources>` are also available in tar format (#548),
|
||||||
|
and have updated source release signing `instructions <verifydownload>`.
|
||||||
|
(#549)
|
||||||
|
* `Shared cache` (2006) is omitted when APSW includes the amalgamation
|
||||||
|
like PyPI builds. This is `recommended by SQLite `, has been `discouraged
|
||||||
|
for a long time`. `apsw.enable_shared_cache` will raise an exception
|
||||||
|
if called and the shared cache has been omitted. You can see what options
|
||||||
|
are in effect in `apsw.compile_options`. If you were using it for
|
||||||
|
shared memory databases then `use the memdb VFS <memdb>`.
|
||||||
|
- from version 3.47.2.0
|
||||||
|
* Added `apsw.ext.page_usage_to_svg` which shows database usage as
|
||||||
|
SVG. Available as shell `.pages-svg command <shell-cmd-pages-svg>`.
|
||||||
|
- from version 3.47.1.0
|
||||||
|
* Documentation on how to `build for packagers <packagers>` such as
|
||||||
|
those maintaining Linux and BSD distributions.
|
||||||
|
* Documentation on how to `build for pyodide>`, the Python WASM
|
||||||
|
implementation that runs in the browser and NPM. PyPI does not
|
||||||
|
accept pyodide packages yet.
|
||||||
|
* A command line tool ``apsw`` is defined which invokes the `shell
|
||||||
|
<shell>`. This also allows using `uvx apsw` without having to
|
||||||
|
explicitly install APSW.
|
||||||
|
* Added `apsw.ext.analyze_pages` which uses `dbstat` to provide useful
|
||||||
|
information about the pages making up the database, and fragmentation.
|
||||||
|
The shell `.pages command <shell-cmd-pages>` shows it in a pretty form.
|
||||||
|
- from version 3.47.0.0
|
||||||
|
* Support for Python 3.8 removed (#539).
|
||||||
|
* The readonly database statistics virtual table (`dbstat`) is enabled
|
||||||
|
by default for PyPI builds, and when ``--enable-all-extensions`` is
|
||||||
|
passed to manual `builds <build>`.
|
||||||
|
* Added `recursive triggers <apsw.bestpractice.connection_recursive_triggers>`
|
||||||
|
and `optimize <apsw.bestpractice.connection_optimize>` to `apsw.bestpractice`.
|
||||||
|
* Multiple callbacks can be present for `Connection.trace_v2` with APSW ensuring
|
||||||
|
they are all called (#502)
|
||||||
|
* `Connection.trace_v2` callback information now has ``trigger``, ``id``,
|
||||||
|
and ``total_changes`` fields.
|
||||||
|
* Added `Connection.data_version` for getting a change counter. `pragma
|
||||||
|
data_version` doesn't update when changes are made on the same connection,
|
||||||
|
only others.
|
||||||
|
* Added `apsw.ext.ShowResourceUsage` for getting resource and SQLite usage
|
||||||
|
in a context block, and also use it for the shell `timer <shell-cmd-timer>`
|
||||||
|
command.
|
||||||
|
* Added `apsw.ext.Trace` for tracing SQL execution, row and change
|
||||||
|
counting, and timing per statement for use in a context block.
|
||||||
|
* Added `FTS5 support <textsearch>` including registering and
|
||||||
|
calling tokenizers, and auxiliary functions. The `apsw.fts5`
|
||||||
|
module provides many additional classes and methods for working with
|
||||||
|
FTS5, including tokenizers for HTML, JSON, regular expressions,
|
||||||
|
support tokenizers for synonyms, stop words, transformers, and a
|
||||||
|
`~apsw.fts5.Table` class that wraps access to a FTS5 table
|
||||||
|
(including `creating one <apsw.fts5.Table.create>`) with
|
||||||
|
`~apsw.fts5.Table.search`, `~apsw.fts5.Table.more_like`,
|
||||||
|
and `~apsw.fts5.Table.query_suggest`. `apsw.fts5query` can
|
||||||
|
parse, modify, and reconstruct queries. The shell gets a `ftsq
|
||||||
|
<shell-cmd-ftsq>` command for issuing queries.
|
||||||
|
* Added `apsw.unicode` which implements Unicode algorithms for
|
||||||
|
determining codepoint groups making up a user perceived character,
|
||||||
|
word and sentence splitting, and where line breaks can be made. These
|
||||||
|
are used to make provided FTS5 tokenizers and auxiliary functions
|
||||||
|
fully Unicode aware. There are many additional methods such as
|
||||||
|
getting categories, stripping diacritics, case folding, width when
|
||||||
|
output to a terminal, text wrapping, and more.
|
||||||
|
* `apsw.ext.format_query_table` uses `apsw.unicode` to get widths and
|
||||||
|
line breaks more accurate. As a side effect it loses the `word_wrap`
|
||||||
|
parameter (breaking change).
|
||||||
|
- Add support for both update-alternatives and libalternatives
|
||||||
|
- Include apsw binary in %files section
|
||||||
|
- Remove shebang from all Python sources
|
||||||
|
- Switch upstream source back to PyPi
|
||||||
|
- Update BuildRequires from pyproject.toml
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Sep 28 19:15:48 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
Sat Sep 28 19:15:48 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-apsw
|
# spec file for package python-apsw
|
||||||
#
|
#
|
||||||
# Copyright (c) 2024 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC and contributors
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -16,18 +16,22 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%if 0%{?suse_version} > 1500
|
||||||
|
%bcond_without libalternatives
|
||||||
|
%else
|
||||||
|
%bcond_with libalternatives
|
||||||
|
%endif
|
||||||
|
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-apsw
|
Name: python-apsw
|
||||||
Version: 3.46.1.0
|
Version: 3.51.1.0
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Another Python SQLite Wrapper
|
Summary: Another Python SQLite Wrapper
|
||||||
License: Zlib
|
License: Zlib
|
||||||
Group: Development/Libraries/Python
|
Group: Development/Libraries/Python
|
||||||
URL: https://github.com/rogerbinns/apsw/
|
URL: https://github.com/rogerbinns/apsw/
|
||||||
Source: https://github.com/rogerbinns/apsw/archive/refs/tags/%{version}.tar.gz#/apsw-%{version}.tar.gz
|
Source: https://files.pythonhosted.org/packages/source/a/apsw/apsw-%{version}.tar.gz
|
||||||
# PATCH-FIX-UPSTREAM disable-infinite-recursion-in-tests.patch -- gh#rogerbinns/apsw@0103ade60
|
BuildRequires: %{python_module devel >= 3.9}
|
||||||
Patch0: disable-infinite-recursion-in-tests.patch
|
|
||||||
BuildRequires: %{python_module devel >= 3.8}
|
|
||||||
BuildRequires: %{python_module pip}
|
BuildRequires: %{python_module pip}
|
||||||
BuildRequires: %{python_module setuptools}
|
BuildRequires: %{python_module setuptools}
|
||||||
BuildRequires: %{python_module wheel}
|
BuildRequires: %{python_module wheel}
|
||||||
@@ -35,6 +39,13 @@ BuildRequires: fdupes
|
|||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
BuildRequires: pkgconfig(sqlite3) >= 3.44
|
BuildRequires: pkgconfig(sqlite3) >= 3.44
|
||||||
|
%if %{with libalternatives}
|
||||||
|
Requires: alts
|
||||||
|
BuildRequires: alts
|
||||||
|
%else
|
||||||
|
Requires(post): update-alternatives
|
||||||
|
Requires(postun): update-alternatives
|
||||||
|
%endif
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@@ -45,6 +56,8 @@ complete SQLite API into Python.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n apsw-%{version}
|
%autosetup -p1 -n apsw-%{version}
|
||||||
|
# Remove shebang from all Python sources
|
||||||
|
find . -name "*.py" -exec sed -i "/#\!\/usr\/bin\/env python3/d" {} \;
|
||||||
|
|
||||||
# See the discussion on gh#rogerbinns/apsw#462
|
# See the discussion on gh#rogerbinns/apsw#462
|
||||||
cat << EOF >setup.apsw
|
cat << EOF >setup.apsw
|
||||||
@@ -60,6 +73,7 @@ export CFLAGS="%{optflags} -fno-strict-aliasing"
|
|||||||
%install
|
%install
|
||||||
%pyproject_install
|
%pyproject_install
|
||||||
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
||||||
|
%python_clone -a %{buildroot}%{_bindir}/apsw
|
||||||
|
|
||||||
%check
|
%check
|
||||||
# gh#rogerbinns/apsw#462
|
# gh#rogerbinns/apsw#462
|
||||||
@@ -68,9 +82,19 @@ export CFLAGS="%{optflags} -fno-strict-aliasing"
|
|||||||
$python -m apsw.tests -v
|
$python -m apsw.tests -v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%pre
|
||||||
|
%python_libalternatives_reset_alternative apsw
|
||||||
|
|
||||||
|
%post
|
||||||
|
%python_install_alternative apsw
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%python_uninstall_alternative apsw
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
%doc README.rst
|
%doc README.rst
|
||||||
|
%python_alternative %{_bindir}/apsw
|
||||||
%{python_sitearch}/apsw
|
%{python_sitearch}/apsw
|
||||||
%{python_sitearch}/apsw-%{version}*-info
|
%{python_sitearch}/apsw-%{version}*-info
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user