guix-play/gnu/packages/ebook.scm
Brendan Tildesley 9b7dcc2703
gnu: calibre: Add missing dependencies.
* gnu/packages/ebook.scm (calibre)[inputs]: Add poppler, python2-dnspython,
and python2-pygments.
[arguments]: Remove old TODO comments. libwmf and psutil are no longer used.

Signed-off-by: Marius Bakke <mbakke@fastmail.com>
2017-05-19 23:49:21 +02:00

171 lines
7.2 KiB
Scheme

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Brendan Tildesley <brendan.tildesley@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages ebook)
#:use-module ((guix licenses) #:select (gpl3 lgpl2.1+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages databases)
#:use-module (gnu packages fonts)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gnome)
#:use-module (gnu packages glib)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages xorg))
(define-public chmlib
(package
(name "chmlib")
(version "0.40")
(source (origin
(method url-fetch)
(uri (string-append "http://www.jedrea.com/chmlib/chmlib-"
version ".tar.bz2"))
(sha256
(base32
"18zzb4x3z0d7fjh1x5439bs62dmgsi4c1pg3qyr7h5gp1i5xcj9l"))
(patches (search-patches "chmlib-inttypes.patch"))))
(build-system gnu-build-system)
(home-page "http://www.jedrea.com/chmlib/")
(synopsis "Library for CHM files")
(description "CHMLIB is a library for dealing with ITSS/CHM format files.")
(license lgpl2.1+)))
(define-public calibre
(package
(name "calibre")
(version "2.85.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://download.calibre-ebook.com/"
version "/calibre-"
version ".tar.xz"))
(sha256
(base32
"1g8s0kp1gj05yysfgqpp2lgrxvzc0fsny1hwzx5jh9hvqn0b53cc"))
;; Remove non-free or doubtful code, see
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
(modules '((guix build utils)))
(snippet
'(begin
(delete-file-recursively "src/calibre/ebooks/markdown")
(delete-file-recursively "src/unrar")
(delete-file "src/odf/thumbnail.py")
(delete-file-recursively "resources/fonts/liberation")
(delete-file-recursively "src/chardet")
(substitute* (find-files "." "\\.py")
(("calibre\\.ebooks\\.markdown") "markdown"))
#t))
(patches (search-patches "calibre-drop-unrar.patch"
"calibre-use-packaged-feedparser.patch"
"calibre-dont-load-remote-icons.patch"
"calibre-no-updates-dialog.patch"))))
(build-system python-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("font-liberation" ,font-liberation)
("qtbase" ,qtbase) ; for qmake
;; xdg-utils is supposed to be used for desktop integration, but it
;; also creates lots of messages
;; mkdir: cannot create directory '/homeless-shelter': Permission denied
("python2-flake8" ,python2-flake8)
("xdg-utils" ,xdg-utils)))
;; Beautifulsoup3 is bundled but obsolete and not packaged, so just leave it bundled.
(inputs
`(("chmlib" ,chmlib)
("fontconfig" ,fontconfig)
("glib" ,glib)
("icu4c" ,icu4c)
("libmtp" ,libmtp)
("libpng" ,libpng)
("libusb" ,libusb)
("libxrender" ,libxrender)
("openssl" ,openssl)
("podofo" ,podofo)
("poppler" ,poppler)
("python" ,python-2)
("python2-apsw" ,python2-apsw)
("python2-chardet" ,python2-chardet)
("python2-cssselect" ,python2-cssselect)
("python2-cssutils" ,python2-cssutils)
("python2-dateutil" ,python2-dateutil)
("python2-dbus" ,python2-dbus)
("python2-dnspython" ,python2-dnspython)
("python2-feedparser" ,python2-feedparser)
("python2-lxml" ,python2-lxml)
("python2-markdown" ,python2-markdown)
("python2-mechanize" ,python2-mechanize)
("python2-netifaces" ,python2-netifaces)
("python2-pillow" ,python2-pillow)
("python2-pygments" ,python2-pygments)
("python2-pyqt" ,python2-pyqt)
("python2-sip" ,python2-sip)
("sqlite" ,sqlite)))
(arguments
`(#:python ,python-2
#:test-target "check"
#:tests? #f ; FIXME: enable once flake8 is packaged
;; 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
(modify-phases %standard-phases
(add-before 'build 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let ((podofo (assoc-ref inputs "podofo"))
(pyqt (assoc-ref inputs "python2-pyqt")))
(substitute* "setup/build_environment.py"
(("sys.prefix") (string-append "'" pyqt "'")))
(setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo"))
(setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")))))
(add-after 'install 'install-font-liberation
(lambda* (#:key inputs outputs #:allow-other-keys)
(for-each (lambda (file)
(install-file file (string-append
(assoc-ref outputs "out")
"/share/calibre/fonts/liberation")))
(find-files (string-append
(assoc-ref inputs "font-liberation")
"/share/fonts/truetype")))
#t)))))
(home-page "http://calibre-ebook.com/")
(synopsis "E-book library management software")
(description "Calibre is an ebook library manager. It can view, convert
and catalog ebooks in most of the major ebook formats. It can also talk
to many ebook reader devices. It can go out to the Internet and fetch
metadata for books. It can download newspapers and convert them into
ebooks for convenient reading.")
(license gpl3))) ; some files are under various other licenses, see COPYRIGHT