From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id EB369158094 for ; Sat, 13 Aug 2022 14:19:02 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D1EF7E07E6; Sat, 13 Aug 2022 14:19:00 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id A69CDE07E6 for ; Sat, 13 Aug 2022 14:19:00 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BB533341383 for ; Sat, 13 Aug 2022 14:18:59 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id D3C7A578 for ; Sat, 13 Aug 2022 14:18:56 +0000 (UTC) From: "Andrew Ammerlaan" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andrew Ammerlaan" Message-ID: <1660400316.10a2647476f7d1597a686f200caaad093b5f97fb.andrewammerlaan@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/QtPy/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-python/QtPy/Manifest dev-python/QtPy/QtPy-2.2.0.ebuild dev-python/QtPy/metadata.xml X-VCS-Directories: dev-python/QtPy/ X-VCS-Committer: andrewammerlaan X-VCS-Committer-Name: Andrew Ammerlaan X-VCS-Revision: 10a2647476f7d1597a686f200caaad093b5f97fb X-VCS-Branch: master Date: Sat, 13 Aug 2022 14:18:56 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: e01ccbec-abcc-4e79-ad32-6b0748f8e15c X-Archives-Hash: 46ca98d0519d21fd68360af7043845f6 commit: 10a2647476f7d1597a686f200caaad093b5f97fb Author: Andrew Ammerlaan gentoo org> AuthorDate: Sat Aug 13 14:16:45 2022 +0000 Commit: Andrew Ammerlaan gentoo org> CommitDate: Sat Aug 13 14:18:36 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=10a26474 dev-python/QtPy: add 2.2.0 and enable PyQt6 and PySide6 Signed-off-by: Andrew Ammerlaan gentoo.org> dev-python/QtPy/Manifest | 1 + dev-python/QtPy/QtPy-2.2.0.ebuild | 215 ++++++++++++++++++++++++++++++++++++++ dev-python/QtPy/metadata.xml | 4 + 3 files changed, 220 insertions(+) diff --git a/dev-python/QtPy/Manifest b/dev-python/QtPy/Manifest index 310de7019de0..72d18e849036 100644 --- a/dev-python/QtPy/Manifest +++ b/dev-python/QtPy/Manifest @@ -1 +1,2 @@ DIST QtPy-2.1.0.tar.gz 46470 BLAKE2B 2e032d141ad134444143cd59b8952957b226d9519925083aecce82adf62eebd3f58803cf548c4142fb1ece6f0e2340043a82a7aef056f6e4a9ac8b9caf72d80d SHA512 052cab4218d23d46162d11bf038dccfe6200b05c1c8647bd1f9dcbdaa7af50c23d4ae85829e065c7bae57630d149d562d76cc78202b4f448cbf6547010c746ff +DIST QtPy-2.2.0.tar.gz 51573 BLAKE2B 5db2be83c74fa241cbec6818fbf5b5a8ecf681fdb2813cd51b011342eb8f0f2463c0a9f251e791f6051fa3276ad1e502f7e51bf0dcd2d3192bd76d0119dc8b16 SHA512 b0e7696c7861942c16749dc5f5ccbfd038f7fc2b1defbf372885223c4100805cada9bbb2f5bdae1f1c642b52d480d6e0048e221d9efd3f3103da54e6e2bfd0ff diff --git a/dev-python/QtPy/QtPy-2.2.0.ebuild b/dev-python/QtPy/QtPy-2.2.0.ebuild new file mode 100644 index 000000000000..37fc347793e2 --- /dev/null +++ b/dev-python/QtPy/QtPy-2.2.0.ebuild @@ -0,0 +1,215 @@ +# 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 PyQt5 and PySide2 and 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" + +_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 + +# PySide6 is not yet ready for python3_11 +REQUIRED_USE=" + || ( pyqt5 pyqt6 pyside2 pyside6 ) + pyside6? ( !python_targets_python3_11 ) +" + +# 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?] + ) + !python_targets_python3_11? ( + 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] + ) + !python_targets_python3_11? ( + 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." +} diff --git a/dev-python/QtPy/metadata.xml b/dev-python/QtPy/metadata.xml index 7fa9451ae932..c28298ab205e 100644 --- a/dev-python/QtPy/metadata.xml +++ b/dev-python/QtPy/metadata.xml @@ -16,7 +16,9 @@ Use dev-python/PyQt5 as Qt for Python implementation + Use dev-python/PyQt6 as Qt for Python implementation Use dev-python/pyside2 as Qt for Python implementation + Use dev-python/pyside6 as Qt for Python implementation Build bindings for the QtQml and QtQuick modules and enable the qmlscene plugin Pull in bindings for the QtDesigner module and enable the designer plugin Pull in bindings for the QtGui module @@ -27,6 +29,8 @@ Pull in bindings for the QtOpenGL module Pull in bindings for the QtPositioning module Pull in bindings for the QtPrintSupport module + Build bindings for the QtQml + Build bindings for the QtQuick Pull in bindings for the QtSensors module Pull in bindings for the QtSerialPort module Build bindings for the QtTextToSpeech module