Subject: [bug#57587] [PATCH v3] gnu: python-apsw: Update to 3.39.2.1.

From: Hilton Chain <[email-masked]>
Date: Tue, 06 Sep 2022 20:59:08 +0800

From 95fd5f63cbab6890f7280374f9278fd9811513a3 Mon Sep 17 00:00:00 2001
From: Hilton Chain <[email-masked]>
Date: Tue, 6 Sep 2022 20:30:45 +0800

* gnu/packages/databases.scm (python-apsw): Update to 3.39.2.1.
[source]: Change back to compressed release.
* gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch: New file.
* gnu/local.mk: Add patch.
---
Oops! Previous mail has a bad format, resend. \>_</
v2 -> v3: Calibre compiles now.

 gnu/local.mk                                  |  1 +
 gnu/packages/databases.scm                    | 18 ++++++++-----
 .../python-apsw-3.39.2.1-test-fix.patch       | 27 +++++++++++++++++++
 3 files changed, 39 insertions(+), 7 deletions(-)
 create mode 100644 gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index e454189b8b..19102113c9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1694,6 +1694,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-3-fix-tests.patch			\
   %D%/packages/patches/python-3-hurd-configure.patch		\
   %D%/packages/patches/python-3-no-static-lib.patch		\
+  %D%/packages/patches/python-apsw-3.39.2.1-test-fix.patch	\
   %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch	\
   %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch	\
   %D%/packages/patches/python-cross-compile.patch		\
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 7edf0fed2d..9540b61920 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -3568,18 +3568,22 @@ (define-public python-pickleshare
 (define-public python-apsw
   (package
     (name "python-apsw")
-    (version "3.39.2.0")
+    (version "3.39.2.1")
+    ;; The compressed release has fetching functionality disabled.
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/rogerbinns/apsw")
-             (commit version)))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/rogerbinns/apsw/releases/download/"
+             version "/apsw-" version ".zip"))
        (sha256
         (base32
-         "0q7fnk8n3m5mpjzh6xyhj409k8sacdbjsfis98my9c50fdn5sr7y"))))
+         "06x3qgg71xz8l3kz8gz04wkfp5f6zfrg476a4mm1c5hikqyw6ykj"))
+       ;; Cherry-picked from upstream, remove when bumping to 3.39.3.
+       (patches
+        (search-patches "python-apsw-3.39.2.1-test-fix.patch"))))
     (build-system python-build-system)
+    (native-inputs (list unzip))
     (inputs (list sqlite-next))         ;SQLite 3.39 required.
     (arguments
      (list #:phases
diff --git a/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch b/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
new file mode 100644
index 0000000000..cc233e3ccd
--- /dev/null
+++ b/gnu/packages/patches/python-apsw-3.39.2.1-test-fix.patch
@@ -0,0 +1,27 @@
+From 1111f902075169bd0d96cdd10607ef8499f0fed5 Mon Sep 17 00:00:00 2001
+From: Roger Binns <[email-masked]>
+Date: Mon, 5 Sep 2022 07:12:25 -0700
+Subject: [PATCH] Deal with mismatched SQLITE_ENABLE_COLUMN_METADATA
+
+Address #363
+---
+ apsw/tests.py   | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletion(-)
+
+diff --git a/apsw/tests.py b/apsw/tests.py
+index b4a94d3..256ead0 100644
+--- a/apsw/tests.py
++++ b/apsw/tests.py
+@@ -772,8 +772,8 @@ class APSW(unittest.TestCase):
+         c.execute("drop table foo; create table foo (%s)" % (", ".join(["[%s] %s" % (n, t) for n, t in cols]), ))
+         c.execute("insert into foo([x a space]) values(1)")
+         c.execute("create temp table two(fred banana); insert into two values(7); create temp view three as select fred as [a space] from two")
+-        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options)
++        has_full=any(o=="ENABLE_COLUMN_METADATA" or o.startswith("ENABLE_COLUMN_METADATA=") for o in apsw.compile_options) if apsw.using_amalgamation else hasattr(c, "description_full")
+         for row in c.execute("select * from foo"):
+             self.assertEqual(cols, c.getdescription())
+             self.assertEqual(has_full, hasattr(c, "description_full"))
+
+base-commit: f628374c5857d940067ef26c9ea4e85a08a94f76
+--
+2.37.2

base-commit: 7ae51b741a6b73d3b2730389ed5291e00d7e5c0a
--
2.37.2