Compare commits
1 Commits
Author | SHA256 | Date | |
---|---|---|---|
76ad7467c8 |
BIN
apsw-3.42.0.1.tar.gz
(Stored with Git LFS)
BIN
apsw-3.42.0.1.tar.gz
(Stored with Git LFS)
Binary file not shown.
BIN
apsw-3.46.1.0.tar.gz
(Stored with Git LFS)
Normal file
BIN
apsw-3.46.1.0.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
72
disable-infinite-recursion-in-tests.patch
Normal file
72
disable-infinite-recursion-in-tests.patch
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
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,3 +1,137 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 19 11:54:17 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Add upstream patch disable-infinite-recursion-in-tests.patch
|
||||||
|
gh#rogerbinns/apsw@0103ade60
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Sep 28 19:15:48 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.46.1.0:
|
||||||
|
* The shell dump command outputs the application_id in addition
|
||||||
|
to the user_version.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Jun 30 21:32:30 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.46.0.1:
|
||||||
|
* :func:`apsw.ext.query_info` provides the count and names of
|
||||||
|
bindings parameters. (:issue:`528`)
|
||||||
|
* Address how errors are handled in VFS xRandomness routine,
|
||||||
|
that is only called once by SQLite to seed its random number
|
||||||
|
generator. (:issue:`526`)
|
||||||
|
* Added :meth:`Connection.vfsname` and updated corresponding
|
||||||
|
shell command to get the diagnostic names of the vfs stack
|
||||||
|
for the connection. (:issue:`525`)
|
||||||
|
* Do not cache :meth:`Connection.pragma` statements to avoid
|
||||||
|
encryption keys, or pragmas that run during prepare from
|
||||||
|
being retained. (:issue:`522`)
|
||||||
|
* :meth:`Connection.pragma` adds keyword schema argument to run
|
||||||
|
pragma against attached databases. (:issue:`524`)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 6 08:35:40 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.46.0.0:
|
||||||
|
* Adjusted levels in :func:`apsw.ext.log_sqlite` to be lower
|
||||||
|
for some SQLite messages like SQLITE_SCHEMA and
|
||||||
|
SQLITE_NOTICE_RECOVER_WAL (:issue:`518`)
|
||||||
|
* Previous source releases were signed with PGP. Starting with
|
||||||
|
this release Sigstore's cosign tool is used
|
||||||
|
(:ref:`instructions <verifydownload>`). (:issue:`512`)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Apr 20 14:09:15 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.45.3.0:
|
||||||
|
* No APSW changes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 18 10:27:56 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.45.2.0:
|
||||||
|
* Minor doc and tests change due to changed behaviour of
|
||||||
|
sqlite3_serialize on an empty database, used by
|
||||||
|
:meth:`Connection.serialize`.
|
||||||
|
* No APSW changes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Jan 20 12:28:34 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.45.0.0:
|
||||||
|
* Correctly handle NULL/None VFS filenames (:issue:`506`)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 3 09:42:09 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- require setuptools
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Dec 2 20:18:36 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.44.2.0:
|
||||||
|
* Added `logger` parameter to :func:`apsw.ext.log_sqlite` to
|
||||||
|
use a specific :class:`logging.Logger` (:issue:`493`)
|
||||||
|
* Added :func:`apsw.ext.result_string` to turn an result code
|
||||||
|
into a string, taking into account if it is extended or not.
|
||||||
|
* Provide detail when C implemented objects are printed. For
|
||||||
|
example :class:`connections <Connection>` include the filename.
|
||||||
|
* Added :meth:`URIFilename.parameters` (:issue:`496`)
|
||||||
|
* :class:`URIFilename` are only valid for the duration of the
|
||||||
|
:meth:`VFS.xOpen` call. If you save and use the object later
|
||||||
|
you will get an exception. (:issue:`501`)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Nov 14 15:52:45 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
|
- update to 3.44.0.0:
|
||||||
|
* Added virtual table :meth:`VTTable.Integrity` support.
|
||||||
|
* On 64 bit platforms with the amalgamation,
|
||||||
|
`SQLITE_MAX_MMAP_SIZE SQLite's default limit is 2GB.
|
||||||
|
* :meth:`Connection.create_aggregate_function` can take a class
|
||||||
|
with step and final methods. (:issue:`421`)
|
||||||
|
* Corrected non :pep:`8` :ref:`compliant names <renaming>`.
|
||||||
|
The old names remain as aliases to the new ones, and your
|
||||||
|
code will not break.
|
||||||
|
* :doc:`Exception <exceptions>` handling has been updated, with
|
||||||
|
multiple exceptions in the same SQLite control flow being
|
||||||
|
chained together.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 6 06:51:24 UTC 2023 - ecsos <ecsos@opensuse.org>
|
||||||
|
|
||||||
|
- Update to 3.43.1.0
|
||||||
|
- All C code calling into Python and all C code called by Python
|
||||||
|
uses vectorcall / fastcall (see PEP 590) which reduces the
|
||||||
|
overhead of passing and receiving positional and keyword
|
||||||
|
arguments. (APSW issue 477 APSW issue 446):
|
||||||
|
* Conversion of arguments from Python values to C values drops
|
||||||
|
generic PyArg_ParseTupleAndKeywords in favour of direct
|
||||||
|
processing which is more efficient and allows better
|
||||||
|
exception messages.
|
||||||
|
* Running speedtest with a VFS that inherits all methods went
|
||||||
|
from being 17% slower than pure SQLite to 2% slower.
|
||||||
|
* A virtual table benchmark takes 35% less time. (Remember that
|
||||||
|
benchmarks are best case!)
|
||||||
|
- The shell JSON output modes have been fixed. Mode 'json'
|
||||||
|
outputs a json array, while mode 'jsonl' does newline delimited
|
||||||
|
json objects, aka json lines. (APSW issue 483)
|
||||||
|
- Changes from 3.43.1.0
|
||||||
|
- This is the last version that supports Python 3.6 and
|
||||||
|
Python 3.7 (both end of life). The policy as stated in the
|
||||||
|
about page is that there will be one more APSW release after
|
||||||
|
a Python version goes end of life supporting that Python
|
||||||
|
version. (APSW issue 471)
|
||||||
|
- Added best practice module (APSW issue 460)
|
||||||
|
- apsw.ext.log_sqlite() outputs SQLite warnings at warning level.
|
||||||
|
(APSW issue 472)
|
||||||
|
- sqlite3_stmt_explain is wrapped available as a explain keyword
|
||||||
|
parameter on execute/executemany methods. (APSW issue 474)
|
||||||
|
- Added documentation and helper class for implementing custom
|
||||||
|
pragmas in your own Virtual File System (VFS) (APSW issue 464)
|
||||||
|
- Reduced overhead of the Column method when using
|
||||||
|
apsw.ext.make_virtual_module() (APSW issue 465)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 26 14:57:47 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
Wed Jul 26 14:57:47 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
@@ -169,7 +303,7 @@ Mon Jan 17 20:40:34 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
|||||||
|
|
||||||
- update to 3.37.0-r1:
|
- update to 3.37.0-r1:
|
||||||
* Allow breaking of reference cycles between objects that contain a
|
* Allow breaking of reference cycles between objects that contain a
|
||||||
Connection or Cursor
|
Connection or Cursor
|
||||||
* Fixed custom VFS extension loading failure could leave the error message
|
* Fixed custom VFS extension loading failure could leave the error message
|
||||||
unterminated
|
unterminated
|
||||||
* Updated size of mutex array used by the fork checker
|
* Updated size of mutex array used by the fork checker
|
||||||
@@ -190,7 +324,7 @@ Fri Jun 25 06:20:00 UTC 2021 - ecsos <ecsos@opensuse.org>
|
|||||||
it by default with –enable-all-extensions.
|
it by default with –enable-all-extensions.
|
||||||
- Use the newer buffer API for Python 3
|
- Use the newer buffer API for Python 3
|
||||||
(old API removed in Python 3.10).
|
(old API removed in Python 3.10).
|
||||||
- Fix loadable extensions are missing,
|
- Fix loadable extensions are missing,
|
||||||
so insert --enable-all-extensions and --enable=load_extension.
|
so insert --enable-all-extensions and --enable=load_extension.
|
||||||
See: https://rogerbinns.github.io/apsw/build.html#building
|
See: https://rogerbinns.github.io/apsw/build.html#building
|
||||||
|
|
||||||
@@ -200,7 +334,7 @@ Tue Dec 29 13:46:03 UTC 2020 - Dirk Müller <dmueller@suse.com>
|
|||||||
- udpate to 3.34.0-r1:
|
- udpate to 3.34.0-r1:
|
||||||
* Windows MSI installer files are now provided
|
* Windows MSI installer files are now provided
|
||||||
* Added Connection.txn_state()
|
* Added Connection.txn_state()
|
||||||
* Added constants: SQLITE_IOERR_CORRUPTFS
|
* Added constants: SQLITE_IOERR_CORRUPTFS
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Sep 22 11:54:56 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
Tue Sep 22 11:54:56 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python-apsw
|
# spec file for package python-apsw
|
||||||
#
|
#
|
||||||
# Copyright (c) 2023 SUSE LLC
|
# Copyright (c) 2024 SUSE LLC
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@@ -18,20 +18,23 @@
|
|||||||
|
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-apsw
|
Name: python-apsw
|
||||||
Version: 3.42.0.1
|
Version: 3.46.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://github.com/rogerbinns/apsw/archive/refs/tags/%{version}.tar.gz#/apsw-%{version}.tar.gz
|
||||||
BuildRequires: %{python_module devel}
|
# PATCH-FIX-UPSTREAM disable-infinite-recursion-in-tests.patch -- gh#rogerbinns/apsw@0103ade60
|
||||||
|
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 wheel}
|
BuildRequires: %{python_module wheel}
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
BuildRequires: pkgconfig(sqlite3) >= 3.42
|
BuildRequires: pkgconfig(sqlite3) >= 3.44
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
%description
|
%description
|
||||||
|
Reference in New Issue
Block a user