summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVirgil Dupras <vdupras@gentoo.org>2018-08-04 15:10:23 -0400
committerVirgil Dupras <vdupras@gentoo.org>2018-08-04 15:11:32 -0400
commit482a89fd8f11d1d04e5a1b49dacb92c53c11ca4b (patch)
tree2c0bbc2ed1c0f2e3d84aaf27d96ea268228cf541
parentdev-libs/pkcs11-helper: version bump (diff)
downloadgentoo-482a89fd.tar.gz
gentoo-482a89fd.tar.bz2
gentoo-482a89fd.zip
dev-python/pillow: add qt5 USE flag
Pillow has a Qt compatibility layer that is enabled depending on whether PyQt is installed or not. Letting this happen can lead to unexpected problems, so we add support for the qt5 flag to explicitly enable Qt support. When the flag is disabled, we forcibly disable Qt support through patching. Bug: https://bugs.gentoo.org/662236 Package-Manager: Portage-2.3.44, Repoman-2.3.10
-rw-r--r--dev-python/pillow/files/pillow-4.3.0-no-qt.patch30
-rw-r--r--dev-python/pillow/pillow-4.3.0-r3.ebuild106
2 files changed, 136 insertions, 0 deletions
diff --git a/dev-python/pillow/files/pillow-4.3.0-no-qt.patch b/dev-python/pillow/files/pillow-4.3.0-no-qt.patch
new file mode 100644
index 000000000000..231c605b8347
--- /dev/null
+++ b/dev-python/pillow/files/pillow-4.3.0-no-qt.patch
@@ -0,0 +1,30 @@
+diff --git a/PIL/ImageQt.py b/PIL/ImageQt.py
+index 36b4e1eb..ddde2cd9 100644
+--- a/PIL/ImageQt.py
++++ b/PIL/ImageQt.py
+@@ -20,24 +20,7 @@ from . import Image
+ from ._util import isPath
+ from io import BytesIO
+
+-qt_is_installed = True
+-qt_version = None
+-try:
+- from PyQt5.QtGui import QImage, qRgba, QPixmap
+- from PyQt5.QtCore import QBuffer, QIODevice
+- qt_version = '5'
+-except (ImportError, RuntimeError):
+- try:
+- from PyQt4.QtGui import QImage, qRgba, QPixmap
+- from PyQt4.QtCore import QBuffer, QIODevice
+- qt_version = '4'
+- except (ImportError, RuntimeError):
+- try:
+- from PySide.QtGui import QImage, qRgba, QPixmap
+- from PySide.QtCore import QBuffer, QIODevice
+- qt_version = 'side'
+- except ImportError:
+- qt_is_installed = False
++qt_is_installed = False
+
+
+ def rgb(r, g, b, a=255):
diff --git a/dev-python/pillow/pillow-4.3.0-r3.ebuild b/dev-python/pillow/pillow-4.3.0-r3.ebuild
new file mode 100644
index 000000000000..a799e79a1d3a
--- /dev/null
+++ b/dev-python/pillow/pillow-4.3.0-r3.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+PYTHON_REQ_USE='tk?,threads(+)'
+
+inherit distutils-r1 eutils virtualx
+
+MY_PN=Pillow
+MY_P=${MY_PN}-${PV}
+
+DESCRIPTION="Python Imaging Library (fork)"
+HOMEPAGE="https://python-pillow.org/"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
+
+LICENSE="HPND"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples imagequant jpeg jpeg2k lcms qt5 test tiff tk truetype webp zlib"
+
+REQUIRED_USE="test? ( jpeg tiff )"
+
+RDEPEND="
+ dev-python/olefile[${PYTHON_USEDEP}]
+ imagequant? ( media-gfx/libimagequant:0 )
+ jpeg? ( virtual/jpeg:0 )
+ jpeg2k? ( media-libs/openjpeg:2= )
+ lcms? ( media-libs/lcms:2= )
+ qt5? ( dev-python/PyQt5[gui,widgets,${PYTHON_USEDEP}] )
+ tiff? ( media-libs/tiff:0=[jpeg,zlib] )
+ truetype? ( media-libs/freetype:2= )
+ webp? ( media-libs/libwebp:0= )
+ zlib? ( sys-libs/zlib:0= )"
+DEPEND="${RDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ doc? (
+ dev-python/sphinx[${PYTHON_USEDEP}]
+ dev-python/sphinx_rtd_theme[${PYTHON_USEDEP}]
+ )
+ test? (
+ dev-python/nose[${PYTHON_USEDEP}]
+ media-gfx/imagemagick[png]
+ )
+"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${FILESDIR}"/pillow-4.3.0-no-scripts.patch
+ # can be removed at v5, patch already uptream. See bug 593816.
+ "${FILESDIR}"/pillow-4.3.0-freetype2.9-test-metrics.patch
+)
+
+src_prepare() {
+ if ! use qt5; then
+ # When we don't use qt5, we want to forcibly disable it by patching it
+ # out. Otherwise, we might encounter unexpected problems like in
+ # bug #662236
+ eapply "${FILESDIR}/${PN}-4.3.0-no-qt.patch"
+ fi
+ eapply_user
+}
+
+python_configure_all() {
+ # It's important that these flags are also passed during the install phase
+ # as well. Make sure of that if you change the lines below. See bug 661308.
+ mydistutilsargs=(
+ build_ext
+ --disable-platform-guessing
+ $(use_enable truetype freetype)
+ $(use_enable jpeg)
+ $(use_enable jpeg2k jpeg2000)
+ $(use_enable lcms)
+ $(use_enable tiff)
+ $(use_enable imagequant)
+ $(use_enable webp)
+ $(use_enable webp webpmux)
+ $(use_enable zlib)
+ )
+}
+
+python_compile_all() {
+ use doc && emake -C docs html
+}
+
+python_test() {
+ "${PYTHON}" selftest.py --installed || die "selftest failed with ${EPYTHON}"
+ virtx nosetests -vx Tests/test_*.py
+}
+
+python_install() {
+ python_doheader libImaging/*.h
+ distutils-r1_python_install
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( docs/_build/html/. )
+ if use examples ; then
+ docinto examples
+ dodoc Scripts/*
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+ distutils-r1_python_install_all
+}