forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Michał Górny <[email protected]>
- Loading branch information
Showing
2 changed files
with
208 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
DIST QtPy-2.1.0.tar.gz 46470 BLAKE2B 2e032d141ad134444143cd59b8952957b226d9519925083aecce82adf62eebd3f58803cf548c4142fb1ece6f0e2340043a82a7aef056f6e4a9ac8b9caf72d80d SHA512 052cab4218d23d46162d11bf038dccfe6200b05c1c8647bd1f9dcbdaa7af50c23d4ae85829e065c7bae57630d149d562d76cc78202b4f448cbf6547010c746ff | ||
DIST QtPy-2.2.0.tar.gz 51573 BLAKE2B 5db2be83c74fa241cbec6818fbf5b5a8ecf681fdb2813cd51b011342eb8f0f2463c0a9f251e791f6051fa3276ad1e502f7e51bf0dcd2d3192bd76d0119dc8b16 SHA512 b0e7696c7861942c16749dc5f5ccbfd038f7fc2b1defbf372885223c4100805cada9bbb2f5bdae1f1c642b52d480d6e0048e221d9efd3f3103da54e6e2bfd0ff | ||
DIST QtPy-2.2.1.tar.gz 52207 BLAKE2B c2fa3e7ab0bcb2fc5610bdbab57daa6e4bbbfa346f46fbba8dd9d5d9e592e4f7a2f54aa0cf7291222dca9c2db4b944abeff36513f044f86fce294b1d00261cae SHA512 9c0887880984aabcc2633ec7aa161726f295ff20c9c95db5bcd9121676e49017b8033412172b257ae29311a1d3fc42b9eb183cc48fe5d64c9a471211ec6fbc11 | ||
DIST QtPy-2.3.0.tar.gz 53980 BLAKE2B 142694c3b10dc2ed46c168a063c0019928358d079dddfef0708ec8cabd782e206734bc0f680a7ee7309b483c56ecd739b3364061eaf190a1a9c9e41d940af202 SHA512 1fa3d52367fa70ca178a128f3cc95f333b1408dd88b9f9d15ef30b4c7f848a91df1626fa046667ce6bd6ee3f7a3909f1b3fb06b902eff26e1f058139eced73c6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
# Copyright 1999-2022 Gentoo Authors | ||
# Distributed under the terms of the GNU General Public License v2 | ||
|
||
EAPI=8 | ||
|
||
DISTUTILS_USE_PEP517=setuptools | ||
PYTHON_COMPAT=( python3_{8..11} ) | ||
|
||
inherit distutils-r1 virtualx | ||
|
||
DESCRIPTION="Abstraction layer on top of PyQt and PySide with additional custom QWidgets" | ||
HOMEPAGE=" | ||
https://github.com/spyder-ide/qtpy/ | ||
https://pypi.org/project/QtPy/ | ||
" | ||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" | ||
|
||
LICENSE="MIT" | ||
SLOT="0" | ||
KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86" | ||
|
||
_IUSE_QT_MODULES=" | ||
designer +gui help multimedia +network opengl positioning | ||
printsupport qml quick serialport +sql svg testlib | ||
webchannel webengine websockets +widgets +xml | ||
" | ||
IUSE="+pyqt5 pyqt6 pyside2 pyside6 ${_IUSE_QT_MODULES}" | ||
unset _IUSE_QT_MODULES | ||
|
||
REQUIRED_USE="|| ( pyqt5 pyqt6 pyside2 pyside6 )" | ||
|
||
# These flags are currently *not* common to the PySide2/6 and PyQt5/6 ebuilds | ||
# Disable them for now, please check periodically if this is still up to date. | ||
# bluetooth? ( pyqt5 only ) | ||
# dbus? ( pyqt5 only ) | ||
# | ||
# 3d? ( pyside2 only ) | ||
# charts? ( pyside2 only ) | ||
# concurrent? ( pyside2 only ) | ||
# datavis? ( pyside2 only ) | ||
# scxml? ( pyside2 only ) | ||
# script? ( pyside2 only ) | ||
# scripttools? ( pyside2 only ) | ||
# | ||
# location? ( pyside2 and pyqt5 only ) | ||
# sensors? ( pyside2 and pyqt5 only ) | ||
# speech? ( pyside2 and pyqt5 only ) | ||
# x11extras? ( pyside2 and pyqt5 only ) | ||
# xmlpatterns? ( pyside2 and pyqt5 only ) | ||
|
||
# WARNING: the obvious solution of using || for PyQt5/pyside2 is not going | ||
# to work. The package only checks whether PyQt5/pyside2 is installed, it does | ||
# not verify whether they have the necessary modules (i.e. satisfy the USE dep). | ||
# | ||
# Webengine is a special case, because PyQt5 provides this in a separate package | ||
# while PySide2 ships it in the same package. | ||
# | ||
# declarative/qml/quick is a special case, because PyQt5 bundles the bindings | ||
# for qml and quick in one flag: declarative PySide2 does not. | ||
# | ||
# The PyQt5 ebuild currently enables xml support unconditionally, the flag is | ||
# added anyway with a (+) to make it future proof if the ebuild were to change | ||
# this behaviour in the future. | ||
# | ||
# The PySide2 ebuild currently enables opengl and serialport support | ||
# unconditionally, the flag is added anyway with a (+) to make it future proof | ||
# if the ebuild were to change this behaviour in the future. | ||
RDEPEND=" | ||
dev-python/packaging[${PYTHON_USEDEP}] | ||
pyqt5? ( | ||
dev-python/PyQt5[${PYTHON_USEDEP}] | ||
dev-python/PyQt5[designer?,gui?,help?,multimedia?,network?,opengl?] | ||
dev-python/PyQt5[positioning?,printsupport?,serialport?,sql?,svg?] | ||
dev-python/PyQt5[testlib?,webchannel?,websockets?,widgets?,xml(+)?] | ||
qml? ( dev-python/PyQt5[declarative] ) | ||
quick? ( dev-python/PyQt5[declarative] ) | ||
webengine? ( dev-python/PyQtWebEngine[${PYTHON_USEDEP}] ) | ||
) | ||
pyqt6? ( | ||
dev-python/PyQt6[${PYTHON_USEDEP}] | ||
dev-python/PyQt6[designer?,gui?,help?,multimedia?,network?,opengl?] | ||
dev-python/PyQt6[positioning?,printsupport?,qml?,quick?,serialport?,sql?] | ||
dev-python/PyQt6[svg?,testlib?,webchannel?,websockets?,widgets?,xml?] | ||
webengine? ( dev-python/PyQt6-WebEngine[${PYTHON_USEDEP},widgets?,quick?] ) | ||
) | ||
pyside2? ( | ||
dev-python/pyside2[${PYTHON_USEDEP}] | ||
dev-python/pyside2[designer?,gui?,help?,multimedia?,network?,opengl(+)?] | ||
dev-python/pyside2[positioning?,printsupport?,qml?,quick?,serialport(+)?] | ||
dev-python/pyside2[sql?,svg?,testlib?,webchannel?,webengine?,websockets?] | ||
dev-python/pyside2[widgets?,xml?] | ||
) | ||
pyside6? ( | ||
dev-python/pyside6[${PYTHON_USEDEP}] | ||
dev-python/pyside6[designer?,gui?,help?,multimedia?,network?,opengl?] | ||
dev-python/pyside6[positioning?,printsupport?,qml?,quick?,serialport?] | ||
dev-python/pyside6[sql?,svg?,testlib?,webchannel?,webengine?,websockets?] | ||
dev-python/pyside6[widgets?,xml?] | ||
) | ||
" | ||
|
||
# The QtPy testsuite skips tests for bindings that are not installed, so here we | ||
# ensure that everything is available and all tests are run. Note that not | ||
# all flags are available in PyQt5/PySide2, so some tests are still skipped. | ||
BDEPEND=" | ||
test? ( | ||
dev-python/mock[${PYTHON_USEDEP}] | ||
pyqt5? ( | ||
dev-python/PyQt5[${PYTHON_USEDEP}] | ||
dev-python/PyQt5[bluetooth,dbus,declarative,designer,gui,help,location] | ||
dev-python/PyQt5[multimedia,network,opengl,positioning,printsupport] | ||
dev-python/PyQt5[sensors,serialport,speech(-),sql,svg,testlib,webchannel] | ||
dev-python/PyQt5[websockets,widgets,x11extras,xml(+),xmlpatterns] | ||
dev-python/PyQtWebEngine[${PYTHON_USEDEP}] | ||
) | ||
pyqt6? ( | ||
dev-python/PyQt6[${PYTHON_USEDEP}] | ||
dev-python/PyQt6[dbus,designer,gui,help,multimedia,network,opengl] | ||
dev-python/PyQt6[positioning,printsupport,qml,quick,quick3d,serialport] | ||
dev-python/PyQt6[sql,ssl,svg,testlib,webchannel,websockets,widgets,xml] | ||
dev-python/PyQt6-WebEngine[${PYTHON_USEDEP},widgets,quick] | ||
) | ||
pyside2? ( | ||
dev-python/pyside2[${PYTHON_USEDEP}] | ||
dev-python/pyside2[3d,charts,concurrent,datavis,designer,gui,help] | ||
dev-python/pyside2[location,multimedia,network,opengl(+),positioning] | ||
dev-python/pyside2[printsupport,qml,quick,script,scripttools,scxml] | ||
dev-python/pyside2[sensors,serialport(+),speech,sql,svg,testlib] | ||
dev-python/pyside2[webchannel,webengine,websockets,widgets,x11extras] | ||
dev-python/pyside2[xml,xmlpatterns] | ||
) | ||
pyside6? ( | ||
dev-python/pyside6[${PYTHON_USEDEP}] | ||
dev-python/pyside6[concurrent,dbus,designer,gui,help,multimedia] | ||
dev-python/pyside6[network,opengl,positioning,printsupport,qml] | ||
dev-python/pyside6[quick,quick3d,serialport,sql,svg,testlib] | ||
dev-python/pyside6[webchannel,webengine,websockets,widgets,xml] | ||
) | ||
) | ||
" | ||
|
||
distutils_enable_tests pytest | ||
|
||
src_prepare() { | ||
distutils-r1_src_prepare | ||
sed -i -e 's:--cov=qtpy --cov-report=term-missing::' pytest.ini || die | ||
# Disable Qt for Python implementations that are not selected | ||
if ! use pyqt5; then | ||
sed -i -e "s/from PyQt5.QtCore import/raise ImportError #/" qtpy/__init__.py || die | ||
fi | ||
if ! use pyqt6; then | ||
sed -i -e "s/from PyQt6.QtCore import/raise ImportError #/" qtpy/__init__.py || die | ||
fi | ||
if ! use pyside2; then | ||
sed -i -e "s/from PySide2 import/raise ImportError #/" qtpy/__init__.py || die | ||
sed -i -e "s/from PySide2.QtCore import/raise ImportError #/" qtpy/__init__.py || die | ||
fi | ||
if ! use pyside6; then | ||
sed -i -e "s/from PySide6 import/raise ImportError #/" qtpy/__init__.py || die | ||
sed -i -e "s/from PySide6.QtCore import/raise ImportError #/" qtpy/__init__.py || die | ||
fi | ||
} | ||
|
||
python_test() { | ||
# Test for each enabled Qt4Python target. | ||
# Deselect the other targets, their test fails if we specify QT_API | ||
# or if we have disabled their corresponding inherit in __init__.py above | ||
if use pyqt5; then | ||
einfo "Testing with ${EPYTHON} and QT_API=PyQt5" | ||
QT_API="pyqt5" virtx epytest \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide2] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt6] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide6] | ||
fi | ||
if use pyqt6; then | ||
einfo "Testing with ${EPYTHON} and QT_API=PyQt6" | ||
QT_API="pyqt6" virtx epytest \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide2] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt5] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide6] \ | ||
--deselect qtpy/tests/test_qtsensors.py::test_qtsensors | ||
# Qt6Sensors not yet packaged and enabled in PyQt6 ebuild | ||
fi | ||
if use pyside2; then | ||
einfo "Testing with ${EPYTHON} and QT_API=PySide2" | ||
QT_API="pyside2" virtx epytest \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt5] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt6] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide6] | ||
fi | ||
if use pyside6; then | ||
einfo "Testing with ${EPYTHON} and QT_API=PySide6" | ||
QT_API="pyside6" virtx epytest \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PySide2] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt5] \ | ||
--deselect qtpy/tests/test_main.py::test_qt_api_environ[PyQt6] \ | ||
--deselect qtpy/tests/test_qtsensors.py::test_qtsensors | ||
# Qt6Sensors not yet packaged and enabled in PySide6 ebuild | ||
fi | ||
} | ||
|
||
pkg_postinst() { | ||
elog "When multiple Qt4Python targets are enabled QtPy will default to" | ||
elog "the first enabled target in this order: PyQt5 PySide2 PyQt6 PySide6." | ||
elog "This can be overridden with the QT_API environment variable." | ||
} |