calibre: rebuild against qt5-5.13.2

- backport patch to fix ebook-viewer
This commit is contained in:
bra1nwave 2019-11-05 17:54:27 +01:00 committed by Piraty
parent 6fa6fd66fd
commit f3123a55ab
2 changed files with 174 additions and 3 deletions

View file

@ -0,0 +1,166 @@
From 2da7dd741fcebd3af89f77bc3fc4f52fe90940de Mon Sep 17 00:00:00 2001
From: Kovid Goyal <kovid@kovidgoyal.net>
Date: Sat, 2 Nov 2019 07:18:35 +0530
Subject: [PATCH 1/4] Better error message on AJAX call failure
(cherry picked from commit 8b7b9427bd71f48acf9dc766c976bb3f5ce5e357)
---
src/pyj/ajax.pyj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pyj/ajax.pyj b/src/pyj/ajax.pyj
index 7a8c453e5e..3a43984903 100644
--- src/pyj/ajax.pyj
+++ src/pyj/ajax.pyj
@@ -81,7 +81,7 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
rtext = xhr.responseText or ''
except:
rtext = ''
- xhr.error_html = str.format(_('Failed to communicate with "{}", with status: [{}] {}<br><br>{}'), xhr.request_path, xhr.status, xhr.statusText, rtext[:200])
+ xhr.error_html = str.format(_('Failed to communicate with "{}", with status: [{} ({})] {}<br><br>{}'), xhr.request_path, xhr.status, event, xhr.statusText, rtext[:200])
def progress_callback(ev):
if ev.lengthComputable:
--
2.23.0
From fc63678168b5bbb8c48f1930535e1d2bfb90c13f Mon Sep 17 00:00:00 2001
From: Kovid Goyal <kovid@kovidgoyal.net>
Date: Sat, 2 Nov 2019 07:24:10 +0530
Subject: [PATCH 2/4] Workaround for AJAX breakage on Qt 5.13.2
Fixes #1850975 [qt5-webengine 5.13.2 breaks ebook-viewer](https://bugs.launchpad.net/calibre/+bug/1850975)
(cherry picked from commit 6cccd18be81133ce57c885ecad9e012a16a3fe8b)
---
src/pyj/ajax.pyj | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/pyj/ajax.pyj b/src/pyj/ajax.pyj
index 3a43984903..5a038eaed5 100644
--- src/pyj/ajax.pyj
+++ src/pyj/ajax.pyj
@@ -102,6 +102,9 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
is_network_error = ev if end_type is 'error' else False
if xhr.status is not ok_code and end_type is 'load':
end_type = 'error'
+ if xhr.status is ok_code and end_type is 'error':
+ # this apparently happens on Qt 5.13.2
+ end_type = 'load'
if end_type is not 'load':
set_error(end_type, is_network_error)
on_complete(end_type, xhr, ev)
--
2.23.0
From 71223eb8a2ace02473ada1568f123d2bd5af3891 Mon Sep 17 00:00:00 2001
From: Kovid Goyal <kovid@kovidgoyal.net>
Date: Sun, 3 Nov 2019 07:12:25 +0530
Subject: [PATCH 3/4] Also reset headers/footers when resetting interface
And work Qt 5.13.2 bug in more places
(cherry picked from commit a179632356579a954eccf2d23112f061e8187a68)
[Eli: disentangled from unrelated changes relying on commit 4e98478013c7e23a6333cb27cc09976667c77d1f]
---
src/pyj/ajax.pyj | 10 +++++++---
src/pyj/viewer-main.pyj | 5 ++++-
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/pyj/ajax.pyj b/src/pyj/ajax.pyj
index 5a038eaed5..9337c6ad62 100644
--- src/pyj/ajax.pyj
+++ src/pyj/ajax.pyj
@@ -47,6 +47,12 @@ def absolute_path(path):
return path
+def workaround_qt_bug(xhr, end_type, ok_code=200):
+ if end_type is 'error' and xhr.status is ok_code:
+ end_type = 'load'
+ return end_type
+
+
def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', query=None, timeout=None, ok_code=200, progress_totals_needed=True):
# Run an AJAX request. on_complete must be a function that accepts three
# arguments: end_type, xhr, ev where end_type is one of 'abort', 'error',
@@ -102,9 +108,7 @@ def ajax(path, on_complete, on_progress=None, bypass_cache=True, method='GET', q
is_network_error = ev if end_type is 'error' else False
if xhr.status is not ok_code and end_type is 'load':
end_type = 'error'
- if xhr.status is ok_code and end_type is 'error':
- # this apparently happens on Qt 5.13.2
- end_type = 'load'
+ end_type = workaround_qt_bug(xhr, end_type, ok_code)
if end_type is not 'load':
set_error(end_type, is_network_error)
on_complete(end_type, xhr, ev)
diff --git a/src/pyj/viewer-main.pyj b/src/pyj/viewer-main.pyj
index 87c9d3e9a5..d7047386d9 100644
--- src/pyj/viewer-main.pyj
+++ src/pyj/viewer-main.pyj
@@ -7,7 +7,7 @@ from elementmaker import E
from gettext import gettext as _, install
import initialize # noqa: unused-import
-from ajax import ajax
+from ajax import ajax, workaround_qt_bug
from book_list.globals import set_session_data
from book_list.library_data import library_data
from book_list.theme import get_color
@@ -34,6 +34,7 @@ view = None
def file_received(name, file_data, proceed, end_type, xhr, ev):
+ end_type = workaround_qt_bug(xhr, end_type)
if end_type is 'abort':
return
if end_type is not 'load':
@@ -62,6 +63,7 @@ def get_file(book, name, proceed):
xhr.send()
def mathjax_file_received(name, proceed, end_type, xhr, ev):
+ end_type = workaround_qt_bug(xhr, end_type)
if end_type is 'abort':
return
if end_type is not 'load':
@@ -139,6 +141,7 @@ def show_error(title, msg, details):
def manifest_received(key, initial_cfi, initial_toc_node, pathtoebook, end_type, xhr, ev):
nonlocal book
+ end_type = workaround_qt_bug(xhr, end_type)
if end_type is 'load':
book = new_book(key, {})
data = xhr.response
--
2.23.0
From 461f2095d3a91cd1e81e3a853b3fc985c7ecbcd6 Mon Sep 17 00:00:00 2001
From: Kovid Goyal <kovid@kovidgoyal.net>
Date: Sun, 3 Nov 2019 07:16:17 +0530
Subject: [PATCH 4/4] Only use Qt bug workaround in the viewer
(cherry picked from commit c17411a39f9db0fe15455f6a0dd959ffe70087e5)
---
src/pyj/ajax.pyj | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pyj/ajax.pyj b/src/pyj/ajax.pyj
index 9337c6ad62..ec5c78cd1c 100644
--- src/pyj/ajax.pyj
+++ src/pyj/ajax.pyj
@@ -48,7 +48,7 @@ def absolute_path(path):
def workaround_qt_bug(xhr, end_type, ok_code=200):
- if end_type is 'error' and xhr.status is ok_code:
+ if end_type is 'error' and xhr.status is ok_code and window.navigator.userAgent.indexOf('calibre-viewer') is 0:
end_type = 'load'
return end_type
--
2.23.0

View file

@ -1,14 +1,13 @@
# Template file for 'calibre'
pkgname=calibre
version=4.2.0
revision=1
revision=2
build_style=python2-module
pycompile_dirs="/usr/lib/calibre/"
make_build_args="gui"
hostmakedepends="pkg-config python-BeautifulSoup4 python-Pillow python-PyQt5-svg
python-PyQt5-webengine python-apsw python-css-parser python-dateutil
python-devel python-html5-parser python-msgpack python-regex qt5-qmake
xdg-utils"
xdg-utils rapydscript-ng"
makedepends="glib-devel libchmlib-devel libinput-devel libmagick-devel libmtp-devel
libpodofo-devel libwmf-devel libxkbcommon-devel python-PyQt5-devel
qt5-devel sqlite-devel tslib-devel hunspell-devel"
@ -38,6 +37,12 @@ do_configure() {
-e "s/^Name=calibre/Name=Calibre/g"
}
do_build() {
python2 setup.py build
python2 setup.py gui
python2 setup.py rapydscript
}
do_install() {
vmkdir usr/share/zsh/site-functions