Diff of the two buildlogs: -- --- b1/build.log 2025-02-23 15:54:51.036363331 +0000 +++ b2/build.log 2025-02-23 16:10:49.204945310 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Mar 28 10:10:54 -12 2026 -I: pbuilder-time-stamp: 1774735854 +I: Current time: Mon Feb 24 05:54:54 +14 2025 +I: pbuilder-time-stamp: 1740326094 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration @@ -101,52 +101,84 @@ dpkg-source: info: applying pykakasi/0078-Revert-Fix-a-regression-that-caused-incorrect-Englis.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/3280495/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/D01_modify_environment starting +debug: Running on codethink04-arm64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Feb 23 15:55 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.2.37(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 ' - DISTRIBUTION='unstable' - HOME='/root' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION=unstable + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - INVOCATION_ID='8875ea4843e44a9bb6d40387aeee2cc3' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='3280495' - PS1='# ' - PS2='> ' + INVOCATION_ID=d77b56b0b8c140a4a0357d7a653814a2 + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2299993 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.BiRH25YT/pbuilderrc_UIJW --distribution unstable --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.BiRH25YT/b1 --logfile b1/build.log calibre_7.26.0+ds-3.dsc' - SUDO_GID='109' - SUDO_UID='104' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.4:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.BiRH25YT/pbuilderrc_aNxl --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.BiRH25YT/b2 --logfile b2/build.log calibre_7.26.0+ds-3.dsc' + SUDO_GID=109 + SUDO_UID=104 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://192.168.101.4:3128 I: uname -a - Linux codethink03-arm64 6.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-31-cloud-arm64 #1 SMP Debian 6.1.128-1 (2025-02-07) aarch64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Nov 22 2024 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/3280495/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -937,7 +969,7 @@ Get: 586 http://deb.debian.org/debian unstable/main arm64 qt6-wayland arm64 6.7.2-5 [137 kB] Get: 587 http://deb.debian.org/debian unstable/main arm64 webp arm64 1.5.0-0.1 [196 kB] Get: 588 http://deb.debian.org/debian unstable/main arm64 xdg-utils all 1.2.1-2 [75.8 kB] -Fetched 389 MB in 3s (154 MB/s) +Fetched 389 MB in 3s (140 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:arm64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19889 files and directories currently installed.) @@ -2809,8 +2841,8 @@ Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' -Local time is now: Sat Mar 28 22:12:08 UTC 2026. -Universal Time is now: Sat Mar 28 22:12:08 UTC 2026. +Local time is now: Sun Feb 23 15:57:34 UTC 2025. +Universal Time is now: Sun Feb 23 15:57:34 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libcap2-bin (1:2.73-4) ... @@ -3331,7 +3363,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/calibre-7.26.0+ds/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../calibre_7.26.0+ds-3_source.changes +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for unstable +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/calibre-7.26.0+ds/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../calibre_7.26.0+ds-3_source.changes dpkg-buildpackage: info: source package calibre dpkg-buildpackage: info: source version 7.26.0+ds-3 dpkg-buildpackage: info: source distribution unstable @@ -3404,41 +3440,38 @@ gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/lzxc.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/lzxc.o -gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/lzc.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/lzc.o - gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/lzxmodule.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/lzxmodule.o gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/compressor.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/compressor.o gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/lzxd.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/lzxd.o +gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/lzx/lzc.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/lzx/lzc.o + g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -I/usr/include/freetype2 -I/usr/include/libpng16 -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/fonts/freetype.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/freetype/freetype.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ -gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes/msdesmodule.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/msdes/msdesmodule.o - gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes/des.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/msdes/des.o +gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -I/build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/msdes/msdesmodule.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/msdes/msdesmodule.o + gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/ebooks/compression/palmdoc.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/cPalmdoc/palmdoc.o gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/ebooks/djvu/bzzdecoder.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/bzzdec/bzzdecoder.o -g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/outlines.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/outlines.o -cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ - g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/images.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/images.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ -g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/podofo.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/podofo.o +g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/outlines.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/outlines.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ -g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/outline.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/outline.o +g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/utils.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/utils.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/impose.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/impose.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ -g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/utils.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/utils.o +g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/outline.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/outline.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/output.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/output.o @@ -3447,6 +3480,9 @@ g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/doc.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/doc.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ +g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/podofo.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/podofo.o +cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ + g++ -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC=extern "C" __attribute__ ((visibility ("default"))) PyObject*' -std=c++11 -I/usr/include -I/usr/include/podofo -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/utils/podofo/fonts.cpp -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/podofo/fonts.o cc1plus: warning: ‘-Werror=’ argument ‘-Werror=implicit-function-declaration’ is not valid for C++ @@ -3460,10 +3496,10 @@ gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/devices/libusb/libusb.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/libusb/libusb.o -gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/devices/mtp/unix/libmtp.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/libmtp/libmtp.o - gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/devices/mtp/unix/devices.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/libmtp/devices.o +gcc -Wall -DNDEBUG -fno-strict-aliasing -pipe -O3 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fvisibility=hidden -pthread -I/usr/include/python3.13 '-DCALIBRE_MODINIT_FUNC= __attribute__ ((visibility ("default"))) PyObject*' -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/devices/mtp/unix/libmtp.c -o /build/reproducible-path/calibre-7.26.0+ds/build/objects/libmtp/libmtp.o + Linking 25 files... g++ /build/reproducible-path/calibre-7.26.0+ds/build/objects/hunspell/hunspell_wrapper.o -o /build/reproducible-path/calibre-7.26.0+ds/src/calibre/plugins/hunspell.so -Wall -Wl,-z,relro -Wl,-z,now -shared -L/usr/lib/aarch64-linux-gnu -lpython3.13 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -L/usr/lib -lhunspell-1.7 @@ -3656,7 +3692,7 @@ -- Performing Test HAVE_STDATOMIC -- Performing Test HAVE_STDATOMIC - Success -- Found WrapAtomic: TRUE --- Configuring done (1.8s) +-- Configuring done (3.8s) -- Generating done (0.0s) -- Build files have been written to: /build/reproducible-path/calibre-7.26.0+ds/build/headless make[2]: Entering directory '/build/reproducible-path/calibre-7.26.0+ds/build/headless' @@ -3705,14 +3741,14 @@ make[4]: Leaving directory '/build/reproducible-path/calibre-7.26.0+ds/build/headless' make -f CMakeFiles/headless.dir/build.make CMakeFiles/headless.dir/build make[4]: Entering directory '/build/reproducible-path/calibre-7.26.0+ds/build/headless' -[ 33%] Building CXX object CMakeFiles/headless.dir/headless_integration.cpp.o +[ 33%] Building CXX object CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o +/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o -MF CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o.d -o CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/mocs_compilation.cpp [ 50%] Building CXX object CMakeFiles/headless.dir/main.cpp.o -/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/headless_integration.cpp.o -MF CMakeFiles/headless.dir/headless_integration.cpp.o.d -o CMakeFiles/headless.dir/headless_integration.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/headless/headless_integration.cpp -[ 66%] Building CXX object CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o +[ 66%] Building CXX object CMakeFiles/headless.dir/headless_integration.cpp.o [ 83%] Building CXX object CMakeFiles/headless.dir/headless_backingstore.cpp.o /usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/main.cpp.o -MF CMakeFiles/headless.dir/main.cpp.o.d -o CMakeFiles/headless.dir/main.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/headless/main.cpp /usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/headless_backingstore.cpp.o -MF CMakeFiles/headless.dir/headless_backingstore.cpp.o.d -o CMakeFiles/headless.dir/headless_backingstore.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/headless/headless_backingstore.cpp -/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o -MF CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o.d -o CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/mocs_compilation.cpp +/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NO_DEBUG -Dheadless_EXPORTS -I/build/reproducible-path/calibre-7.26.0+ds/build/headless/headless_autogen/include -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore -isystem /usr/lib/aarch64-linux-gnu/qt6/mkspecs/linux-g++ -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtGui/6.7.2/QtGui -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2 -isystem /usr/include/aarch64-linux-gnu/qt6/QtCore/6.7.2/QtCore -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -MD -MT CMakeFiles/headless.dir/headless_integration.cpp.o -MF CMakeFiles/headless.dir/headless_integration.cpp.o.d -o CMakeFiles/headless.dir/headless_integration.cpp.o -c /build/reproducible-path/calibre-7.26.0+ds/src/calibre/headless/headless_integration.cpp [100%] Linking CXX shared module libheadless.so /usr/bin/cmake -E cmake_link_script CMakeFiles/headless.dir/link.txt --verbose=1 /usr/bin/c++ -fPIC -g -O2 -ffile-prefix-map=/build/reproducible-path/calibre-7.26.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--dependency-file=CMakeFiles/headless.dir/link.d -Wl,-z,relro -Wl,-z,now -shared -o libheadless.so CMakeFiles/headless.dir/headless_autogen/mocs_compilation.cpp.o CMakeFiles/headless.dir/main.cpp.o CMakeFiles/headless.dir/headless_backingstore.cpp.o CMakeFiles/headless.dir/headless_integration.cpp.o /usr/lib/aarch64-linux-gnu/libQt6Gui.so.6.7.2 /usr/lib/aarch64-linux-gnu/libGLX.so /usr/lib/aarch64-linux-gnu/libOpenGL.so /usr/lib/aarch64-linux-gnu/libxkbcommon.so /usr/lib/aarch64-linux-gnu/libQt6Core.so.6.7.2 @@ -3721,7 +3757,7 @@ make[3]: Leaving directory '/build/reproducible-path/calibre-7.26.0+ds/build/headless' /usr/bin/cmake -E cmake_progress_start /build/reproducible-path/calibre-7.26.0+ds/build/headless/CMakeFiles 0 make[2]: Leaving directory '/build/reproducible-path/calibre-7.26.0+ds/build/headless' -* build took 69.5 seconds +* build took 156.2 seconds python3.13 setup.py liberation_fonts --system-liberation_fonts --path-to-liberation_fonts=/usr/share/fonts/truetype/liberation * @@ -3735,7 +3771,7 @@ * Running gui * -No write access to /nonexistent/first-build/.config/calibre using a temporary dir instead +No write access to /nonexistent/second-build/.config/calibre using a temporary dir instead Compiling form /build/reproducible-path/calibre-7.26.0+ds/src/calibre/gui2/filename_pattern.ui Compiling form /build/reproducible-path/calibre-7.26.0+ds/src/calibre/gui2/catalog/catalog_bibtex.ui Compiling form /build/reproducible-path/calibre-7.26.0+ds/src/calibre/gui2/catalog/catalog_epub_mobi.ui @@ -3833,7 +3869,7 @@ Compiled 94 forms Creating icon theme resource file Creating images.qrc -* gui took 1.1 seconds +* gui took 3.2 seconds python3.13 setup.py kakasi * @@ -3841,10 +3877,10 @@ * Generating Kanwadict -No write access to /nonexistent/first-build/.config/calibre using a temporary dir instead +No write access to /nonexistent/second-build/.config/calibre using a temporary dir instead Generating Itaijidict Generating kanadict -* kakasi took 0.5 seconds +* kakasi took 1.8 seconds make[1]: Leaving directory '/build/reproducible-path/calibre-7.26.0+ds' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/calibre-7.26.0+ds' @@ -3867,13 +3903,13 @@ test_human_readable_output (calibre.db.cli.tests.PrintCheckLibraryResultsTest.test_human_readable_output) Basic check of the human-readable output. ... ok [0.0 s] test_prints_nothing_if_no_errors (calibre.db.cli.tests.PrintCheckLibraryResultsTest.test_prints_nothing_if_no_errors) ... ok [0.0 s] -test_import_of_all_python_modules (calibre.utils.run_tests.TestImports.test_import_of_all_python_modules) ... ok [4.0 s] +test_import_of_all_python_modules (calibre.utils.run_tests.TestImports.test_import_of_all_python_modules) ... ok [14.2 s] test_copying_of_trees (calibre.utils.copy_files_test.TestCopyFiles.test_copying_of_trees) ... ok [0.0 s] test_renaming_of_files (calibre.utils.copy_files_test.TestCopyFiles.test_renaming_of_files) ... ok [0.0 s] test_live_cache (calibre.live.find_tests..LiveTest.test_live_cache) ... ok [0.0 s] test_module_loading (calibre.live.find_tests..LiveTest.test_module_loading) ... ok [0.0 s] -test_add_soft_hyphens (calibre.utils.hyphenation.test_hyphenation.TestHyphenation.test_add_soft_hyphens) ... ok [0.5 s] -test_hyphenate_html (calibre.utils.hyphenation.test_hyphenation.TestHyphenation.test_hyphenate_html) ... ok [0.1 s] +test_add_soft_hyphens (calibre.utils.hyphenation.test_hyphenation.TestHyphenation.test_add_soft_hyphens) ... ok [1.2 s] +test_hyphenate_html (calibre.utils.hyphenation.test_hyphenation.TestHyphenation.test_hyphenate_html) ... ok [0.3 s] test_locale_to_hyphen_dictionary (calibre.utils.hyphenation.test_hyphenation.TestHyphenation.test_locale_to_hyphen_dictionary) ... ok [0.1 s] test_viewer_cache (calibre.gui2.viewer.convert_book.find_tests..TestViewerCache.test_viewer_cache) ... ok [0.0 s] test_palmdoc_compression (calibre.ebooks.compression.palmdoc.find_tests..Test.test_palmdoc_compression) ... ok [0.0 s] @@ -3883,11 +3919,11 @@ test_sqp_optimized (calibre.utils.search_query_parser_test.TestSQP.test_sqp_optimized) ... ok [0.0 s] test_sqp_tokenizer (calibre.utils.search_query_parser_test.TestSQP.test_sqp_tokenizer) ... ok [0.0 s] test_sqp_unoptimized (calibre.utils.search_query_parser_test.TestSQP.test_sqp_unoptimized) ... ok [0.0 s] -test_exclusive_file_other_process_clean (calibre.utils.test_lock.IPCLockTest.test_exclusive_file_other_process_clean) ... ok [0.2 s] -test_exclusive_file_other_process_kill (calibre.utils.test_lock.IPCLockTest.test_exclusive_file_other_process_kill) ... ok [0.2 s] +test_exclusive_file_other_process_clean (calibre.utils.test_lock.IPCLockTest.test_exclusive_file_other_process_clean) ... ok [0.5 s] +test_exclusive_file_other_process_kill (calibre.utils.test_lock.IPCLockTest.test_exclusive_file_other_process_kill) ... ok [0.4 s] test_exclusive_file_same_process (calibre.utils.test_lock.IPCLockTest.test_exclusive_file_same_process) ... ok [0.1 s] -test_single_instance (calibre.utils.test_lock.IPCLockTest.test_single_instance) ... ok [1.6 s] -test_tdir_in_cache_dir (calibre.utils.test_lock.IPCLockTest.test_tdir_in_cache_dir) ... ok [0.3 s] +test_single_instance (calibre.utils.test_lock.IPCLockTest.test_single_instance) ... ok [3.2 s] +test_tdir_in_cache_dir (calibre.utils.test_lock.IPCLockTest.test_tdir_in_cache_dir) ... ok [0.7 s] test_shared_file (calibre.utils.shared_file.find_tests..SharedFileTest.test_shared_file) ... ok [0.0 s] test_author_mapper (calibre.ebooks.metadata.author_mapper.find_tests..TestAuthorMapper.test_author_mapper) ... ok [0.0 s] test_tag_mapper (calibre.ebooks.metadata.tag_mapper.find_tests..TestTagMapper.test_tag_mapper) ... ok [0.0 s] @@ -3909,12 +3945,12 @@ test_single (calibre.ebooks.metadata.test_author_sort.TestAuthorToAuthorSort.test_single) ... ok [0.0 s] test_surname_prefix (calibre.ebooks.metadata.test_author_sort.TestAuthorToAuthorSort.test_surname_prefix) ... ok [0.0 s] test_depth_first (calibre.ebooks.html.input.find_tests..TestHTMLInput.test_depth_first) ... ok [0.0 s] -test_dictionaries (calibre.spell.dictionary.find_tests..TestDictionaries.test_dictionaries) ... ok [0.4 s] +test_dictionaries (calibre.spell.dictionary.find_tests..TestDictionaries.test_dictionaries) ... ok [1.5 s] test_html_entity_replacement (calibre.ebooks.html_entities.find_tests..TestHTMLEntityReplacement.test_html_entity_replacement) ... ok [0.0 s] test_merge_annotations (calibre.gui2.viewer.annotations.find_tests..AnnotationsTest.test_merge_annotations) ... ok [0.0 s] test_lxml_unicode_parsing (calibre.utils.xml_parse.find_tests..TestXMLParse.test_lxml_unicode_parsing) ... ok [0.0 s] test_safe_xml_fromstring (calibre.utils.xml_parse.find_tests..TestXMLParse.test_safe_xml_fromstring) ... ok [0.0 s] -test_input_comment_multi (calibre.ebooks.metadata.html.MetadataHtmlTest.test_input_comment_multi) ... ok [0.0 s] +test_input_comment_multi (calibre.ebooks.metadata.html.MetadataHtmlTest.test_input_comment_multi) ... ok [0.1 s] test_input_comment_single (calibre.ebooks.metadata.html.MetadataHtmlTest.test_input_comment_single) ... ok [0.0 s] test_input_meta_multi (calibre.ebooks.metadata.html.MetadataHtmlTest.test_input_meta_multi) ... ok [0.0 s] test_input_meta_single (calibre.ebooks.metadata.html.MetadataHtmlTest.test_input_meta_single) ... ok [0.0 s] @@ -3939,13 +3975,13 @@ Test contractions ... skipped 'Skipping as this depends too much on ICU version' [0.0 s] test_find (calibre.utils.icu_test.TestICU.test_find) Test searching for substrings ... ok [0.0 s] -test_remove_accents (calibre.utils.icu_test.TestICU.test_remove_accents) ... ok [0.0 s] +test_remove_accents (calibre.utils.icu_test.TestICU.test_remove_accents) ... ok [0.1 s] test_roundtrip (calibre.utils.icu_test.TestICU.test_roundtrip) Test roundtripping ... ok [0.0 s] test_sorting (calibre.utils.icu_test.TestICU.test_sorting) Test the various sorting APIs ... ok [0.0 s] test_split_into_sentences (calibre.utils.icu_test.TestICU.test_split_into_sentences) ... ok [0.0 s] -test_mem_leaks (calibre.utils.matcher.test..Test.test_mem_leaks) ... ok [0.3 s] +test_mem_leaks (calibre.utils.matcher.test..Test.test_mem_leaks) ... ok [1.1 s] test_non_bmp (calibre.utils.matcher.test..Test.test_non_bmp) ... ok [0.0 s] test_cfi_decode (calibre.ebooks.epub.cfi.tests.Tests.test_cfi_decode) ... ok [0.0 s] test_parsing (calibre.ebooks.epub.cfi.tests.Tests.test_parsing) ... ok [0.0 s] @@ -3958,7 +3994,7 @@ test_parser (css_selectors.tests.TestCSSSelectors.test_parser) ... ok [0.0 s] test_pseudo_elements (css_selectors.tests.TestCSSSelectors.test_pseudo_elements) ... ok [0.0 s] test_select (css_selectors.tests.TestCSSSelectors.test_select) ... ok [0.0 s] -test_select_shakespeare (css_selectors.tests.TestCSSSelectors.test_select_shakespeare) ... ok [0.0 s] +test_select_shakespeare (css_selectors.tests.TestCSSSelectors.test_select_shakespeare) ... ok [0.1 s] test_specificity (css_selectors.tests.TestCSSSelectors.test_specificity) ... ok [0.0 s] test_tokenizer (css_selectors.tests.TestCSSSelectors.test_tokenizer) ... ok [0.0 s] test_export_import (calibre.ebooks.html_transform_rules.test..TestTransforms.test_export_import) ... ok [0.0 s] @@ -3972,7 +4008,7 @@ test_matching (calibre.ebooks.css_transform_rules.test..TestTransforms.test_matching) ... ok [0.0 s] test_border_condensation (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_border_condensation) ... ok [0.0 s] test_border_normalization (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_border_normalization) ... ok [0.0 s] -test_edge_condensation (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_edge_condensation) ... ok [0.0 s] +test_edge_condensation (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_edge_condensation) ... ok [0.1 s] test_edge_normalization (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_edge_normalization) ... ok [0.0 s] test_filter_css_normalization (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_filter_css_normalization) ... ok [0.0 s] test_font_normalization (calibre.ebooks.oeb.normalize_css.test_normalization..TestNormalization.test_font_normalization) ... ok [0.0 s] @@ -4004,7 +4040,7 @@ test_parse_style_attr (tinycss.tests.css21.TestCSS21.test_parse_style_attr) ... ok [0.0 s] test_color_parsing (tinycss.tests.color3.TestColor3.test_color_parsing) ... ok [0.0 s] test_hsl (tinycss.tests.color3.TestColor3.test_hsl) ... ok [0.0 s] -test_against_opf2 (calibre.ebooks.metadata.opf3_test.TestOPF3.test_against_opf2) ... ok [0.0 s] +test_against_opf2 (calibre.ebooks.metadata.opf3_test.TestOPF3.test_against_opf2) ... ok [0.2 s] test_authors (calibre.ebooks.metadata.opf3_test.TestOPF3.test_authors) ... ok [0.0 s] test_book_producer (calibre.ebooks.metadata.opf3_test.TestOPF3.test_book_producer) ... ok [0.0 s] test_comments (calibre.ebooks.metadata.opf3_test.TestOPF3.test_comments) ... ok [0.0 s] @@ -4037,10 +4073,10 @@ test_actual_case (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_actual_case) Test getting the actual case for files from names on case insensitive filesystems ... Conversion options changed from defaults: level1_toc: '//h:h2' - verbose: 2 authors: 'Kovid Goyal' + verbose: 2 language: 'en' - cover: '/tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/lt.png' + cover: '/tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/lt.png' Resolved conversion options calibre version: 7.26.0 {'add_alt_text_to_img': False, @@ -4057,7 +4093,7 @@ "'i')) or @class = 'chapter']", 'chapter_mark': 'pagebreak', 'comments': None, - 'cover': '/tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/lt.png', + 'cover': '/tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/lt.png', 'debug_pipeline': None, 'dehyphenate': True, 'delete_blank_paragraphs': True, @@ -4083,7 +4119,7 @@ 'format_scene_breaks': True, 'html_unwrap_factor': 0.4, 'input_encoding': None, - 'input_profile': , + 'input_profile': , 'insert_blank_line': False, 'insert_blank_line_size': 0.5, 'insert_metadata': False, @@ -4108,7 +4144,7 @@ 'no_default_epub_cover': False, 'no_inline_navbars': False, 'no_svg_cover': False, - 'output_profile': , + 'output_profile': , 'page_breaks_before': "//*[name()='h1' or name()='h2']", 'prefer_metadata_cover': False, 'preserve_cover_aspect_ratio': False, @@ -4150,19 +4186,19 @@ 'verbose': 2} 1% Converting input to HTML... InputFormatPlugin: HTML Input running -on /tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/index.html +on /tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/index.html Building file list... Found files... - HTMLFile:0:a:'/tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/index.html' + HTMLFile:0:a:'/tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/index.html' Normalizing filename cases Rewriting HTML links Parsing index.html ... Initial parse failed, using more forgiving parsers Parsing index.html as HTML -Added /tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/marked.png with href: marked.png -Added /tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/LiberationMono-Regular.ttf with href: LiberationMono-Regular.ttf -Added /tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/LiberationMono-Italic.ttf with href: LiberationMono-Italic.ttf -Added /tmp/calibre_7.26.0_tmp_z56s104t/1c7x7q93bpt/light_wood.png with href: light_wood.png +Added /tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/marked.png with href: marked.png +Added /tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/LiberationMono-Regular.ttf with href: LiberationMono-Regular.ttf +Added /tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/LiberationMono-Italic.ttf with href: LiberationMono-Italic.ttf +Added /tmp/calibre_7.26.0_tmp__ns9betv/o29x4qaebpt/light_wood.png with href: light_wood.png 34% Running transforms on e-book... Merging user specified metadata... Detecting structure... @@ -4189,14 +4225,14 @@ Removing anchor from TOC href: index_split_001.html#page2 EPUB output written to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/simple.epub Output saved to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/simple.epub -ok [0.1 s] +ok [0.5 s] test_clone (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_clone) Test cloning of containers ... Conversion options changed from defaults: - cover: '/tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/lt.png' - authors: 'Kovid Goyal' + level1_toc: '//h:h2' language: 'en' + authors: 'Kovid Goyal' verbose: 2 - level1_toc: '//h:h2' + cover: '/tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/lt.png' Resolved conversion options calibre version: 7.26.0 {'add_alt_text_to_img': False, @@ -4213,7 +4249,7 @@ "'i')) or @class = 'chapter']", 'chapter_mark': 'pagebreak', 'comments': None, - 'cover': '/tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/lt.png', + 'cover': '/tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/lt.png', 'debug_pipeline': None, 'dehyphenate': True, 'delete_blank_paragraphs': True, @@ -4233,7 +4269,7 @@ 'format_scene_breaks': True, 'html_unwrap_factor': 0.4, 'input_encoding': None, - 'input_profile': , + 'input_profile': , 'insert_blank_line': False, 'insert_blank_line_size': 0.5, 'insert_metadata': False, @@ -4258,7 +4294,7 @@ 'no_chapters_in_toc': False, 'no_inline_navbars': False, 'no_inline_toc': False, - 'output_profile': , + 'output_profile': , 'page_breaks_before': "//*[name()='h1' or name()='h2']", 'prefer_author_sort': False, 'prefer_metadata_cover': False, @@ -4301,19 +4337,19 @@ 'verbose': 2} 1% Converting input to HTML... InputFormatPlugin: HTML Input running -on /tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/index.html +on /tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/index.html Building file list... Found files... - HTMLFile:0:a:'/tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/index.html' + HTMLFile:0:a:'/tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/index.html' Normalizing filename cases Rewriting HTML links Parsing index.html ... Initial parse failed, using more forgiving parsers Parsing index.html as HTML -Added /tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/marked.png with href: marked.png -Added /tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/LiberationMono-Regular.ttf with href: LiberationMono-Regular.ttf -Added /tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/LiberationMono-Italic.ttf with href: LiberationMono-Italic.ttf -Added /tmp/calibre_7.26.0_tmp_z56s104t/pgd73igfbpt/light_wood.png with href: light_wood.png +Added /tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/marked.png with href: marked.png +Added /tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/LiberationMono-Regular.ttf with href: LiberationMono-Regular.ttf +Added /tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/LiberationMono-Italic.ttf with href: LiberationMono-Italic.ttf +Added /tmp/calibre_7.26.0_tmp__ns9betv/aaqhk_17bpt/light_wood.png with href: light_wood.png 34% Running transforms on e-book... Merging user specified metadata... Detecting structure... @@ -4342,24 +4378,24 @@ Creating indices... AZW3 output written to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/simple.azw3 Output saved to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/simple.azw3 -ok [0.9 s] +ok [3.0 s] test_dir_container (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_dir_container) ... ok [0.0 s] test_file_add (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_file_add) Test adding of files ... ok [0.0 s] test_file_removal (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_file_removal) Test removal of files from the container ... ok [0.0 s] test_file_rename (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_file_rename) -Test renaming of files ... ok [0.1 s] +Test renaming of files ... ok [0.3 s] test_folder_type_map_case (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_folder_type_map_case) ... ok [0.0 s] test_merge_file (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_merge_file) -Test merging of files ... ok [0.0 s] +Test merging of files ... ok [0.1 s] test_split_file (calibre.ebooks.oeb.polish.tests.container.ContainerTests.test_split_file) Test splitting of files ... Conversion options changed from defaults: - authors: 'Kovid Goyal' - level1_toc: '//h:h2' language: 'en' - cover: '/build/reproducible-path/calibre-7.26.0+ds/resources/images/lt.png' verbose: 2 + cover: '/build/reproducible-path/calibre-7.26.0+ds/resources/images/lt.png' + level1_toc: '//h:h2' + authors: 'Kovid Goyal' Resolved conversion options calibre version: 7.26.0 {'add_alt_text_to_img': False, @@ -4402,7 +4438,7 @@ 'format_scene_breaks': True, 'html_unwrap_factor': 0.4, 'input_encoding': None, - 'input_profile': , + 'input_profile': , 'insert_blank_line': False, 'insert_blank_line_size': 0.5, 'insert_metadata': False, @@ -4427,7 +4463,7 @@ 'no_default_epub_cover': False, 'no_inline_navbars': False, 'no_svg_cover': False, - 'output_profile': , + 'output_profile': , 'page_breaks_before': "//*[name()='h1' or name()='h2']", 'prefer_metadata_cover': False, 'preserve_cover_aspect_ratio': False, @@ -4501,9 +4537,9 @@ Removing anchor from TOC href: index.html#page1 EPUB output written to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/split.epub Output saved to /build/reproducible-path/calibre-7.26.0+ds/debian/.debhelper/generated/_source/home/.cache/calibre/polish-test/split.epub -ok [0.0 s] +ok [0.1 s] test_fallback_font_matching (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_fallback_font_matching) ... ok [0.0 s] -test_font_stats (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_font_stats) ... ok [0.1 s] +test_font_stats (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_font_stats) ... ok [0.3 s] test_iterrules (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_iterrules) ... CSSImportRule: While processing imported style sheet href=../two.css: OSError('Cannot read Stylesheet.') CSSImportRule: While processing imported style sheet href=../two.css: OSError('Cannot read Stylesheet.') CSSImportRule: While processing imported style sheet href=../two.css: OSError('Cannot read Stylesheet.') @@ -4522,117 +4558,134 @@ CSSImportRule: While processing imported style sheet href=x/one.css: OSError('Cannot read Stylesheet.') ok [0.0 s] test_remove_property_value (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_remove_property_value) ... ok [0.0 s] -test_resolve_styles (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_resolve_styles) ... ok [0.2 s] +test_resolve_styles (calibre.ebooks.oeb.polish.tests.cascade.CascadeTest.test_resolve_styles) ... ok [0.6 s] test_thumbnail_cache (calibre.db.tests.utils.UtilsTest.test_thumbnail_cache) Test the operation of the thumbnail cache ... ok [0.0 s] test_author_sort_for_authors (calibre.db.tests.reading.ReadingTest.test_author_sort_for_authors) -Test getting the author sort for authors from the db ... ok [0.3 s] +Test getting the author sort for authors from the db ... ok [0.4 s] test_composites (calibre.db.tests.reading.ReadingTest.test_composites) Test sorting and searching in composite columns ... ok [0.3 s] test_datetime (calibre.db.tests.reading.ReadingTest.test_datetime) Test the reading of datetimes stored in the db ... ok [0.3 s] test_find_identical_books (calibre.db.tests.reading.ReadingTest.test_find_identical_books) -Test find_identical_books ... ok [0.3 s] +Test find_identical_books ... ok [0.4 s] test_get_categories (calibre.db.tests.reading.ReadingTest.test_get_categories) -Check that get_categories() returns the same data for both backends ... ok [0.3 s] +Check that get_categories() returns the same data for both backends ... ok [0.6 s] test_get_cover (calibre.db.tests.reading.ReadingTest.test_get_cover) -Test cover() returns the same data for both backends ... ok [0.3 s] +Test cover() returns the same data for both backends ... ok [0.5 s] test_get_formats (calibre.db.tests.reading.ReadingTest.test_get_formats) -Test reading ebook formats using the format() method ... ok [0.3 s] +Test reading ebook formats using the format() method ... ok [0.5 s] test_get_metadata (calibre.db.tests.reading.ReadingTest.test_get_metadata) -Test get_metadata() returns the same data for both backends ... ok [0.3 s] +Test get_metadata() returns the same data for both backends ... ok [0.9 s] test_get_next_series_num (calibre.db.tests.reading.ReadingTest.test_get_next_series_num) -Test getting the next series number for a series ... ok [0.3 s] +Test getting the next series number for a series ... ok [0.8 s] test_has_book (calibre.db.tests.reading.ReadingTest.test_has_book) -Test detecting duplicates ... ok [0.3 s] -test_last_read_positions (calibre.db.tests.reading.ReadingTest.test_last_read_positions) ... ok [0.3 s] +Test detecting duplicates ... ok [0.5 s] +test_last_read_positions (calibre.db.tests.reading.ReadingTest.test_last_read_positions) ... ok [0.4 s] test_marked_field (calibre.db.tests.reading.ReadingTest.test_marked_field) -Test the marked field ... ok [0.3 s] +Test the marked field ... ok [0.7 s] test_proxy_metadata (calibre.db.tests.reading.ReadingTest.test_proxy_metadata) -Test the ProxyMetadata object used for composite columns ... ok [0.3 s] -test_python_templates (calibre.db.tests.reading.ReadingTest.test_python_templates) ... ok [0.3 s] +Test the ProxyMetadata object used for composite columns ... ok [0.9 s] +test_python_templates (calibre.db.tests.reading.ReadingTest.test_python_templates) ... ok [0.9 s] test_read (calibre.db.tests.reading.ReadingTest.test_read) -Test the reading of data from the database ... ok [0.3 s] +Test the reading of data from the database ... ok [0.8 s] test_restrictions (calibre.db.tests.reading.ReadingTest.test_restrictions) -Test searching with and without restrictions ... ok [0.3 s] +Test searching with and without restrictions ... ok [0.6 s] test_search_caching (calibre.db.tests.reading.ReadingTest.test_search_caching) -Test caching of searches ... ok [0.3 s] +Test caching of searches ... ok [0.8 s] test_searching (calibre.db.tests.reading.ReadingTest.test_searching) -Test searching returns the same data for both backends ... ok [0.3 s] -test_serialize_metadata (calibre.db.tests.reading.ReadingTest.test_serialize_metadata) ... ok [0.3 s] +Test searching returns the same data for both backends ... ok [0.8 s] +test_serialize_metadata (calibre.db.tests.reading.ReadingTest.test_serialize_metadata) ... ok [0.6 s] test_sorting (calibre.db.tests.reading.ReadingTest.test_sorting) -Test sorting ... ok [0.3 s] -test_storing_conversion_options (calibre.db.tests.reading.ReadingTest.test_storing_conversion_options) ... ok [0.3 s] -test_template_db_functions (calibre.db.tests.reading.ReadingTest.test_template_db_functions) ... ok [0.3 s] -test_notes (calibre.db.tests.notes.NotesTest.test_notes) ... ok [0.3 s] -test_acquire (calibre.db.tests.locking.TestLock.test_acquire) ... ok [2.3 s] -test_contention (calibre.db.tests.locking.TestLock.test_contention) ... ok [0.7 s] -test_downgrade (calibre.db.tests.locking.TestLock.test_downgrade) ... ok [0.3 s] -test_multithread_deadlock (calibre.db.tests.locking.TestLock.test_multithread_deadlock) ... ok [0.5 s] -test_owns_locks (calibre.db.tests.locking.TestLock.test_owns_locks) ... ok [0.2 s] -test_recursive (calibre.db.tests.locking.TestLock.test_recursive) ... ok [0.3 s] -test_release (calibre.db.tests.locking.TestLock.test_release) ... ok [2.3 s] -test_upgrade (calibre.db.tests.locking.TestLock.test_upgrade) ... ok [0.3 s] +Test sorting ... ok [0.5 s] +test_storing_conversion_options (calibre.db.tests.reading.ReadingTest.test_storing_conversion_options) ... ok [0.8 s] +test_template_db_functions (calibre.db.tests.reading.ReadingTest.test_template_db_functions) ... ok [1.3 s] +test_notes (calibre.db.tests.notes.NotesTest.test_notes) ... ok [1.2 s] +test_acquire (calibre.db.tests.locking.TestLock.test_acquire) ... ok [2.8 s] +test_contention (calibre.db.tests.locking.TestLock.test_contention) ... ok [1.2 s] +test_downgrade (calibre.db.tests.locking.TestLock.test_downgrade) ... ok [0.6 s] +test_multithread_deadlock (calibre.db.tests.locking.TestLock.test_multithread_deadlock) ... ok [0.9 s] +test_owns_locks (calibre.db.tests.locking.TestLock.test_owns_locks) ... ok [0.7 s] +test_recursive (calibre.db.tests.locking.TestLock.test_recursive) ... ok [0.6 s] +test_release (calibre.db.tests.locking.TestLock.test_release) ... ok [2.6 s] +test_upgrade (calibre.db.tests.locking.TestLock.test_upgrade) ... ok [0.6 s] test_get_property (calibre.db.tests.legacy.LegacyTest.test_get_property) -Test the get_property interface for reading data ... ok [0.3 s] +Test the get_property interface for reading data ... ok [0.5 s] test_legacy_adding_books (calibre.db.tests.legacy.LegacyTest.test_legacy_adding_books) -Test various adding/deleting books methods ... ok [0.5 s] +Test various adding/deleting books methods ... ok [1.1 s] test_legacy_conversion_options (calibre.db.tests.legacy.LegacyTest.test_legacy_conversion_options) -Test conversion options API ... ok [0.3 s] +Test conversion options API ... ok [0.7 s] test_legacy_coverage (calibre.db.tests.legacy.LegacyTest.test_legacy_coverage) -Check that the emulation of the legacy interface is (almost) total ... ok [0.3 s] +Check that the emulation of the legacy interface is (almost) total ... ok [0.6 s] test_legacy_custom (calibre.db.tests.legacy.LegacyTest.test_legacy_custom) -Test the legacy API for custom columns ... ok [1.5 s] +Test the legacy API for custom columns ... ok [1.6 s] test_legacy_custom_data (calibre.db.tests.legacy.LegacyTest.test_legacy_custom_data) -Test the API for custom data storage ... ok [0.6 s] +Test the API for custom data storage ... ok [0.7 s] test_legacy_delete_using (calibre.db.tests.legacy.LegacyTest.test_legacy_delete_using) Test delete_using() API ... ok [0.6 s] test_legacy_direct (calibre.db.tests.legacy.LegacyTest.test_legacy_direct) -Test read-only methods that are directly equivalent in the old and new interface ... ok [0.4 s] +Test read-only methods that are directly equivalent in the old and new interface ... ok [0.6 s] test_legacy_getters (calibre.db.tests.legacy.LegacyTest.test_legacy_getters) -Test various functions to get individual bits of metadata ... ok [0.4 s] +Test various functions to get individual bits of metadata ... ok [0.6 s] test_legacy_saved_search (calibre.db.tests.legacy.LegacyTest.test_legacy_saved_search) -Test legacy saved search API ... ok [0.7 s] +Test legacy saved search API ... ok [0.5 s] test_legacy_setters (calibre.db.tests.legacy.LegacyTest.test_legacy_setters) -Test methods that are directly equivalent in the old and new interface ... ok [0.5 s] +Test methods that are directly equivalent in the old and new interface ... ok [1.5 s] test_library_wide_properties (calibre.db.tests.legacy.LegacyTest.test_library_wide_properties) -Test library wide properties ... ok [0.4 s] +Test library wide properties ... ok [0.9 s] test_refresh (calibre.db.tests.legacy.LegacyTest.test_refresh) -Test refreshing the view after a change to metadata.db ... ok [1.8 s] +Test refreshing the view after a change to metadata.db ... ok [2.1 s] test_fts_basic (calibre.db.tests.fts.FTSTest.test_fts_basic) ... ok [0.0 s] test_fts_query_syntax (calibre.db.tests.fts.FTSTest.test_fts_query_syntax) ... ok [0.0 s] test_fts_stemming (calibre.db.tests.fts.FTSTest.test_fts_stemming) ... ok [0.0 s] test_fts_tokenize (calibre.db.tests.fts.FTSTest.test_fts_tokenize) ... ok [0.0 s] -test_pdftotext (calibre.db.tests.fts.FTSTest.test_pdftotext) ... ok [0.0 s] +test_pdftotext (calibre.db.tests.fts.FTSTest.test_pdftotext) ... ok [0.1 s] test_add_books (calibre.db.tests.add_remove.AddRemoveTest.test_add_books) -Test the adding of new books ... ok [0.3 s] +Test the adding of new books ... ok [0.7 s] test_add_format (calibre.db.tests.add_remove.AddRemoveTest.test_add_format) -Test adding formats to an existing book record ... ok [0.3 s] -test_copy_to_library (calibre.db.tests.add_remove.AddRemoveTest.test_copy_to_library) ... ok [0.3 s] +Test adding formats to an existing book record ... ok [0.7 s] +test_copy_to_library (calibre.db.tests.add_remove.AddRemoveTest.test_copy_to_library) ... ok [0.9 s] test_create_book_entry (calibre.db.tests.add_remove.AddRemoveTest.test_create_book_entry) -Test the creation of new book entries ... ok [0.5 s] +Test the creation of new book entries ... ok [1.2 s] test_format_orphan (calibre.db.tests.add_remove.AddRemoveTest.test_format_orphan) -Test that adding formats does not create orphans if the file name algorithm changes ... ok [0.4 s] -test_merging_extra_files (calibre.db.tests.add_remove.AddRemoveTest.test_merging_extra_files) ... ok [0.3 s] +Test that adding formats does not create orphans if the file name algorithm changes ... ok [1.1 s] +test_merging_extra_files (calibre.db.tests.add_remove.AddRemoveTest.test_merging_extra_files) ... ok [0.6 s] test_original_fmt (calibre.db.tests.add_remove.AddRemoveTest.test_original_fmt) -Test management of original fmt ... ok [0.3 s] +Test management of original fmt ... ok [0.4 s] test_remove_books (calibre.db.tests.add_remove.AddRemoveTest.test_remove_books) Test removal of books ... ok [0.4 s] test_remove_formats (calibre.db.tests.add_remove.AddRemoveTest.test_remove_formats) -Test removal of formats from book records ... ok [0.5 s] -test_export_import (calibre.db.tests.filesystem.FilesystemTest.test_export_import) ... ok [1.3 s] -test_find_books_in_directory (calibre.db.tests.filesystem.FilesystemTest.test_find_books_in_directory) ... ok [0.2 s] +Test removal of formats from book records ... ok [0.6 s] +test_export_import (calibre.db.tests.filesystem.FilesystemTest.test_export_import) ... ok [6.8 s] +test_find_books_in_directory (calibre.db.tests.filesystem.FilesystemTest.test_find_books_in_directory) ... ok [0.8 s] test_fname_change (calibre.db.tests.filesystem.FilesystemTest.test_fname_change) -Test the changing of the filename but not the folder name ... ok [0.3 s] +Test the changing of the filename but not the folder name ... ok [1.1 s] test_library_move (calibre.db.tests.filesystem.FilesystemTest.test_library_move) -Test moving of library ... ok [0.3 s] +Test moving of library ... ok [0.8 s] test_long_filenames (calibre.db.tests.filesystem.FilesystemTest.test_long_filenames) -Test long file names ... ok [0.3 s] +Test long file names ... ok [0.6 s] test_metadata_move (calibre.db.tests.filesystem.FilesystemTest.test_metadata_move) -Test the moving of files when title/author change ... ok [0.3 s] -test_rename_of_extra_files (calibre.db.tests.filesystem.FilesystemTest.test_rename_of_extra_files) ... ok [0.3 s] +Test the moving of files when title/author change ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [0.8 s] +test_rename_of_extra_files (calibre.db.tests.filesystem.FilesystemTest.test_rename_of_extra_files) ... ok [0.8 s] test_reserved_names (calibre.db.tests.filesystem.FilesystemTest.test_reserved_names) -Test that folders are not created with a windows reserve name ... ok [0.3 s] +Test that folders are not created with a windows reserve name ... ok [1.0 s] test_windows_atomic_move (calibre.db.tests.filesystem.FilesystemTest.test_windows_atomic_move) Test book file open in another process when changing metadata ... skipped 'Windows only' [0.0 s] test_fts_search (calibre.db.tests.fts_api.FTSAPITest.test_fts_search) ... Traceback (most recent call last): @@ -13781,8 +13834,7 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [2.7 s] -test_fts_to_text (calibre.db.tests.fts_api.FTSAPITest.test_fts_to_text) ... Traceback (most recent call last): +Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one @@ -13799,15 +13851,7 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [0.3 s] -test_fts_triggers (calibre.db.tests.fts_api.FTSAPITest.test_fts_triggers) ... ok [0.3 s] -test_annotations (calibre.db.tests.writing.WritingTest.test_annotations) -Test handling of annotations ... ok [0.3 s] -test_backup (calibre.db.tests.writing.WritingTest.test_backup) -Test the automatic backup of changed metadata ... ok [2.5 s] -test_changed_events (calibre.db.tests.writing.WritingTest.test_changed_events) ... ok [0.5 s] -test_composite_cache (calibre.db.tests.writing.WritingTest.test_composite_cache) -Test that the composite field cache is properly invalidated on writes ... Traceback (most recent call last): +Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one @@ -13824,23 +13868,7 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [0.4 s] -test_conversion_options (calibre.db.tests.writing.WritingTest.test_conversion_options) -Test saving of conversion options ... ok [0.3 s] -test_dirtied (calibre.db.tests.writing.WritingTest.test_dirtied) -Test the setting of the dirtied flag and the last_modified column ... ok [0.3 s] -test_dump_and_restore (calibre.db.tests.writing.WritingTest.test_dump_and_restore) -Test roundtripping the db through SQL ... get_categories: item Unknown is not in authors list! -ok [0.4 s] -test_fix_case_duplicates (calibre.db.tests.writing.WritingTest.test_fix_case_duplicates) -Test fixing of databases that have items in is_many fields that differ only by case ... ok [0.3 s] -test_link_maps (calibre.db.tests.writing.WritingTest.test_link_maps) ... ok [0.3 s] -test_many_many_basic (calibre.db.tests.writing.WritingTest.test_many_many_basic) -Test the different code paths for writing to a many-many field ... ok [0.4 s] -test_many_one_basic (calibre.db.tests.writing.WritingTest.test_many_one_basic) -Test the different code paths for writing to a many-one field ... ok [0.3 s] -test_one_one (calibre.db.tests.writing.WritingTest.test_one_one) -Test setting of values in one-one fields ... Traceback (most recent call last): +Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one @@ -13857,50 +13885,6 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [2.4 s] -test_preferences (calibre.db.tests.writing.WritingTest.test_preferences) -Test getting and setting of preferences, especially with mutable objects ... ok [0.3 s] -test_remove_items (calibre.db.tests.writing.WritingTest.test_remove_items) -Test removal of many-(many,one) items ... ok [0.3 s] -test_rename_items (calibre.db.tests.writing.WritingTest.test_rename_items) -Test renaming of many-(many,one) items ... ok [0.4 s] -test_set_author_data (calibre.db.tests.writing.WritingTest.test_set_author_data) ... ok [0.3 s] -test_set_cover (calibre.db.tests.writing.WritingTest.test_set_cover) -Test setting of cover ... ok [0.3 s] -test_set_metadata (calibre.db.tests.writing.WritingTest.test_set_metadata) -Test setting of metadata ... ok [0.4 s] -test_websocket_basic (calibre.srv.tests.web_sockets.WebSocketTest.test_websocket_basic) -Test basic interaction with the websocket server ... calibre server listening on 127.0.0.1:36775 -Too large control frame from client -RSV bits set in frame from client -RSV bits set in frame from client -RSV bits set in frame from client -RSV bits set in frame from client -RSV bits set in frame from client -RSV bits set in frame from client -Unknown OPCODE from client: 3 -Unknown OPCODE from client: 4 -Unknown OPCODE from client: 5 -Unknown OPCODE from client: 6 -Unknown OPCODE from client: 7 -Unknown OPCODE from client: 11 -Unknown OPCODE from client: 12 -Unknown OPCODE from client: 13 -Unknown OPCODE from client: 14 -Unknown OPCODE from client: 15 -Fragmented control frame from client -Fragmented control frame from client -Too large control frame from client -Client sent continuation frame with no message to continue -Client sent continuation frame with no message to continue -Client sent continuation frame with no message to continue -Client sent continuation frame with non-zero opcode -Client sent undecodeable UTF-8 -Client sent undecodeable UTF-8 -Client sent undecodeable UTF-8 -Client sent undecodeable UTF-8 -ok [0.3 s] -test_websocket_perf (calibre.srv.tests.web_sockets.WebSocketTest.test_websocket_perf) ... calibre server listening on 127.0.0.1:33623 Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() @@ -13918,38 +13902,6 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [1.3 s] -test_library_id_construction (calibre.srv.tests.routes.TestRouter.test_library_id_construction) ... ok [0.0 s] -test_route_construction (calibre.srv.tests.routes.TestRouter.test_route_construction) -Test route construction ... ok [0.0 s] -test_route_finding (calibre.srv.tests.routes.TestRouter.test_route_finding) -Test route finding ... ok [0.0 s] -test_basic_css_transforms (calibre.srv.tests.fast_css_transform.TestTransform.test_basic_css_transforms) ... ok [0.0 s] -test_counting_chars_in_elems (calibre.srv.tests.fast_css_transform.TestTransform.test_counting_chars_in_elems) ... ok [0.0 s] -test_number_parsing (calibre.srv.tests.fast_css_transform.TestTransform.test_number_parsing) ... ok [0.0 s] -test_char_count (calibre.srv.tests.content.ContentTest.test_char_count) ... ok [0.3 s] -test_get (calibre.srv.tests.content.ContentTest.test_get) -Test /get ... calibre server listening on 127.0.0.1:38219 -ok [0.6 s] -test_html_as_json (calibre.srv.tests.content.ContentTest.test_html_as_json) ... ok [0.3 s] -test_last_read_cache (calibre.srv.tests.content.ContentTest.test_last_read_cache) ... ok [0.3 s] -test_static (calibre.srv.tests.content.ContentTest.test_static) -Test serving of static content ... calibre server listening on 127.0.0.1:33747 -ok [0.5 s] -test_android_auth_workaround (calibre.srv.tests.auth.TestAuth.test_android_auth_workaround) -Test authentication workaround for Android ... calibre server listening on 127.0.0.1:36009 -ok [0.1 s] -test_basic_auth (calibre.srv.tests.auth.TestAuth.test_basic_auth) -Test HTTP Basic auth ... calibre server listening on 127.0.0.1:42575 -ok [0.1 s] -test_digest_auth (calibre.srv.tests.auth.TestAuth.test_digest_auth) -Test HTTP Digest auth ... calibre server listening on 127.0.0.1:40061 -ok [0.1 s] -test_fail_ban (calibre.srv.tests.auth.TestAuth.test_fail_ban) ... calibre server listening on 127.0.0.1:41161 -ok [0.5 s] -test_library_restrictions (calibre.srv.tests.auth.TestAuth.test_library_restrictions) ... ok [0.1 s] -test_ajax_categories (calibre.srv.tests.ajax.ContentTest.test_ajax_categories) -Test /ajax/categories and /ajax/search ... calibre server listening on 127.0.0.1:34831 Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() @@ -13967,43 +13919,23 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [0.3 s] -test_srv_add_book (calibre.srv.tests.ajax.ContentTest.test_srv_add_book) ... calibre server listening on 127.0.0.1:34989 -ok [0.4 s] -test_srv_restrictions (calibre.srv.tests.ajax.ContentTest.test_srv_restrictions) -Test that virtual lib. + search restriction works on all end points ... calibre server listening on 127.0.0.1:40187 -ok [0.4 s] -test_accept_encoding (calibre.srv.tests.http.TestHTTP.test_accept_encoding) -Test parsing of Accept-Encoding ... ok [0.0 s] -test_accept_language (calibre.srv.tests.http.TestHTTP.test_accept_language) -Test parsing of Accept-Language ... calibre server listening on 127.0.0.1:35089 -ok [0.1 s] -test_header_parsing (calibre.srv.tests.http.TestHTTP.test_header_parsing) -Test parsing of HTTP headers ... ok [0.0 s] -test_http_basic (calibre.srv.tests.http.TestHTTP.test_http_basic) -Test basic HTTP protocol conformance ... calibre server listening on 127.0.0.1:40281 -Unhandled exception in state: State: _job_done Client: 127.0.0.1:40992 Request: GET /test/ HTTP/1.1 Traceback (most recent call last): - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 651, in tick - conn.handle_event(event) - ~~~~~~~~~~~~~~~~~^^^^^^^ - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 365, in _job_done - self.job_done(*event) - ~~~~~~~~~~~~~^^^^^^^^ - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/http_response.py", line 494, in job_done - reraise(etype, e, tb) - ~~~~~~~^^^^^^^^^^^^^^ - File "/build/reproducible-path/calibre-7.26.0+ds/src/polyglot/builtins.py", line 61, in reraise - raise value - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/pool.py", line 33, in run - result = func() - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/http_response.py", line 454, in run_request_handler - result = self.request_handler(data) - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/tests/http.py", line 203, in - server.change_handler(lambda data:1/0) - ~^~ -ZeroDivisionError: division by zero - + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() @@ -14259,39 +14191,7 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -ok [60.2 s] -test_http_response (calibre.srv.tests.http.TestHTTP.test_http_response) -Test HTTP protocol responses ... calibre server listening on 127.0.0.1:34693 -ok [0.1 s] -test_range_parsing (calibre.srv.tests.http.TestHTTP.test_range_parsing) -Test parsing of Range header ... ok [0.0 s] -test_static_generation (calibre.srv.tests.http.TestHTTP.test_static_generation) -Test static generation ... calibre server listening on 127.0.0.1:40425 -ok [0.0 s] -test_bonjour (calibre.srv.tests.loop.LoopTest.test_bonjour) -Test advertising via BonJour ... skipped 'Disabled as it is failing on the build server, need to investigate' [0.0 s] -test_dual_stack (calibre.srv.tests.loop.LoopTest.test_dual_stack) ... calibre server listening on [::]:43221 -ok [0.0 s] -test_fallback_interface (calibre.srv.tests.loop.LoopTest.test_fallback_interface) -Test falling back to default interface ... Failed to bind to 1.1.1.1 with error: No socket could be created -- (('1.1.1.1', 0): [Errno 99] Cannot assign requested address). Trying to bind to the default interface: 127.0.1.1 instead -calibre server listening on 127.0.1.1:43643 -ok [1.1 s] -test_jobs_manager (calibre.srv.tests.loop.LoopTest.test_jobs_manager) -Test the jobs manager ... ok [1.3 s] -test_log_rotation (calibre.srv.tests.loop.LoopTest.test_log_rotation) -Test log rotation ... ok [0.0 s] -test_monotonic (calibre.srv.tests.loop.LoopTest.test_monotonic) -Test the monotonic() clock ... ok [0.1 s] -test_plugins (calibre.srv.tests.loop.LoopTest.test_plugins) -Test plugin semantics ... calibre server listening on 127.0.0.1:33579 -ok [0.0 s] -test_ring_buffer (calibre.srv.tests.loop.LoopTest.test_ring_buffer) -Test the ring buffer used for reads ... ok [0.0 s] -test_socket_activation (calibre.srv.tests.loop.LoopTest.test_socket_activation) -Test socket activation ... calibre server listening on 127.0.0.1:43647 -ok [0.0 s] -test_ssl (calibre.srv.tests.loop.LoopTest.test_ssl) -Test serving over SSL ... Traceback (most recent call last): +Traceback (most recent call last): File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available has_more = do_one() File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one @@ -14308,85 +14208,70686 @@ ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ File "src/cursor.c", line 172, in resetcursor apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database -calibre server listening on 127.0.0.1:36627 -ok [0.4 s] -test_workers (calibre.srv.tests.loop.LoopTest.test_workers) -Test worker semantics ... calibre server listening on 127.0.0.1:36285 -calibre server listening on 127.0.0.1:38329 -ServerWorker failed to notify server on job completion Traceback (most recent call last): - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/pool.py", line 41, in run - self.notify_server() - ~~~~~~~~~~~~~~~~~~^^ - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 695, in job_completed - self.write_to_control(JOB_DONE) - ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ - File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 688, in write_to_control - self.control_in.write(what) - ~~~~~~~~~~~~~~~~~~~~~^^^^^^ -ValueError: write to closed file - -Failed to shutdown 1 workers in ThreadPool cleanly -ok [0.2 s] -test_7z (calibre.test_build.BuildTest.test_7z) ... ok [0.1 s] -test_apsw (calibre.test_build.BuildTest.test_apsw) ... ok [0.0 s] -test_bs4 (calibre.test_build.BuildTest.test_bs4) ... ok [0.0 s] -test_certgen (calibre.test_build.BuildTest.test_certgen) ... ok [0.1 s] -test_chardet (calibre.test_build.BuildTest.test_chardet) ... ok [0.0 s] -test_dlls (calibre.test_build.BuildTest.test_dlls) ... skipped 'DLL loading needs testing only on windows (non-continuous integration)' [0.0 s] -test_executables (calibre.test_build.BuildTest.test_executables) ... skipped 'Only makes sense to test executables in frozen builds' [0.0 s] -test_feedparser (calibre.test_build.BuildTest.test_feedparser) ... ok [0.0 s] -test_ffmpeg (calibre.test_build.BuildTest.test_ffmpeg) ... ok [0.0 s] -test_file_dialog_helper (calibre.test_build.BuildTest.test_file_dialog_helper) ... skipped 'File dialog helper only used on windows (non-continuous-integration)' [0.0 s] -test_fonttools (calibre.test_build.BuildTest.test_fonttools) ... ok [0.0 s] -test_fsevents (calibre.test_build.BuildTest.test_fsevents) ... skipped 'FSEvents only present on OS X' [0.0 s] -test_html2text (calibre.test_build.BuildTest.test_html2text) ... ok [0.0 s] -test_html5_parser (calibre.test_build.BuildTest.test_html5_parser) ... ok [0.0 s] -test_html5lib (calibre.test_build.BuildTest.test_html5lib) ... ok [0.0 s] -test_hunspell (calibre.test_build.BuildTest.test_hunspell) ... ok [0.0 s] -test_imaging (calibre.test_build.BuildTest.test_imaging) ... ok [0.0 s] -test_loaders (calibre.test_build.BuildTest.test_loaders) ... ok [0.0 s] -test_lxml (calibre.test_build.BuildTest.test_lxml) ... ok [0.0 s] -test_lzma (calibre.test_build.BuildTest.test_lzma) ... ok [0.0 s] -test_markdown (calibre.test_build.BuildTest.test_markdown) ... ok [0.0 s] -test_msgpack (calibre.test_build.BuildTest.test_msgpack) ... ok [0.1 s] -test_netifaces (calibre.test_build.BuildTest.test_netifaces) ... ok [0.0 s] -test_openssl (calibre.test_build.BuildTest.test_openssl) ... ok [0.0 s] -test_plugins (calibre.test_build.BuildTest.test_plugins) ... ok [0.0 s] -test_podofo (calibre.test_build.BuildTest.test_podofo) ... ok [0.0 s] -test_psutil (calibre.test_build.BuildTest.test_psutil) ... ok [0.0 s] -test_pychm (calibre.test_build.BuildTest.test_pychm) ... ok [0.0 s] -test_pycryptodome (calibre.test_build.BuildTest.test_pycryptodome) ... ok [0.0 s] -test_regex (calibre.test_build.BuildTest.test_regex) ... ok [0.0 s] -test_speech_dispatcher (calibre.test_build.BuildTest.test_speech_dispatcher) ... ok [0.0 s] -test_sqlite (calibre.test_build.BuildTest.test_sqlite) ... ok [0.0 s] -test_terminal (calibre.test_build.BuildTest.test_terminal) ... ok [0.0 s] -test_tinycss_tokenizer (calibre.test_build.BuildTest.test_tinycss_tokenizer) ... ok [0.0 s] -test_unrar (calibre.test_build.BuildTest.test_unrar) ... skipped 'Module unrardll is missing' [0.0 s] -test_winutil (calibre.test_build.BuildTest.test_winutil) ... skipped 'winutil is windows only' [0.0 s] -test_wpd (calibre.test_build.BuildTest.test_wpd) ... skipped 'WPD is windows only' [0.0 s] -test_zeroconf (calibre.test_build.BuildTest.test_zeroconf) ... ok [0.0 s] -test_zstd (calibre.test_build.BuildTest.test_zstd) ... ok [0.0 s] - -Slowest tests: calibre.srv.tests.http.TestHTTP.test_http_basic [60.2 s] calibre.utils.run_tests.TestImports.test_import_of_all_python_modules [4.0 s] calibre.db.tests.fts_api.FTSAPITest.test_fts_search [2.7 s] - ----------------------------------------------------------------------- -Ran 336 tests in 122.000s - -OK (skipped=10) -env TZ=UTC CI=true python3.13 setup.py test --test-name=ajax_book --exclude-test-name=fts_pool --exclude-test-name=piper --exclude-test-name=dbus --exclude-test-name=recipe_browser_qt --exclude-test-name=recipe_browser_webengine -::group::test - -* -* Running test -* - -test_ajax_book (calibre.srv.tests.ajax.ContentTest.test_ajax_book) -Test /ajax/book ... calibre server listening on 127.0.0.1:36957 -ok [0.3 s] + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [29.1 s] +test_fts_to_text (calibre.db.tests.fts_api.FTSAPITest.test_fts_to_text) ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [0.7 s] +test_fts_triggers (calibre.db.tests.fts_api.FTSAPITest.test_fts_triggers) ... ok [1.1 s] +test_annotations (calibre.db.tests.writing.WritingTest.test_annotations) +Test handling of annotations ... ok [0.8 s] +test_backup (calibre.db.tests.writing.WritingTest.test_backup) +Test the automatic backup of changed metadata ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [2.7 s] +test_changed_events (calibre.db.tests.writing.WritingTest.test_changed_events) ... ok [0.8 s] +test_composite_cache (calibre.db.tests.writing.WritingTest.test_composite_cache) +Test that the composite field cache is properly invalidated on writes ... ok [1.0 s] +test_conversion_options (calibre.db.tests.writing.WritingTest.test_conversion_options) +Test saving of conversion options ... ok [0.6 s] +test_dirtied (calibre.db.tests.writing.WritingTest.test_dirtied) +Test the setting of the dirtied flag and the last_modified column ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [0.8 s] +test_dump_and_restore (calibre.db.tests.writing.WritingTest.test_dump_and_restore) +Test roundtripping the db through SQL ... get_categories: item Unknown is not in authors list! +ok [0.9 s] +test_fix_case_duplicates (calibre.db.tests.writing.WritingTest.test_fix_case_duplicates) +Test fixing of databases that have items in is_many fields that differ only by case ... ok [1.0 s] +test_link_maps (calibre.db.tests.writing.WritingTest.test_link_maps) ... ok [1.1 s] +test_many_many_basic (calibre.db.tests.writing.WritingTest.test_many_many_basic) +Test the different code paths for writing to a many-many field ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [1.2 s] +test_many_one_basic (calibre.db.tests.writing.WritingTest.test_many_one_basic) +Test the different code paths for writing to a many-one field ... ok [0.7 s] +test_one_one (calibre.db.tests.writing.WritingTest.test_one_one) +Test setting of values in one-one fields ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [5.3 s] +test_preferences (calibre.db.tests.writing.WritingTest.test_preferences) +Test getting and setting of preferences, especially with mutable objects ... ok [0.4 s] +test_remove_items (calibre.db.tests.writing.WritingTest.test_remove_items) +Test removal of many-(many,one) items ... ok [1.0 s] +test_rename_items (calibre.db.tests.writing.WritingTest.test_rename_items) +Test renaming of many-(many,one) items ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [1.3 s] +test_set_author_data (calibre.db.tests.writing.WritingTest.test_set_author_data) ... ok [0.8 s] +test_set_cover (calibre.db.tests.writing.WritingTest.test_set_cover) +Test setting of cover ... ok [1.0 s] +test_set_metadata (calibre.db.tests.writing.WritingTest.test_set_metadata) +Test setting of metadata ... ok [1.2 s] +test_websocket_basic (calibre.srv.tests.web_sockets.WebSocketTest.test_websocket_basic) +Test basic interaction with the websocket server ... calibre server listening on 127.0.0.1:34659 +Too large control frame from client +RSV bits set in frame from client +RSV bits set in frame from client +RSV bits set in frame from client +RSV bits set in frame from client +RSV bits set in frame from client +RSV bits set in frame from client +Unknown OPCODE from client: 3 +Unknown OPCODE from client: 4 +Unknown OPCODE from client: 5 +Unknown OPCODE from client: 6 +Unknown OPCODE from client: 7 +Unknown OPCODE from client: 11 +Unknown OPCODE from client: 12 +Unknown OPCODE from client: 13 +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Unknown OPCODE from client: 14 +Unknown OPCODE from client: 15 +Fragmented control frame from client +Fragmented control frame from client +Too large control frame from client +Client sent continuation frame with no message to continue +Client sent continuation frame with no message to continue +Client sent continuation frame with no message to continue +Client sent continuation frame with non-zero opcode +Client sent undecodeable UTF-8 +Client sent undecodeable UTF-8 +Client sent undecodeable UTF-8 +Client sent undecodeable UTF-8 +ok [0.4 s] +test_websocket_perf (calibre.srv.tests.web_sockets.WebSocketTest.test_websocket_perf) ... calibre server listening on 127.0.0.1:36615 +ok [1.5 s] +test_library_id_construction (calibre.srv.tests.routes.TestRouter.test_library_id_construction) ... ok [0.0 s] +test_route_construction (calibre.srv.tests.routes.TestRouter.test_route_construction) +Test route construction ... ok [0.0 s] +test_route_finding (calibre.srv.tests.routes.TestRouter.test_route_finding) +Test route finding ... ok [0.0 s] +test_basic_css_transforms (calibre.srv.tests.fast_css_transform.TestTransform.test_basic_css_transforms) ... ok [0.0 s] +test_counting_chars_in_elems (calibre.srv.tests.fast_css_transform.TestTransform.test_counting_chars_in_elems) ... ok [0.0 s] +test_number_parsing (calibre.srv.tests.fast_css_transform.TestTransform.test_number_parsing) ... ok [0.0 s] +test_char_count (calibre.srv.tests.content.ContentTest.test_char_count) ... ok [0.6 s] +test_get (calibre.srv.tests.content.ContentTest.test_get) +Test /get ... calibre server listening on 127.0.0.1:42555 +ok [1.6 s] +test_html_as_json (calibre.srv.tests.content.ContentTest.test_html_as_json) ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [0.8 s] +test_last_read_cache (calibre.srv.tests.content.ContentTest.test_last_read_cache) ... ok [0.7 s] +test_static (calibre.srv.tests.content.ContentTest.test_static) +Test serving of static content ... calibre server listening on 127.0.0.1:41059 +ok [1.0 s] +test_android_auth_workaround (calibre.srv.tests.auth.TestAuth.test_android_auth_workaround) +Test authentication workaround for Android ... calibre server listening on 127.0.0.1:41679 +ok [0.2 s] +test_basic_auth (calibre.srv.tests.auth.TestAuth.test_basic_auth) +Test HTTP Basic auth ... calibre server listening on 127.0.0.1:35453 +ok [0.2 s] +test_digest_auth (calibre.srv.tests.auth.TestAuth.test_digest_auth) +Test HTTP Digest auth ... calibre server listening on 127.0.0.1:41079 +ok [0.4 s] +test_fail_ban (calibre.srv.tests.auth.TestAuth.test_fail_ban) ... calibre server listening on 127.0.0.1:32889 +ok [0.7 s] +test_library_restrictions (calibre.srv.tests.auth.TestAuth.test_library_restrictions) ... ok [0.2 s] +test_ajax_categories (calibre.srv.tests.ajax.ContentTest.test_ajax_categories) +Test /ajax/categories and /ajax/search ... calibre server listening on 127.0.0.1:36557 +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [0.9 s] +test_srv_add_book (calibre.srv.tests.ajax.ContentTest.test_srv_add_book) ... calibre server listening on 127.0.0.1:41681 +ok [0.9 s] +test_srv_restrictions (calibre.srv.tests.ajax.ContentTest.test_srv_restrictions) +Test that virtual lib. + search restriction works on all end points ... calibre server listening on 127.0.0.1:44019 +ok [0.9 s] +test_accept_encoding (calibre.srv.tests.http.TestHTTP.test_accept_encoding) +Test parsing of Accept-Encoding ... ok [0.0 s] +test_accept_language (calibre.srv.tests.http.TestHTTP.test_accept_language) +Test parsing of Accept-Language ... calibre server listening on 127.0.0.1:40813 +ok [0.3 s] +test_header_parsing (calibre.srv.tests.http.TestHTTP.test_header_parsing) +Test parsing of HTTP headers ... ok [0.0 s] +test_http_basic (calibre.srv.tests.http.TestHTTP.test_http_basic) +Test basic HTTP protocol conformance ... calibre server listening on 127.0.0.1:41307 +Unhandled exception in state: State: _job_done Client: 127.0.0.1:53190 Request: GET /test/ HTTP/1.1 +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 651, in tick + conn.handle_event(event) + ~~~~~~~~~~~~~~~~~^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 365, in _job_done + self.job_done(*event) + ~~~~~~~~~~~~~^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/http_response.py", line 494, in job_done + reraise(etype, e, tb) + ~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/polyglot/builtins.py", line 61, in reraise + raise value + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/pool.py", line 33, in run + result = func() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/http_response.py", line 454, in run_request_handler + result = self.request_handler(data) + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/tests/http.py", line 203, in + server.change_handler(lambda data:1/0) + ~^~ +ZeroDivisionError: division by zero + +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +ok [60.4 s] +test_http_response (calibre.srv.tests.http.TestHTTP.test_http_response) +Test HTTP protocol responses ... calibre server listening on 127.0.0.1:45677 +ok [0.5 s] +test_range_parsing (calibre.srv.tests.http.TestHTTP.test_range_parsing) +Test parsing of Range header ... ok [0.0 s] +test_static_generation (calibre.srv.tests.http.TestHTTP.test_static_generation) +Test static generation ... calibre server listening on 127.0.0.1:44537 +ok [0.2 s] +test_bonjour (calibre.srv.tests.loop.LoopTest.test_bonjour) +Test advertising via BonJour ... skipped 'Disabled as it is failing on the build server, need to investigate' [0.0 s] +test_dual_stack (calibre.srv.tests.loop.LoopTest.test_dual_stack) ... calibre server listening on [::]:39047 +ok [0.2 s] +test_fallback_interface (calibre.srv.tests.loop.LoopTest.test_fallback_interface) +Test falling back to default interface ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +Failed to bind to 1.1.1.1 with error: No socket could be created -- (('1.1.1.1', 0): [Errno 99] Cannot assign requested address). Trying to bind to the default interface: 127.0.1.1 instead +calibre server listening on 127.0.1.1:46599 +ok [1.1 s] +test_jobs_manager (calibre.srv.tests.loop.LoopTest.test_jobs_manager) +Test the jobs manager ... ok [1.7 s] +test_log_rotation (calibre.srv.tests.loop.LoopTest.test_log_rotation) +Test log rotation ... ok [0.0 s] +test_monotonic (calibre.srv.tests.loop.LoopTest.test_monotonic) +Test the monotonic() clock ... ok [0.1 s] +test_plugins (calibre.srv.tests.loop.LoopTest.test_plugins) +Test plugin semantics ... calibre server listening on 127.0.0.1:41641 +ok [0.1 s] +test_ring_buffer (calibre.srv.tests.loop.LoopTest.test_ring_buffer) +Test the ring buffer used for reads ... ok [0.0 s] +test_socket_activation (calibre.srv.tests.loop.LoopTest.test_socket_activation) +Test socket activation ... calibre server listening on 127.0.0.1:56731 +ok [0.2 s] +test_ssl (calibre.srv.tests.loop.LoopTest.test_ssl) +Test serving over SSL ... Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 574, in loop_while_more_available + has_more = do_one() + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/cache.py", line 547, in do_one + self.backend.remove_dirty_fts(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 1099, in remove_dirty_fts + return self.fts.remove_dirty(book_id, fmt) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/fts/connect.py", line 87, in remove_dirty + conn.execute('DELETE FROM fts_db.dirtied_formats WHERE book=? AND format=?', (book_id, fmt.upper())) + ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/db/backend.py", line 413, in execute + return cursor.execute(sql, bindings) + ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^ + File "src/cursor.c", line 172, in resetcursor +apsw.ReadOnlyError: ReadOnlyError: attempt to write a readonly database +calibre server listening on 127.0.0.1:33103 +ok [1.4 s] +test_workers (calibre.srv.tests.loop.LoopTest.test_workers) +Test worker semantics ... calibre server listening on 127.0.0.1:38041 +calibre server listening on 127.0.0.1:33945 +Failed to shutdown 1 workers in ThreadPool cleanly +ServerWorker failed to notify server on job completion +Traceback (most recent call last): + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/pool.py", line 41, in run + self.notify_server() + ~~~~~~~~~~~~~~~~~~^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 695, in job_completed + self.write_to_control(JOB_DONE) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "/build/reproducible-path/calibre-7.26.0+ds/src/calibre/srv/loop.py", line 688, in write_to_control + self.control_in.write(what) + ~~~~~~~~~~~~~~~~~~~~~^^^^^^ +ValueError: write to closed file + +ok [0.4 s] +test_7z (calibre.test_build.BuildTest.test_7z) ... ok [0.2 s] +test_apsw (calibre.test_build.BuildTest.test_apsw) ... ok [0.0 s] +test_bs4 (calibre.test_build.BuildTest.test_bs4) ... ok [0.0 s] +test_certgen (calibre.test_build.BuildTest.test_certgen) ... ok [0.3 s] +test_chardet (calibre.test_build.BuildTest.test_chardet) ... ok [0.0 s] +test_dlls (calibre.test_build.BuildTest.test_dlls) ... skipped 'DLL loading needs testing only on windows (non-continuous integration)' [0.0 s] +test_executables (calibre.test_build.BuildTest.test_executables) ... skipped 'Only makes sense to test executables in frozen builds' [0.0 s] +test_feedparser (calibre.test_build.BuildTest.test_feedparser) ... ok [0.0 s] +test_ffmpeg (calibre.test_build.BuildTest.test_ffmpeg) ... ok [0.1 s] +test_file_dialog_helper (calibre.test_build.BuildTest.test_file_dialog_helper) ... skipped 'File dialog helper only used on windows (non-continuous-integration)' [0.0 s] +test_fonttools (calibre.test_build.BuildTest.test_fonttools) ... ok [0.0 s] +test_fsevents (calibre.test_build.BuildTest.test_fsevents) ... skipped 'FSEvents only present on OS X' [0.0 s] +test_html2text (calibre.test_build.BuildTest.test_html2text) ... ok [0.0 s] +test_html5_parser (calibre.test_build.BuildTest.test_html5_parser) ... ok [0.0 s] +test_html5lib (calibre.test_build.BuildTest.test_html5lib) ... ok [0.0 s] +test_hunspell (calibre.test_build.BuildTest.test_hunspell) ... ok [0.1 s] +test_imaging (calibre.test_build.BuildTest.test_imaging) ... ok [0.1 s] +test_loaders (calibre.test_build.BuildTest.test_loaders) ... ok [0.0 s] +test_lxml (calibre.test_build.BuildTest.test_lxml) ... ok [0.0 s] +test_lzma (calibre.test_build.BuildTest.test_lzma) ... ok [0.0 s] +test_markdown (calibre.test_build.BuildTest.test_markdown) ... ok [0.0 s] +test_msgpack (calibre.test_build.BuildTest.test_msgpack) ... ok [0.3 s] +test_netifaces (calibre.test_build.BuildTest.test_netifaces) ... ok [0.0 s] +test_openssl (calibre.test_build.BuildTest.test_openssl) ... ok [0.1 s] +test_plugins (calibre.test_build.BuildTest.test_plugins) ... ok [0.0 s] +test_podofo (calibre.test_build.BuildTest.test_podofo) ... ok [0.0 s] +test_psutil (calibre.test_build.BuildTest.test_psutil) ... ok [0.0 s] +test_pychm (calibre.test_build.BuildTest.test_pychm) ... ok [0.0 s] +test_pycryptodome (calibre.test_build.BuildTest.test_pycryptodome) ... ok [0.0 s] +test_regex (calibre.test_build.BuildTest.test_regex) ... ok [0.0 s] +test_speech_dispatcher (calibre.test_build.BuildTest.test_speech_dispatcher) ... ok [0.0 s] +test_sqlite (calibre.test_build.BuildTest.test_sqlite) ... ok [0.0 s] +test_terminal (calibre.test_build.BuildTest.test_terminal) ... ok [0.0 s] +test_tinycss_tokenizer (calibre.test_build.BuildTest.test_tinycss_tokenizer) ... ok [0.0 s] +test_unrar (calibre.test_build.BuildTest.test_unrar) ... skipped 'Module unrardll is missing' [0.0 s] +test_winutil (calibre.test_build.BuildTest.test_winutil) ... skipped 'winutil is windows only' [0.0 s] +test_wpd (calibre.test_build.BuildTest.test_wpd) ... skipped 'WPD is windows only' [0.0 s] +test_zeroconf (calibre.test_build.BuildTest.test_zeroconf) ... ok [0.1 s] +test_zstd (calibre.test_build.BuildTest.test_zstd) ... ok [0.0 s] + +Slowest tests: calibre.srv.tests.http.TestHTTP.test_http_basic [60.4 s] calibre.db.tests.fts_api.FTSAPITest.test_fts_search [29.1 s] calibre.utils.run_tests.TestImports.test_import_of_all_python_modules [14.2 s] + +---------------------------------------------------------------------- +Ran 336 tests in 218.778s + +OK (skipped=10) +env TZ=UTC CI=true python3.13 setup.py test --test-name=ajax_book --exclude-test-name=fts_pool --exclude-test-name=piper --exclude-test-name=dbus --exclude-test-name=recipe_browser_qt --exclude-test-name=recipe_browser_webengine +::group::test + +* +* Running test +* + +test_ajax_book (calibre.srv.tests.ajax.ContentTest.test_ajax_book) +Test /ajax/book ... calibre server listening on 127.0.0.1:45611 +ok [0.8 s] ---------------------------------------------------------------------- -Ran 1 test in 0.252s +Ran 1 test in 0.834s OK env TZ=UTC CI=true python3.13 setup.py test --test-name=qt --exclude-test-name=fts_pool --exclude-test-name=piper --exclude-test-name=dbus --exclude-test-name=recipe_browser_qt --exclude-test-name=recipe_browser_webengine @@ -14433,10 +84934,10 @@ Path override failed for key base::DIR_APP_DICTIONARIES and path '/usr/bin/qtwebengine_dictionaries' Path override failed for key base::DIR_APP_DICTIONARIES and path '/usr/lib/qt6/libexec/qtwebengine_dictionaries' Path override failed for key base::DIR_APP_DICTIONARIES and path '/usr/lib/qt6/libexec/qtwebengine_dictionaries' -ok [2.9 s] +ok [7.5 s] ---------------------------------------------------------------------- -Ran 1 test in 2.913s +Ran 1 test in 7.472s OK make[3]: Leaving directory '/build/reproducible-path/calibre-7.26.0+ds' @@ -14466,7 +84967,7 @@ Building 29 extensions ####### Building headless QPA plugin ####### -* build took 0.1 seconds +* build took 0.5 seconds * * Running gui @@ -14511,7 +85012,7 @@ calibre successfully installed. You can start it by running the command calibre -* install took 4.3 seconds +* install took 29.5 seconds rm debian/tmp/usr/share/calibre/calibre-portable.* rm debian/tmp/usr/lib/python*/site-packages/init_calibre.py rmdir debian/tmp/usr/share/desktop-directories @@ -14591,12 +85092,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/2299993/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/3280495 and its subdirectories -I: Current time: Sat Mar 28 10:17:49 -12 2026 -I: pbuilder-time-stamp: 1774736269 +I: removing directory /srv/workspace/pbuilder/2299993 and its subdirectories +I: Current time: Mon Feb 24 06:10:44 +14 2025 +I: pbuilder-time-stamp: 1740327044