summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@gentoo.org>2024-08-23 03:05:41 -0400
committerEli Schwartz <eschwartz@gentoo.org>2024-08-23 03:19:24 -0400
commit534905bcf0a78f7604661980d91e15e9505948d5 (patch)
treee0ed92749d8c36f2a1ff26adbfde0266c5cf68e6 /app-text
parentapp-accessibility/epos: treeclean (diff)
downloadgentoo-534905bcf0a78f7604661980d91e15e9505948d5.tar.gz
gentoo-534905bcf0a78f7604661980d91e15e9505948d5.tar.bz2
gentoo-534905bcf0a78f7604661980d91e15e9505948d5.zip
app-text/calibre: add 7.17.0
There have been some updates to the binary builds for Qt stuff that basically amount to building PyQt6 with USE=speech. It's not yet active in live codepaths, so patching it out of the testsuite for now. Will keep an eye on it in the future with attention paid to the practicalities of USE=speech. Recheck in future version bumps... Signed-off-by: Eli Schwartz <eschwartz@gentoo.org>
Diffstat (limited to 'app-text')
-rw-r--r--app-text/calibre/Manifest2
-rw-r--r--app-text/calibre/calibre-7.17.0.ebuild246
-rw-r--r--app-text/calibre/files/calibre-7.17.0-qt-texttospeech.patch38
3 files changed, 286 insertions, 0 deletions
diff --git a/app-text/calibre/Manifest b/app-text/calibre/Manifest
index 2e023d6be5a8..db0341d892c8 100644
--- a/app-text/calibre/Manifest
+++ b/app-text/calibre/Manifest
@@ -2,3 +2,5 @@ DIST calibre-5.44.0.tar.xz 41015696 BLAKE2B c7053e728da20fccfa981ed4f56e24a4d5b3
DIST calibre-5.44.0.tar.xz.sig 566 BLAKE2B 413b95855d79bdb5b17ca5d760f834006797b4d3e413604f27d351a3392e16d647e772dc063306bf973e1156c34f68cb38152a66164bca849ebed5484e7f6065 SHA512 59957bf35a73f218241bf76cc86994d5af87cea11d3b0800e83f157bf0b2cfcaf4b6c1314562e74a1141d0c167fdb1619cb9a90e93b67f55dd55ceed77045059
DIST calibre-7.16.0.tar.xz 44833684 BLAKE2B 2b609a0d014d43998f693a69c10f6d8b0165bf97f8c9d388cf4e1e398e7254b300d53b26e5ec24af651e03bb625bb088331dc77aa2ed6edea13de2beb0e75339 SHA512 5ea11badd972422299ce143e2aa33f58f7abcfd2837acba47d2a7aa6f0997a711245273205ed043c783e5e82bbaaf7cab44e5c03c00e274a03a4ba29be53a708
DIST calibre-7.16.0.tar.xz.sig 566 BLAKE2B 1d09e8dd49ad53c88632dc23573fa9cd5403d45a308598ac4ed7d4f2dd5a84cc3ae6812ac652ff4a98fc5d67589ad1584411f7746b6b98468bf03a35a0585de6 SHA512 91f3897d95d234a8d673006273974d32cb6c5aa4953d247700d6d89d511c9b1450dc8e222eabf5d1e4d82de206e425ee440defaff38d1ca83efdbf4bcada7c7c
+DIST calibre-7.17.0.tar.xz 45053400 BLAKE2B 93149c4fab7a25e1239c4b8c72b766e5ffc71eb27d1206225bc8436f26d2c76f9323e0f0f63d8444291f02a5a7e94d4500715398a71df4ab2a5b16e325e7be73 SHA512 916337dc425916110528828bac0fbdc24db9496362c1e8dad67eafdfda42b90174fb6a4352400cd34af0f11268aabed82b166b3e4875f59e317359079e10bf3b
+DIST calibre-7.17.0.tar.xz.sig 566 BLAKE2B c041904919ef300f51ba7363daf7d2bc70fc8bb819ffef157e53c28f91b9716be56b1e95465180ecd67069241a5810b70ac08027f4837426a5426792fab05e49 SHA512 af88bcbf394ac6ec68c40d661545a17e956b31dd7797d1cc8490e090437206902a64c7a642cf1e34184e379c79066843959e1459eb1836bddbd615febbc85c07
diff --git a/app-text/calibre/calibre-7.17.0.ebuild b/app-text/calibre/calibre-7.17.0.ebuild
new file mode 100644
index 000000000000..ba0528419925
--- /dev/null
+++ b/app-text/calibre/calibre-7.17.0.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+PYTHON_REQ_USE="sqlite,ssl"
+
+inherit edo toolchain-funcs python-single-r1 qmake-utils verify-sig xdg
+
+DESCRIPTION="Ebook management application"
+HOMEPAGE="https://calibre-ebook.com/"
+SRC_URI="
+ https://download.calibre-ebook.com/${PV}/${P}.tar.xz
+ verify-sig? ( https://calibre-ebook.com/signatures/${P}.tar.xz.sig )
+"
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/kovidgoyal.gpg
+
+LICENSE="
+ GPL-3+
+ GPL-3
+ GPL-2+
+ GPL-2
+ GPL-1+
+ LGPL-3+
+ LGPL-2.1+
+ LGPL-2.1
+ BSD
+ MIT
+ Old-MIT
+ Apache-2.0
+ public-domain
+ || ( Artistic GPL-1+ )
+ CC-BY-3.0
+ OFL-1.1
+ PSF-2
+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+IUSE="+font-subsetting ios speech +system-mathjax test +udisks unrar"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# Qt slotted dependencies are used because the libheadless.so plugin links to
+# QT_*_PRIVATE_ABI. It only uses core/gui/dbus.
+COMMON_DEPEND="${PYTHON_DEPS}
+ app-i18n/uchardet
+ >=app-text/hunspell-1.7:=
+ >=app-text/podofo-0.10.0:=
+ app-text/poppler[utils]
+ dev-libs/hyphen:=
+ >=dev-libs/icu-57.1:=
+ dev-libs/openssl:=
+ dev-libs/snowball-stemmer:=
+ $(python_gen_cond_dep '
+ >=dev-python/apsw-3.25.2_p1[${PYTHON_USEDEP}]
+ dev-python/beautifulsoup4[${PYTHON_USEDEP}]
+ >=dev-python/css-parser-1.0.4[${PYTHON_USEDEP}]
+ dev-python/dnspython[${PYTHON_USEDEP}]
+ >=dev-python/feedparser-5.2.1[${PYTHON_USEDEP}]
+ >=dev-python/html2text-2019.8.11[${PYTHON_USEDEP}]
+ >=dev-python/html5-parser-0.4.9[${PYTHON_USEDEP}]
+ dev-python/jeepney[${PYTHON_USEDEP}]
+ >=dev-python/lxml-3.8.0[${PYTHON_USEDEP}]
+ dev-python/lxml-html-clean[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.0.1[${PYTHON_USEDEP}]
+ >=dev-python/mechanize-0.3.5[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.6.2[${PYTHON_USEDEP}]
+ >=dev-python/netifaces-0.10.5[${PYTHON_USEDEP}]
+ >=dev-python/pillow-3.2.0[jpeg,truetype,webp,zlib,${PYTHON_USEDEP}]
+ >=dev-python/psutil-4.3.0[${PYTHON_USEDEP}]
+ >=dev-python/pychm-0.8.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.3.1[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.5.3[${PYTHON_USEDEP}]
+ dev-python/PyQt6[gui,network,opengl,printsupport,quick,svg,widgets,${PYTHON_USEDEP}]
+ dev-python/PyQt6-WebEngine[widgets,${PYTHON_USEDEP}]
+ dev-python/regex[${PYTHON_USEDEP}]
+ dev-python/xxhash[${PYTHON_USEDEP}]
+ >=dev-python/zeroconf-0.75.0[${PYTHON_USEDEP}]
+ ')
+ dev-qt/qtbase:6=[gui,widgets]
+ dev-qt/qtimageformats:6
+ dev-util/desktop-file-utils
+ dev-util/gtk-update-icon-cache
+ media-fonts/liberation-fonts
+ media-libs/fontconfig:=
+ >=media-libs/freetype-2:=
+ >=media-libs/libmtp-1.1.11:=
+ >=media-gfx/optipng-0.7.6
+ virtual/libusb:1=
+ x11-misc/shared-mime-info
+ >=x11-misc/xdg-utils-1.0.2-r2
+ font-subsetting? ( $(python_gen_cond_dep 'dev-python/fonttools[${PYTHON_USEDEP}]') )
+ ios? (
+ >=app-pda/usbmuxd-1.0.8
+ >=app-pda/libimobiledevice-1.2.0
+ )
+ speech? ( $(python_gen_cond_dep 'app-accessibility/speech-dispatcher[python,${PYTHON_USEDEP}]') )
+ system-mathjax? ( >=dev-libs/mathjax-3:= )
+ udisks? ( virtual/libudev )
+ unrar? ( dev-python/unrardll )
+"
+RDEPEND="${COMMON_DEPEND}
+ udisks? ( sys-fs/udisks:2 )"
+DEPEND="${COMMON_DEPEND}
+ test? ( $(python_gen_cond_dep '>=dev-python/chardet-3.0.3[${PYTHON_USEDEP}]') )
+"
+BDEPEND="$(python_gen_cond_dep '
+ >=dev-python/PyQt-builder-1.10.3[${PYTHON_USEDEP}]
+ >=dev-python/sip-5[${PYTHON_USEDEP}]
+ ')
+ virtual/pkgconfig
+ system-mathjax? ( dev-lang/rapydscript-ng )
+ verify-sig? ( sec-keys/openpgp-keys-kovidgoyal )
+"
+
+PATCHES=(
+ # Skip calling a binary (JxrDecApp) from libjxr which is used for tests
+ # We don't (yet?) package libjxr and it seems to be dead upstream
+ # (last commit in 2017)
+ "${FILESDIR}/${PN}-7.0.0-jxr-test.patch"
+ # Don't test availability of PyQt6 tts module, which is not yet used.
+ # Recheck this with future version bumps...
+ "${FILESDIR}"/calibre-7.17.0-qt-texttospeech.patch
+)
+
+src_prepare() {
+ default
+
+ # Warning:
+ #
+ # While it might be rather tempting to add yet another sed here,
+ # please don't. There have been several bugs in Gentoo's packaging
+ # of calibre from seds-which-become-stale. Please consider
+ # creating a patch instead, but in any case, run the test suite
+ # and ensure it passes.
+ #
+ # If in doubt about a problem, checking Fedora's packaging is recommended.
+
+ # Disable unnecessary privilege dropping for bug #287067.
+ sed -e "s:if os.geteuid() == 0:if False and os.geteuid() == 0:" \
+ -i setup/install.py || die "sed failed to patch install.py"
+
+ # This is only ever used at build time. It contains a small embedded copy
+ # of the rapydscript-ng compiler usable inside of qtwebengine, if you don't
+ # have rapydscript-ng (a nodejs package) itself installed. Its only purpose
+ # is to build some resources that come bundled in dist tarballs already...
+ # and which we may also need to regenerate e.g. to use system-mathjax.
+ #
+ # However, running qtwebengine violates the portage sandbox (among other
+ # things, it tries to create directories in /usr! amazing) so this is a
+ # wash anyway. The only real solution here is to package rapydscript-ng.
+ #
+ # We do not need it at build time, and *no one* needs it at install time.
+ # Delete the cruft.
+ rm -r resources/rapydscript/ || die
+}
+
+src_compile() {
+ # TODO: get qmake called by setup.py to respect CC and CXX too
+ tc-export CC CXX
+
+ # bug 821871
+ local MY_LIBDIR="${ESYSROOT}/usr/$(get_libdir)"
+ export FT_LIB_DIR="${MY_LIBDIR}" HUNSPELL_LIB_DIR="${MY_LIBDIR}" PODOFO_LIB_DIR="${MY_LIBDIR}"
+ export QMAKE="$(qt6_get_bindir)/qmake"
+
+ edo ${EPYTHON} setup.py build
+ edo ${EPYTHON} setup.py gui
+
+ # A few different resources are bundled in the distfile by default, because
+ # not all systems necessarily have them. We un-vendor them, using the
+ # upstream integrated approach if possible. See setup/revendor.py and
+ # consider migrating other resources to this if they do not use it, in
+ # *preference* over manual rm'ing.
+ edo ${EPYTHON} setup.py liberation_fonts \
+ --path-to-liberation_fonts "${EPREFIX}"/usr/share/fonts/liberation-fonts \
+ --system-liberation_fonts
+ if use system-mathjax; then
+ edo ${EPYTHON} setup.py mathjax --path-to-mathjax "${EPREFIX}"/usr/share/mathjax --system-mathjax
+ edo ${EPYTHON} setup.py rapydscript
+ fi
+}
+
+src_test() {
+ # Skipped tests:
+ local _test_excludes=(
+ # unpackaged Python dependency: py7zr
+ 7z
+ # unpackaged Python dependency: pyzstd
+ test_zstd
+ # tests if a completely unused module is bundled
+ pycryptodome
+
+ $(usev !speech speech_dispatcher)
+ $(usev !unrar test_unrar)
+
+ # undocumented reasons
+ test_mem_leaks
+ test_searching
+ )
+
+ edo ${PYTHON} setup.py test "${_test_excludes[@]/#/--exclude-test-name=}"
+}
+
+src_install() {
+ # Bug #352625 - Some LANGUAGE values can trigger the following ValueError:
+ # File "/usr/lib/python2.6/locale.py", line 486, in getdefaultlocale
+ # return _parse_localename(localename)
+ # File "/usr/lib/python2.6/locale.py", line 418, in _parse_localename
+ # raise ValueError, 'unknown locale: %s' % localename
+ #ValueError: unknown locale: 46
+ export -n LANG LANGUAGE ${!LC_*}
+ export LC_ALL=C.utf8 # bug #709682
+
+ # Bug #295672 - Avoid sandbox violation in ~/.config by forcing
+ # variables to point to our fake temporary $HOME.
+ export HOME="${T}/fake_homedir"
+ export CALIBRE_CONFIG_DIRECTORY="${HOME}/.config/calibre"
+ mkdir -p "${CALIBRE_CONFIG_DIRECTORY}" || die
+
+ addpredict /dev/dri #665310
+
+ # If this directory doesn't exist, zsh completion won't install
+ dodir /usr/share/zsh/site-functions
+
+ edo "${PYTHON}" setup.py install \
+ --staging-root="${ED}/usr" \
+ --prefix="${EPREFIX}/usr" \
+ --libdir="${EPREFIX}/usr/$(get_libdir)" \
+ --staging-libdir="${ED}/usr/$(get_libdir)" \
+ --system-plugins-location="${EPREFIX}/usr/share/calibre/system-plugins"
+
+ cp -r man-pages/ "${ED}"/usr/share/man || die
+
+ find "${ED}"/usr/share -type d -empty -delete || die
+
+ python_fix_shebang "${ED}/usr/bin"
+
+ python_optimize "${ED}"/usr/$(get_libdir)/calibre "${D}/$(python_get_sitedir)"
+
+ newinitd "${FILESDIR}"/calibre-server-3.init calibre-server
+ newconfd "${FILESDIR}"/calibre-server-3.conf calibre-server
+}
diff --git a/app-text/calibre/files/calibre-7.17.0-qt-texttospeech.patch b/app-text/calibre/files/calibre-7.17.0-qt-texttospeech.patch
new file mode 100644
index 000000000000..ff50735e4788
--- /dev/null
+++ b/app-text/calibre/files/calibre-7.17.0-qt-texttospeech.patch
@@ -0,0 +1,38 @@
+From 6d87aa054724155c9413e5692fa1f242f9cc0efc Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Fri, 23 Aug 2024 02:20:00 -0400
+Subject: [PATCH] tests: delete qt TTS assert which is not yet used
+
+It will be used in future versions of calibre, and should likely be
+gated on USE=speech.
+---
+ src/calibre/test_build.py | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
+index 4f19363680..898caad665 100644
+--- a/src/calibre/test_build.py
++++ b/src/calibre/test_build.py
+@@ -314,7 +314,7 @@ def test_apsw(self):
+ def test_qt(self):
+ if is_sanitized:
+ raise unittest.SkipTest('Skipping Qt build test as sanitizer is enabled')
+- from qt.core import QApplication, QFontDatabase, QImageReader, QLoggingCategory, QNetworkAccessManager, QSslSocket, QTextToSpeech, QTimer
++ from qt.core import QApplication, QFontDatabase, QImageReader, QLoggingCategory, QNetworkAccessManager, QSslSocket, QTimer
+ QLoggingCategory.setFilterRules('''qt.webenginecontext.debug=true''')
+ if hasattr(os, 'geteuid') and os.geteuid() == 0:
+ # likely a container build, webengine cannot run as root with sandbox
+@@ -348,10 +348,6 @@ def test_qt(self):
+ try:
+ ensure_app()
+ self.assertGreaterEqual(len(QFontDatabase.families()), 5, 'The QPA headless plugin is not able to locate enough system fonts via fontconfig')
+- available_tts_engines = tuple(x for x in QTextToSpeech.availableEngines() if x != 'mock')
+- self.assertTrue(available_tts_engines)
+-
+- self.assertGreaterEqual
+ from calibre.ebooks.oeb.transforms.rasterize import rasterize_svg
+ img = rasterize_svg(as_qimage=True)
+ self.assertFalse(img.isNull())
+--
+2.44.2
+