git: b27d920aecff - main - deskutils/calibre: Fix at runtime after commit 47912ce2e613 (sqlite3)
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 01 Mar 2023 12:37:49 UTC
The branch main has been updated by madpilot:
URL: https://cgit.FreeBSD.org/ports/commit/?id=b27d920aecff0eccd07de8feab1f5ee7d2c12621
commit b27d920aecff0eccd07de8feab1f5ee7d2c12621
Author: Guido Falsi <madpilot@FreeBSD.org>
AuthorDate: 2023-03-01 12:33:37 +0000
Commit: Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2023-03-01 12:33:37 +0000
deskutils/calibre: Fix at runtime after commit 47912ce2e613 (sqlite3)
In commit 47912ce2e613 to sqlite3 the default has been changed for the DQS option.
Thius causes calibre to fail to open its database, reporting it as corrupted:
Traceback (most recent call last):
File "/usr/local/lib/calibre/calibre/gui2/main.py", line 331, in initialize_db
db = LibraryDatabase(self.library_path)
File "/usr/local/lib/calibre/calibre/db/legacy.py", line 195, in __init__
backend = self.backend = create_backend(library_path, default_prefs=default_prefs,
File "/usr/local/lib/calibre/calibre/db/legacy.py", line 50, in create_backend
return DB(library_path, default_prefs=default_prefs,
File "/usr/local/lib/calibre/calibre/db/backend.py", line 501, in __init__
self.initialize_custom_columns()
File "/usr/local/lib/calibre/calibre/db/backend.py", line 698, in initialize_custom_columns
custom_tables = self.custom_tables
File "/usr/local/lib/calibre/calibre/db/backend.py", line 1387, in custom_tables
return {x[0] for x in self.conn.get(
File "/usr/local/lib/calibre/calibre/db/backend.py", line 370, in get
ans = self.cursor().execute(*args)
File "src/cursor.c", line 992, in APSWCursor_execute.sqlite3_prepare
apsw.SQLError: SQLError: no such column: table
This patch fixes the use of double quotes in the code accessing the library database at runtime.
Submitted upstream: https://github.com/kovidgoyal/calibre/pull/1830
---
deskutils/calibre/Makefile | 1 +
.../calibre/files/patch-src_calibre_db_backend.py | 13 +++++++++++++
.../files/patch-src_calibre_db_schema__upgrades.py | 20 ++++++++++++++++++++
3 files changed, 34 insertions(+)
diff --git a/deskutils/calibre/Makefile b/deskutils/calibre/Makefile
index f567078eb1e7..b9372d066444 100644
--- a/deskutils/calibre/Makefile
+++ b/deskutils/calibre/Makefile
@@ -1,5 +1,6 @@
PORTNAME= calibre
PORTVERSION= 6.13.0
+PORTREVISION= 1
CATEGORIES= deskutils python
MASTER_SITES= http://download.calibre-ebook.com/${PORTVERSION}/ \
https://curl.haxx.se/ca/:cacert
diff --git a/deskutils/calibre/files/patch-src_calibre_db_backend.py b/deskutils/calibre/files/patch-src_calibre_db_backend.py
new file mode 100644
index 000000000000..28408c27cef0
--- /dev/null
+++ b/deskutils/calibre/files/patch-src_calibre_db_backend.py
@@ -0,0 +1,13 @@
+--- src/calibre/db/backend.py.orig 2023-02-17 02:32:09 UTC
++++ src/calibre/db/backend.py
+@@ -1385,8 +1385,8 @@ class DB:
+ @property
+ def custom_tables(self):
+ return {x[0] for x in self.conn.get(
+- 'SELECT name FROM sqlite_master WHERE type="table" AND '
+- '(name GLOB "custom_column_*" OR name GLOB "books_custom_column_*")')}
++ 'SELECT name FROM sqlite_master WHERE type=\'table\' AND '
++ '(name GLOB \'custom_column_*\' OR name GLOB \'books_custom_column_*\')')}
+
+ @classmethod
+ def exists_at(cls, path):
diff --git a/deskutils/calibre/files/patch-src_calibre_db_schema__upgrades.py b/deskutils/calibre/files/patch-src_calibre_db_schema__upgrades.py
new file mode 100644
index 000000000000..12bf4aa855b4
--- /dev/null
+++ b/deskutils/calibre/files/patch-src_calibre_db_schema__upgrades.py
@@ -0,0 +1,20 @@
+--- src/calibre/db/schema_upgrades.py.orig 2023-02-17 02:32:09 UTC
++++ src/calibre/db/schema_upgrades.py
+@@ -300,7 +300,7 @@ class SchemaUpgrade:
+ for field in itervalues(self.field_metadata):
+ if field['is_category'] and not field['is_custom'] and 'link_column' in field:
+ table = self.db.get(
+- 'SELECT name FROM sqlite_master WHERE type="table" AND name=?',
++ 'SELECT name FROM sqlite_master WHERE type=\'table\' AND name=?',
+ ('books_%s_link'%field['table'],), all=False)
+ if table is not None:
+ create_tag_browser_view(field['table'], field['link_column'], field['column'])
+@@ -376,7 +376,7 @@ class SchemaUpgrade:
+ for field in itervalues(self.field_metadata):
+ if field['is_category'] and not field['is_custom'] and 'link_column' in field:
+ table = self.db.get(
+- 'SELECT name FROM sqlite_master WHERE type="table" AND name=?',
++ 'SELECT name FROM sqlite_master WHERE type=\'table\' AND name=?',
+ ('books_%s_link'%field['table'],), all=False)
+ if table is not None:
+ create_std_tag_browser_view(field['table'], field['link_column'],