diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 5853ad0652..504171ca8b 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015, 2016 Andreas Enge ;;; Copyright © 2016, 2018 Efraim Flashner ;;; Copyright © 2016, 2017 Alex Griffin -;;; Copyright © 2017, 2019, 2020 Brendan Tildesley +;;; Copyright © 2017, 2019, 2020, 2021 Brendan Tildesley ;;; Copyright © 2017 Roel Janssen ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice ;;; Copyright © 2020 Marius Bakke @@ -58,10 +58,14 @@ (define-module (gnu packages ebook) #:use-module (gnu packages pdf) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-compression) + #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages serialization) + #:use-module (gnu packages speech) #:use-module (gnu packages sqlite) #:use-module (gnu packages time) #:use-module (gnu packages tls) @@ -111,7 +115,7 @@ (define-public python-pychm (define-public calibre (package (name "calibre") - (version "4.18.0") + (version "5.14.0") (source (origin (method url-fetch) @@ -120,7 +124,7 @@ (define-public calibre version ".tar.xz")) (sha256 (base32 - "0w9pcfvskjh4v00vjw3i6hzrafy863pgsmmqdx4lffip3p856brw")) + "0w8j9r9qa56r8gm9b10dwh8zrzqlv79s2br82jqg02lrnrbwwv0q")) (modules '((guix build utils))) (snippet '(begin @@ -132,8 +136,6 @@ (define-public calibre "")) ;; Remove unneeded resources. - (delete-file "resources/viewer.js") - (delete-file "resources/viewer.html") (delete-file "resources/mozilla-ca-certs.pem") (delete-file "resources/calibre-portable.bat") (delete-file "resources/calibre-portable.sh") @@ -145,57 +147,60 @@ (define-public calibre (native-inputs `(("pkg-config" ,pkg-config) ("qtbase" ,qtbase) ; for qmake - ("python2-flake8" ,python2-flake8) + ("python-flake8" ,python-flake8) + ("python-pyqt-builder" ,python-pyqt-builder) ("xdg-utils" ,xdg-utils))) (inputs - `(("chmlib" ,chmlib) - ("fontconfig" ,fontconfig) + `(("fontconfig" ,fontconfig) ("font-liberation" ,font-liberation) ("glib" ,glib) ("hunspell" ,hunspell) ("hyphen" ,hyphen) ("icu4c" ,icu4c) - ("js-mathjax" ,js-mathjax) ("libmtp" ,libmtp) ("libpng" ,libpng) + ("libjpeg" ,libjpeg-turbo) + ("libjxr" ,libjxr) ("libusb" ,libusb) ("openssl" ,openssl) ("optipng" ,optipng) ("podofo" ,podofo) ("poppler" ,poppler) - ("python" ,python-2) - ("python2-apsw" ,python2-apsw) - ("python2-beautifulsoup4" ,python2-beautifulsoup4) - ("python2-chardet" ,python2-chardet) - ("python2-cssselect" ,python2-cssselect) - ("python2-css-parser" ,python2-css-parser) - ("python2-dateutil" ,python2-dateutil) - ("python2-dbus" ,python2-dbus) - ("python2-dnspython" ,python2-dnspython-1.16) - ("python2-dukpy" ,python2-dukpy) - ("python2-feedparser" ,python2-feedparser) - ("python2-html2text" ,python2-html2text) - ("python2-html5-parser" ,python2-html5-parser) - ("python2-html5lib" ,python2-html5lib) - ("python2-lxml" ,python2-lxml) - ("python2-markdown" ,python2-markdown) - ("python2-mechanize" ,python2-mechanize) - ;; python2-msgpack is needed for the network content server to work. - ("python2-msgpack" ,python2-msgpack) - ("python2-netifaces" ,python2-netifaces) - ("python2-odfpy" ,python2-odfpy) - ("python2-pillow" ,python2-pillow) - ("python2-psutil" ,python2-psutil) - ("python2-pygments" ,python2-pygments) - ("python2-pyqtwebengine" ,python2-pyqtwebengine) - ("python2-pyqt" ,python2-pyqt) - ("python2-sip" ,python2-sip) - ("python2-regex" ,python2-regex) + ("python-apsw" ,python-apsw) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-cchardet" ,python-cchardet) + ("python-css-parser" ,python-css-parser) + ("python-cssselect" ,python-cssselect) + ("python-dateutil" ,python-dateutil) + ("python-dbus" ,python-dbus) + ("python-dnspython" ,python-dnspython-1.16) + ("python-dukpy" ,python-dukpy) + ("python-feedparser" ,python-feedparser) + ("python-html2text" ,python-html2text) + ("python-html5-parser" ,python-html5-parser) + ("python-html5lib" ,python-html5lib) + ("python-lxml" ,python-lxml) + ("python-markdown" ,python-markdown) + ("python-mechanize" ,python-mechanize) + ;; python-msgpack is needed for the network content server to work. + ("python-msgpack" ,python-msgpack) + ("python-netifaces" ,python-netifaces) + ("python-odfpy" ,python-odfpy) + ("python-pillow" ,python-pillow) + ("python-psutil" ,python-psutil) + ("python-py7zr" ,python-py7zr) + ("python-pychm" ,python-pychm) + ("python-pycryptodome" ,python-pycryptodome) + ("python-pygments" ,python-pygments) + ("python-pyqt" ,python-pyqt) + ("python-pyqtwebengine" ,python-pyqtwebengine) + ("python-regex" ,python-regex) + ("python-speechd" ,speech-dispatcher) + ("python-zeroconf" ,python-zeroconf) ("qtwebengine" ,qtwebengine) ("sqlite" ,sqlite))) (arguments - `(#:python ,python-2 - ;; Calibre is using setuptools by itself, but the setup.py is not + `(;; Calibre is using setuptools by itself, but the setup.py is not ;; compatible with the shim wrapper (taken from pip) we are using. #:use-setuptools? #f #:phases @@ -227,18 +232,27 @@ (define-public calibre (add-before 'build 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((podofo (assoc-ref inputs "podofo")) - (pyqt (assoc-ref inputs "python2-pyqt")) - (python-sip (assoc-ref inputs "python2-sip")) + (pyqt (assoc-ref inputs "python-pyqt")) + (python-sip (assoc-ref inputs "python-sip")) (out (assoc-ref outputs "out"))) - (substitute* "setup/build_environment.py" - (("= get_sip_dir\\(\\)") - (string-append "= '" pyqt "/share/sip'"))) - + (substitute* "setup/build.py" + (("\\[tool.sip.bindings.pictureflow\\]") + "[tool.sip.bindings.pictureflow] +tags = [\"WS_X11\"]") + (("\\[tool.sip.project\\]") + (string-append "[tool.sip.project] +sip-include-dirs = [\"" pyqt "/share/sip" "\"]"))) (substitute* "src/calibre/ebooks/pdf/pdftohtml.py" (("PDFTOHTML = 'pdftohtml'") (string-append "PDFTOHTML = \"" (assoc-ref inputs "poppler") "/bin/pdftohtml\""))) - + ;; get_exe_path looks in poppler's output for these binaries. Make + ;; it not do that. + (substitute* "src/calibre/utils/img.py" + (("get_exe_path..jpegtran..") (string-append "'" (which "jpegtran") "'")) + (("get_exe_path..cjpeg..") (string-append "'" (which "cjpeg") "'")) + (("get_exe_path..optipng..") (string-append "'" (which "optipng") "'")) + (("get_exe_path..JxrDecApp..") (string-append "'" (which "JxrDecApp") "'"))) ;; Calibre thinks we are installing desktop files into a home ;; directory, but here we butcher the script in to installing ;; to calibres /share directory. @@ -257,7 +271,6 @@ (define-public calibre "/share/fonts") "/tmp/.fonts") - (setenv "SIP_BIN" (string-append python-sip "/bin/sip")) (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo")) (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")) ;; This informs the tests we are a continuous integration @@ -268,13 +281,11 @@ (define-public calibre ;; fix it, so I'm not sure how to fix it. TODO: Fix test and remove this. (setenv "SKIP_QT_BUILD_TEST" "true") #t))) - (add-after 'build 'build-extra + (add-after 'install 'install-rapydscript (lambda* (#:key inputs #:allow-other-keys) - (invoke "python2" "setup.py" "mathjax""--system-mathjax" - "--path-to-mathjax" (string-append - (assoc-ref inputs "js-mathjax") - "/share/javascript/mathjax")) - (invoke "python2" "setup.py" "rapydscript") + ;; Unset so QtWebengine doesn't dump temporary files here. + (unsetenv "XDG_DATA_HOME") + (invoke "python" "setup.py" "rapydscript") #t)) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/patches/calibre-no-updates-dialog.patch b/gnu/packages/patches/calibre-no-updates-dialog.patch index 1d8d79660e..66ac913cb5 100644 --- a/gnu/packages/patches/calibre-no-updates-dialog.patch +++ b/gnu/packages/patches/calibre-no-updates-dialog.patch @@ -1,11 +1,17 @@ -Taken from debian. +From 19e8d7701c302b0eca4c638705a6db625352caa3 Mon Sep 17 00:00:00 2001 +From: Brendan Tildesley +Date: Thu, 25 Feb 2021 12:17:30 +1100 +Subject: [PATCH] Don't check for updates. -# Description: Disable update check by default. -Index: calibre/src/calibre/gui2/main.py -=================================================================== ---- calibre.orig/src/calibre/gui2/main.py 2014-02-02 10:41:28.470954623 +0100 -+++ calibre/src/calibre/gui2/main.py 2014-02-02 10:41:56.546954247 +0100 -@@ -37,8 +37,8 @@ +--- + src/calibre/gui2/main.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py +index 776f8bebfb..4302716d7e 100644 +--- a/src/calibre/gui2/main.py ++++ b/src/calibre/gui2/main.py +@@ -59,8 +59,8 @@ def option_parser(): help=_('Start minimized to system tray.')) parser.add_option('-v', '--verbose', default=0, action='count', help=_('Ignored, do not use. Present only for legacy reasons')) @@ -16,3 +22,5 @@ Index: calibre/src/calibre/gui2/main.py parser.add_option('--ignore-plugins', default=False, action='store_true', help=_('Ignore custom plugins, useful if you installed a plugin' ' that is preventing calibre from starting')) +-- +2.30.1 diff --git a/gnu/packages/patches/calibre-remove-test-sqlite.patch b/gnu/packages/patches/calibre-remove-test-sqlite.patch index 7bdd90874d..fc2b237ef2 100644 --- a/gnu/packages/patches/calibre-remove-test-sqlite.patch +++ b/gnu/packages/patches/calibre-remove-test-sqlite.patch @@ -1,20 +1,20 @@ -From a92e26359bd07743ab105819ed0b619e27e14017 Mon Sep 17 00:00:00 2001 +From d8225e83c3b73f0e0da73874910f50ca652f48cf Mon Sep 17 00:00:00 2001 From: Brendan Tildesley -Date: Sat, 27 Apr 2019 03:30:53 +1000 -Subject: [PATCH] Disable test_sqlite. +Date: Thu, 25 Feb 2021 00:48:00 +1100 +Subject: [PATCH] Remove test_sqlite --- src/calibre/test_build.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py -index 07bdffd3e5..740588c95b 100644 +index 0ab7aa0646..87fdfabd9a 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py -@@ -162,12 +162,6 @@ class BuildTest(unittest.TestCase): - au(x, 'strftime') - self.assertEqual(unicode_type(time.strftime(fmt.replace('%e', '%#d'), t)), x) - +@@ -273,12 +273,6 @@ def read_changes(): + m.close() + self.assertEqual(winutil.parse_cmdline('"c:\\test exe.exe" "some arg" 2'), ('c:\\test exe.exe', 'some arg', '2')) + - def test_sqlite(self): - import sqlite3 - conn = sqlite3.connect(':memory:') @@ -24,6 +24,5 @@ index 07bdffd3e5..740588c95b 100644 def test_apsw(self): import apsw conn = apsw.Connection(':memory:') --- -2.21.0 - +-- +2.30.1 diff --git a/gnu/packages/patches/calibre-remove-test-unrar.patch b/gnu/packages/patches/calibre-remove-test-unrar.patch index 4e5572d1a6..961cc3eba7 100644 --- a/gnu/packages/patches/calibre-remove-test-unrar.patch +++ b/gnu/packages/patches/calibre-remove-test-unrar.patch @@ -1,28 +1,26 @@ -Unrar contains security vulnerabilities and has thus been removed from Guix. -From a16f97b02bd8afd0ec05c471e156f631f2cc6eec Mon Sep 17 00:00:00 2001 +From 9edf67191cc3655480b6fd418247709ade930b1a Mon Sep 17 00:00:00 2001 From: Brendan Tildesley -Date: Tue, 26 Mar 2019 22:17:03 +1100 -Subject: [PATCH] Remove test_unrar. +Date: Thu, 25 Feb 2021 00:33:10 +1100 +Subject: [PATCH] Remove test_unrar --- src/calibre/test_build.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py -index d67afd20a6..709132ef17 100644 +index b37fb1bcfb..0ab7aa0646 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py -@@ -220,10 +220,6 @@ class BuildTest(unittest.TestCase): +@@ -369,10 +369,6 @@ def test_file_dialog_helper(self): from calibre.gui2.win_file_dialogs import test test() - + - def test_unrar(self): - from calibre.utils.unrar import test_basic - test_basic() - - @unittest.skipUnless(iswindows, 'WPD is windows only') - def test_wpd(self): - wpd = plugins['wpd'][0] --- -2.21.0 - + def test_7z(self): + from calibre.utils.seven_zip import test_basic + test_basic() +-- +2.30.1