Subject: [bug#53836] [PATCH 5/6] gnu: calibre: Update to 5.36.0.

From: Brendan Tildesley <[email-masked]>
Date: Mon, 7 Feb 2022 13:05:41 +1100

* gnu/packages/ebook.scm (calibre): Update to 5.36.0.
Remove no longer needed zeroconf patch.
[inputs]: Use new inputs style. Remove python-dbus, python-dukpy,
python-pycryptodome. Add python-jeepney, libstemmer.
* gnu/packages/patches/calibre-fix-zeroconf.patch: Delete patch.
* gnu/local.mk: Remove reference to patch.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/ebook.scm                        | 103 +++++++++---------
 .../patches/calibre-fix-zeroconf.patch        |  38 -------
 3 files changed, 51 insertions(+), 91 deletions(-)
 delete mode 100644 gnu/packages/patches/calibre-fix-zeroconf.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 3ae66803f2..06f906e75e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -918,7 +918,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/cabal-install-ghc8.10.patch		\
   %D%/packages/patches/cairo-CVE-2018-19876.patch		\
   %D%/packages/patches/cairo-CVE-2020-35492.patch		\
-  %D%/packages/patches/calibre-fix-zeroconf.patch		\
   %D%/packages/patches/calibre-no-updates-dialog.patch		\
   %D%/packages/patches/calibre-remove-test-sqlite.patch		\
   %D%/packages/patches/calibre-remove-test-unrar.patch		\
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 0875dae190..2cc1ae8ddb 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -56,6 +56,7 @@ (define-module (gnu packages ebook)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
   #:use-module (gnu packages javascript)
+  #:use-module (gnu packages language)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages music)
@@ -120,7 +121,7 @@ (define-public python-pychm
 (define-public calibre
   (package
     (name "calibre")
-    (version "5.21.0")
+    (version "5.36.0")
     (source
       (origin
         (method url-fetch)
@@ -129,7 +130,7 @@ (define-public calibre
                             version ".tar.xz"))
         (sha256
          (base32
-          "0mq2w8blq6ykaml812axakwkqcw85qcpfwijdikn7kvbrhnnp2s5"))
+          "1c036qmn7lxq0899c2xzzs6whz7z0557frnfqisbvfxa13b2sadk"))
         (modules '((guix build utils)))
         (snippet
           '(begin
@@ -145,8 +146,7 @@ (define-public calibre
              (delete-file "resources/calibre-portable.bat")
              (delete-file "resources/calibre-portable.sh")
              #t))
-        (patches (search-patches "calibre-fix-zeroconf.patch"
-                                 "calibre-no-updates-dialog.patch"
+        (patches (search-patches "calibre-no-updates-dialog.patch"
                                  "calibre-remove-test-sqlite.patch" ; TODO: fix test.
                                  "calibre-remove-test-unrar.patch"))))
     (build-system python-build-system)
@@ -157,54 +157,53 @@ (define-public calibre
            python-pyqt-builder
            xdg-utils))
     (inputs
-     `(("fontconfig" ,fontconfig)
-       ("font-liberation" ,font-liberation)
-       ("glib" ,glib)
-       ("hunspell" ,hunspell)
-       ("hyphen" ,hyphen)
-       ("icu4c" ,icu4c)
-       ("libmtp" ,libmtp)
-       ("libpng" ,libpng)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libjxr" ,libjxr)
-       ("libusb" ,libusb)
-       ("openssl" ,openssl)
-       ("optipng" ,optipng)
-       ("podofo" ,podofo)
-       ("poppler" ,poppler)
-       ("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-without-qtwebkit" ,python-pyqt-without-qtwebkit)
-       ("python-pyqtwebengine" ,python-pyqtwebengine)
-       ("python-regex" ,python-regex)
-       ("python-speechd" ,speech-dispatcher)
-       ("python-zeroconf" ,python-zeroconf)
-       ("qtwebengine" ,qtwebengine)
-       ("sqlite" ,sqlite)))
+     (list fontconfig
+           font-liberation
+           glib
+           hunspell
+           hyphen
+           icu4c
+           libmtp
+           libpng
+           libjpeg-turbo
+           libjxr
+           libstemmer
+           libusb
+           openssl
+           optipng
+           podofo
+           poppler
+           python-apsw
+           python-beautifulsoup4
+           python-cchardet
+           python-css-parser
+           python-cssselect
+           python-dateutil
+           python-dnspython-1.16
+           python-feedparser
+           python-html2text
+           python-html5-parser
+           python-html5lib
+           python-jeepney
+           python-lxml
+           python-markdown
+           python-mechanize
+           ;; python-msgpack is needed for the network content server to work.
+           python-msgpack
+           python-netifaces
+           python-odfpy
+           python-pillow
+           python-psutil
+           python-py7zr
+           python-pychm
+           python-pygments
+           python-pyqt-without-qtwebkit
+           python-pyqtwebengine
+           python-regex
+           speech-dispatcher
+           python-zeroconf
+           qtwebengine
+           sqlite))
     (arguments
      `(;; Calibre is using setuptools by itself, but the setup.py is not
        ;; compatible with the shim wrapper (taken from pip) we are using.
diff --git a/gnu/packages/patches/calibre-fix-zeroconf.patch b/gnu/packages/patches/calibre-fix-zeroconf.patch
deleted file mode 100644
index d7d0f18667..0000000000
--- a/gnu/packages/patches/calibre-fix-zeroconf.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Fix a build failure when upgrading zeroconf from 0.28.8 to 0.38.1:
-
-https://issues.guix.gnu.org/53247
-
-Patch copied from Gentoo:
-
-https://bugs.gentoo.org/800233#c5
-
-diff --color -Naru a/src/calibre/devices/smart_device_app/driver.py b/src/calibre/devices/smart_device_app/driver.py
---- a/src/calibre/devices/smart_device_app/driver.py	2021-08-08 08:32:03.104016444 +0200
-+++ b/src/calibre/devices/smart_device_app/driver.py	2021-08-08 08:33:30.699018403 +0200
-@@ -2040,13 +2040,6 @@
- # Function to monkeypatch zeroconf to remove the 15 character name length restriction.
- # Copied from https://github.com/jstasiak/python-zeroconf version 0.28.1
- 
--
--from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
--                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE,
--                      _HAS_ASCII_CONTROL_CHARS,
--                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN)
--
--
- def service_type_name(type_: str, *, allow_underscores: bool = False) -> str:
-     """
-     Validate a fully qualified service name, instance or subtype. [rfc6763]
-@@ -2087,6 +2080,12 @@
-     :param type_: Type, SubType or service name to validate
-     :return: fully qualified service name (eg: _http._tcp.local.)
-     """
-+
-+    from zeroconf import (BadTypeInNameException, _HAS_A_TO_Z,
-+                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN_UNDERSCORE,
-+                      _HAS_ASCII_CONTROL_CHARS,
-+                      _HAS_ONLY_A_TO_Z_NUM_HYPHEN)
-+
-     if not (type_.endswith('._tcp.local.') or type_.endswith('._udp.local.')):
-         raise BadTypeInNameException("Type '%s' must end with '._tcp.local.' or '._udp.local.'" % type_)
- 
-- 
2.34.0