gnu: calibre: Improve package style.
* gnu/packages/ebook.scm (calibre)[snippet]: Remove trailing #T. [native-inputs]: Add BASH-MINIMAL. Re-order entries alphabetically. [arguments]<#:phases>: Use G-expressions. Remove trailing #T. Use SEARCH-INPUT-FILE (or SEARCH-NATIVE-INPUT-FILE) instead of WHICH. Use THIS-PACKAGE-INPUT instead of ASSOC-REF.
This commit is contained in:
parent
c3aa92358f
commit
81359197b4
|
@ -31,6 +31,7 @@ (define-module (gnu packages ebook)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
|
#:use-module (guix gexp)
|
||||||
#:use-module (guix git-download)
|
#:use-module (guix git-download)
|
||||||
#:use-module (guix build-system cmake)
|
#:use-module (guix build-system cmake)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
|
@ -124,38 +125,36 @@ (define-public calibre
|
||||||
(name "calibre")
|
(name "calibre")
|
||||||
(version "5.36.0")
|
(version "5.36.0")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "http://download.calibre-ebook.com/"
|
(uri (string-append "http://download.calibre-ebook.com/"
|
||||||
version "/calibre-"
|
version "/calibre-"
|
||||||
version ".tar.xz"))
|
version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1c036qmn7lxq0899c2xzzs6whz7z0557frnfqisbvfxa13b2sadk"))
|
"1c036qmn7lxq0899c2xzzs6whz7z0557frnfqisbvfxa13b2sadk"))
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(snippet
|
(snippet
|
||||||
'(begin
|
'(begin
|
||||||
;; Unbundle python2-odfpy.
|
;; Unbundle python2-odfpy.
|
||||||
(delete-file-recursively "src/odf")
|
(delete-file-recursively "src/odf")
|
||||||
;; Disable test that attempts to load it.
|
;; Disable test that attempts to load it.
|
||||||
(substitute* "setup/test.py"
|
(substitute* "setup/test.py"
|
||||||
((".*SRC, 'odf'.*")
|
((".*SRC, 'odf'.*") ""))
|
||||||
""))
|
;; Remove unneeded resources.
|
||||||
|
(delete-file "resources/mozilla-ca-certs.pem")
|
||||||
;; Remove unneeded resources.
|
(delete-file "resources/calibre-portable.bat")
|
||||||
(delete-file "resources/mozilla-ca-certs.pem")
|
(delete-file "resources/calibre-portable.sh")))
|
||||||
(delete-file "resources/calibre-portable.bat")
|
(patches (search-patches "calibre-no-updates-dialog.patch"
|
||||||
(delete-file "resources/calibre-portable.sh")
|
"calibre-remove-test-sqlite.patch" ; TODO: fix test.
|
||||||
#t))
|
"calibre-remove-test-unrar.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)
|
(build-system python-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
(list pkg-config
|
(list bash-minimal
|
||||||
qtbase-5 ; for qmake
|
pkg-config
|
||||||
python-flake8
|
python-flake8
|
||||||
python-pyqt-builder
|
python-pyqt-builder
|
||||||
|
qtbase-5 ; for qmake
|
||||||
xdg-utils))
|
xdg-utils))
|
||||||
(inputs
|
(inputs
|
||||||
(list fontconfig
|
(list fontconfig
|
||||||
|
@ -206,132 +205,136 @@ (define-public calibre
|
||||||
qtwebengine
|
qtwebengine
|
||||||
sqlite))
|
sqlite))
|
||||||
(arguments
|
(arguments
|
||||||
`(;; Calibre is using setuptools by itself, but the setup.py is not
|
(list
|
||||||
;; compatible with the shim wrapper (taken from pip) we are using.
|
;; Calibre is using setuptools by itself, but the setup.py is not
|
||||||
#:use-setuptools? #f
|
;; compatible with the shim wrapper (taken from pip) we are using.
|
||||||
#:phases
|
#:use-setuptools? #f
|
||||||
(modify-phases %standard-phases
|
#:phases
|
||||||
(add-after 'unpack 'patch-source
|
#~(modify-phases %standard-phases
|
||||||
(lambda _
|
(add-after 'unpack 'patch-source
|
||||||
(substitute* "src/calibre/linux.py"
|
(lambda _
|
||||||
;; We can't use the uninstaller in Guix. Don't build it.
|
(substitute* "src/calibre/linux.py"
|
||||||
(("self\\.create_uninstaller()") ""))
|
;; We can't use the uninstaller in Guix. Don't build it.
|
||||||
#t))
|
(("self\\.create_uninstaller()") ""))))
|
||||||
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
(add-after 'patch-source-shebangs 'patch-more-shebangs
|
||||||
(lambda _
|
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||||
;; Patch various inline shebangs.
|
;; Patch various inline shebangs.
|
||||||
(substitute* '("src/calibre/gui2/preferences/tweaks.py"
|
(substitute* '("src/calibre/gui2/preferences/tweaks.py"
|
||||||
"src/calibre/gui2/dialogs/custom_recipes.py"
|
"src/calibre/gui2/dialogs/custom_recipes.py"
|
||||||
"setup/install.py"
|
"setup/install.py"
|
||||||
"setup/linux-installer.sh")
|
"setup/linux-installer.sh")
|
||||||
(("#!/usr/bin/env python")
|
(("#!/usr/bin/env python")
|
||||||
(string-append "#!" (which "python")))
|
(string-append "#!" (search-input-file inputs "/bin/python")))
|
||||||
(("#!/bin/sh")
|
(("#!/bin/sh")
|
||||||
(string-append "#!" (which "sh"))))
|
(string-append "#!"
|
||||||
#t))
|
(search-input-file native-inputs "/bin/sh"))))))
|
||||||
(add-after 'unpack 'dont-load-remote-icons
|
(add-after 'unpack 'dont-load-remote-icons
|
||||||
(lambda _
|
(lambda _
|
||||||
(substitute* "setup/plugins_mirror.py"
|
(substitute* "setup/plugins_mirror.py"
|
||||||
(("href=\"//calibre-ebook.com/favicon.ico\"")
|
(("href=\"//calibre-ebook.com/favicon.ico\"")
|
||||||
"href=\"favicon.ico\""))
|
"href=\"favicon.ico\""))))
|
||||||
#t))
|
(add-before 'build 'configure
|
||||||
(add-before 'build 'configure
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
|
||||||
(let ((podofo (assoc-ref inputs "podofo"))
|
|
||||||
(pyqt (assoc-ref inputs "python-pyqt-without-qtwebkit"))
|
|
||||||
(python-sip (assoc-ref inputs "python-sip"))
|
|
||||||
(out (assoc-ref outputs "out")))
|
|
||||||
(substitute* "setup/build.py"
|
(substitute* "setup/build.py"
|
||||||
(("\\[tool.sip.bindings.pictureflow\\]")
|
(("\\[tool.sip.bindings.pictureflow\\]")
|
||||||
"[tool.sip.bindings.pictureflow]
|
"[tool.sip.bindings.pictureflow]
|
||||||
tags = [\"WS_X11\"]")
|
tags = [\"WS_X11\"]")
|
||||||
(("\\[tool.sip.project\\]")
|
(("\\[tool.sip.project\\]")
|
||||||
(string-append "[tool.sip.project]
|
(string-append "[tool.sip.project]
|
||||||
sip-include-dirs = [\"" pyqt "/share/sip" "\"]")))
|
sip-include-dirs = [\""
|
||||||
|
#$(this-package-input
|
||||||
|
"python-pyqt-without-qtwebkit")
|
||||||
|
"/share/sip\"]")))
|
||||||
(substitute* "src/calibre/ebooks/pdf/pdftohtml.py"
|
(substitute* "src/calibre/ebooks/pdf/pdftohtml.py"
|
||||||
(("PDFTOHTML = 'pdftohtml'")
|
(("PDFTOHTML = 'pdftohtml'")
|
||||||
(string-append "PDFTOHTML = \"" (assoc-ref inputs "poppler")
|
(string-append "PDFTOHTML = \""
|
||||||
"/bin/pdftohtml\"")))
|
(search-input-file inputs "/bin/pdftohtml")
|
||||||
;; get_exe_path looks in poppler's output for these binaries. Make
|
"\"")))
|
||||||
;; it not do that.
|
;; get_exe_path looks in poppler's output for these
|
||||||
|
;; binaries. Make it not do that.
|
||||||
(substitute* "src/calibre/utils/img.py"
|
(substitute* "src/calibre/utils/img.py"
|
||||||
(("get_exe_path..jpegtran..") (string-append "'" (which "jpegtran") "'"))
|
(("get_exe_path..jpegtran..")
|
||||||
(("get_exe_path..cjpeg..") (string-append "'" (which "cjpeg") "'"))
|
(string-append "'"
|
||||||
(("get_exe_path..optipng..") (string-append "'" (which "optipng") "'"))
|
(search-input-file inputs "/bin/jpegtran")
|
||||||
(("get_exe_path..JxrDecApp..") (string-append "'" (which "JxrDecApp") "'")))
|
"'"))
|
||||||
|
(("get_exe_path..cjpeg..")
|
||||||
|
(string-append "'"
|
||||||
|
(search-input-file inputs "/bin/cjpeg")
|
||||||
|
"'"))
|
||||||
|
(("get_exe_path..optipng..")
|
||||||
|
(string-append "'"
|
||||||
|
(search-input-file inputs "/bin/optipng")
|
||||||
|
"'"))
|
||||||
|
(("get_exe_path..JxrDecApp..")
|
||||||
|
(string-append "'"
|
||||||
|
(search-input-file inputs "/bin/JxrDecApp")
|
||||||
|
"'")))
|
||||||
;; Calibre thinks we are installing desktop files into a home
|
;; Calibre thinks we are installing desktop files into a home
|
||||||
;; directory, but here we butcher the script in to installing
|
;; directory, but here we butcher the script in to installing
|
||||||
;; to calibres /share directory.
|
;; to calibres /share directory.
|
||||||
(setenv "XDG_DATA_HOME" (string-append out "/share"))
|
(setenv "XDG_DATA_HOME" (string-append #$output "/share"))
|
||||||
(substitute* "src/calibre/linux.py"
|
(substitute* "src/calibre/linux.py"
|
||||||
(("'~/.local/share'") "''"))
|
(("'~/.local/share'") "''"))
|
||||||
|
|
||||||
;; 'python setup.py rapydscript' uses QtWebEngine, which
|
;; 'python setup.py rapydscript' uses QtWebEngine, which
|
||||||
;; needs to create temporary files in $HOME.
|
;; needs to create temporary files in $HOME.
|
||||||
(setenv "HOME" "/tmp")
|
(setenv "HOME" "/tmp")
|
||||||
|
|
||||||
;; XXX: QtWebEngine will fail if no fonts are available. This
|
;; XXX: QtWebEngine will fail if no fonts are available. This
|
||||||
;; can likely be removed when fontconfig has been patched to
|
;; can likely be removed when fontconfig has been patched to
|
||||||
;; include TrueType fonts by default.
|
;; include TrueType fonts by default.
|
||||||
(symlink (string-append (assoc-ref inputs "font-liberation")
|
(symlink (string-append #$(this-package-input "font-liberation")
|
||||||
"/share/fonts")
|
"/share/fonts")
|
||||||
"/tmp/.fonts")
|
"/tmp/.fonts")
|
||||||
|
(let ((podofo #$(this-package-input "podofo")))
|
||||||
(setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo"))
|
(setenv "PODOFO_INC_DIR"
|
||||||
(setenv "PODOFO_LIB_DIR" (string-append podofo "/lib"))
|
(string-append podofo "/include/podofo"))
|
||||||
|
(setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")))
|
||||||
;; This informs the tests we are a continuous integration
|
;; This informs the tests we are a continuous integration
|
||||||
;; environment and thus have no networking.
|
;; environment and thus have no networking.
|
||||||
(setenv "CI" "true")
|
(setenv "CI" "true")
|
||||||
;; The Qt test complains about being unable to load all image plugins, and I
|
;; The Qt test complains about being unable to load all image
|
||||||
;; notice the available plugins list it shows lacks 'svg'. Adding qtsvg doesn't
|
;; plugins, and I notice the available plugins list it shows
|
||||||
;; fix it, so I'm not sure how to fix it. TODO: Fix test and remove this.
|
;; lacks 'svg'. Adding qtsvg doesn't fix it, so I'm not sure how
|
||||||
(setenv "SKIP_QT_BUILD_TEST" "true")
|
;; to fix it. TODO: Fix test and remove this.
|
||||||
#t)))
|
(setenv "SKIP_QT_BUILD_TEST" "true")))
|
||||||
(add-after 'install 'install-rapydscript
|
(add-after 'install 'install-rapydscript
|
||||||
(lambda* (#:key inputs #:allow-other-keys)
|
(lambda _
|
||||||
;; Unset so QtWebengine doesn't dump temporary files here.
|
;; Unset so QtWebengine doesn't dump temporary files here.
|
||||||
(unsetenv "XDG_DATA_HOME")
|
(unsetenv "XDG_DATA_HOME")
|
||||||
(invoke "python" "setup.py" "rapydscript")
|
(invoke "python" "setup.py" "rapydscript")))
|
||||||
#t))
|
(add-after 'install 'install-man-pages
|
||||||
(add-after 'install 'install-man-pages
|
(lambda _
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(copy-recursively "man-pages"
|
||||||
(copy-recursively
|
(string-append #$output "/share/man"))))
|
||||||
"man-pages"
|
;; The font TTF files are used in some miscellaneous tests, so we
|
||||||
(string-append (assoc-ref outputs "out") "/share/man"))
|
;; unbundle them here to avoid patching the tests.
|
||||||
#t))
|
(add-after 'install 'unbundle-font-liberation
|
||||||
;; The font TTF files are used in some miscellaneous tests, so we
|
(lambda _
|
||||||
;; unbundle them here to avoid patching the tests.
|
(let ((font-dest
|
||||||
(add-after 'install 'unbundle-font-liberation
|
(string-append #$output "/share/calibre/fonts/liberation"))
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(font-src
|
||||||
(let ((font-dest (string-append (assoc-ref outputs "out")
|
(string-append #$(this-package-input "font-liberation")
|
||||||
"/share/calibre/fonts/liberation"))
|
"/share/fonts/truetype")))
|
||||||
(font-src (string-append (assoc-ref inputs "font-liberation")
|
(delete-file-recursively font-dest)
|
||||||
"/share/fonts/truetype")))
|
(symlink font-src font-dest))))
|
||||||
(delete-file-recursively font-dest)
|
;; Make run-time dependencies available to the binaries.
|
||||||
(symlink font-src font-dest))
|
(add-after 'wrap 'wrap-program
|
||||||
#t))
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
;; Make run-time dependencies available to the binaries.
|
(with-directory-excursion (string-append #$output "/bin")
|
||||||
(add-after 'wrap 'wrap-program
|
(for-each
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(lambda (binary)
|
||||||
(let ((out (assoc-ref outputs "out"))
|
(wrap-program binary
|
||||||
(qtwebengine (assoc-ref inputs "qtwebengine")))
|
;; Make QtWebEngineProcess available.
|
||||||
(with-directory-excursion (string-append out "/bin")
|
`("QTWEBENGINEPROCESS_PATH" =
|
||||||
(for-each
|
,(list
|
||||||
(lambda (binary)
|
(search-input-file
|
||||||
(wrap-program binary
|
inputs "/lib/qt5/libexec/QtWebEngineProcess")))))
|
||||||
;; Make QtWebEngineProcess available.
|
;; Wrap all the binaries shipping with the package, except
|
||||||
`("QTWEBENGINEPROCESS_PATH" =
|
;; for the wrappings created during the 'wrap standard
|
||||||
,(list (string-append
|
;; phase. This extends existing .calibre-real wrappers
|
||||||
qtwebengine
|
;; rather than create ..calibre-real-real-s. For more
|
||||||
"/lib/qt5/libexec/QtWebEngineProcess")))))
|
;; information see: https://issues.guix.gnu.org/43249.
|
||||||
;; Wrap all the binaries shipping with the package, except
|
(find-files "." (lambda (file stat)
|
||||||
;; for the wrappings created during the 'wrap standard
|
(not (wrapped-program? file)))))))))))
|
||||||
;; phase. This extends existing .calibre-real wrappers
|
|
||||||
;; rather than create ..calibre-real-real-s. For more
|
|
||||||
;; information see: https://issues.guix.gnu.org/43249.
|
|
||||||
(find-files "." (lambda (file stat)
|
|
||||||
(not (wrapped-program? file)))))))
|
|
||||||
#t)))))
|
|
||||||
(home-page "https://calibre-ebook.com/")
|
(home-page "https://calibre-ebook.com/")
|
||||||
(synopsis "E-book library management software")
|
(synopsis "E-book library management software")
|
||||||
(description "Calibre is an e-book library manager. It can view, convert
|
(description "Calibre is an e-book library manager. It can view, convert
|
||||||
|
|
Loading…
Reference in a new issue