dev-python/QtPy: allow dependency to be satisfied by pyside2

Now that pyside2 is in the repo, the test phase finally works!

Bug: https://bugs.gentoo.org/767199
Package-Manager: Portage-3.0.14, Repoman-3.0.2
Signed-off-by: Andrew Ammerlaan <andrewammerlaan@riseup.net>
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
This commit is contained in:
Andrew Ammerlaan
2021-01-25 22:31:30 +01:00
committed by Joonas Niilola
parent 4416b7fb16
commit 8bdd53a2d4
2 changed files with 154 additions and 26 deletions

View File

@@ -0,0 +1,107 @@
# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
PYTHON_COMPAT=( python3_{7..8} )
inherit distutils-r1 virtualx
DESCRIPTION="Abstraction layer on top of PyQt5 and PySide2 and additional custom QWidgets"
HOMEPAGE="https://github.com/spyder-ide/qtpy"
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="
declarative designer gui help location multimedia network
opengl positioning printsupport qml quick sensors serialport
sql svg test testlib webchannel webengine websockets
widgets x11extras xml xmlpatterns
"
# 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="
app-eselect/eselect-QtPy
|| (
dev-python/PyQt5[${PYTHON_USEDEP},designer?,gui?,help?,location?,multimedia?,network?,opengl?,positioning?,printsupport?,sensors?,serialport?,sql?,svg?,testlib?,webchannel?,websockets?,widgets?,x11extras?,xml(+)?,xmlpatterns?]
dev-python/pyside2[${PYTHON_USEDEP},designer?,gui?,help?,location?,multimedia?,network?,opengl(+)?,positioning?,printsupport?,sensors?,serialport(+)?,sql?,svg?,testlib?,webchannel?,websockets?,widgets?,x11extras?,xml?,xmlpatterns?]
)
webengine? ( || (
dev-python/PyQtWebEngine[${PYTHON_USEDEP}]
dev-python/pyside2[${PYTHON_USEDEP},webengine]
) )
qml? ( || (
dev-python/PyQt5[${PYTHON_USEDEP},declarative]
dev-python/pyside2[${PYTHON_USEDEP},qml]
) )
quick? ( || (
dev-python/PyQt5[${PYTHON_USEDEP},declarative]
dev-python/pyside2[${PYTHON_USEDEP},quick]
) )
declarative? ( || (
dev-python/PyQt5[${PYTHON_USEDEP},declarative]
dev-python/pyside2[${PYTHON_USEDEP},qml,quick]
) )
"
# These bindings are currently only provided by PyQt5 or PySide2
# but not by both. Just DEPEND on these directly if they are
# required.
# Please check periodically if this list is still up to date
#
# bluetooth? ( dev-python/PyQt5[${PYTHON_USEDEP},bluetooth] )
# dbus? ( dev-python/PyQt5[${PYTHON_USEDEP},dbus] )
# examples? ( dev-python/PyQt5[${PYTHON_USEDEP},examples] )
# networkauth? ( dev-python/PyQt5[${PYTHON_USEDEP},networkauth] )
# ssl? ( dev-python/PyQt5[${PYTHON_USEDEP},ssl] )
# webkit? ( dev-python/PyQt5[${PYTHON_USEDEP},webkit] )
#
# 3d? ( dev-python/pyside2[${PYTHON_USEDEP},3d] )
# charts? ( dev-python/pyside2[${PYTHON_USEDEP},charts] )
# concurrent? ( dev-python/pyside2[${PYTHON_USEDEP},concurrent] )
# datavis? ( dev-python/pyside2[${PYTHON_USEDEP},datavis] )
# scxml? ( dev-python/pyside2[${PYTHON_USEDEP},scxml] )
# script? ( dev-python/pyside2[${PYTHON_USEDEP},script] )
# scripttools? ( dev-python/pyside2[${PYTHON_USEDEP},scripttools] )
# speech? ( dev-python/pyside2[${PYTHON_USEDEP},speech] )
# The QtPy testsuite skips tests for bindings that are
# not installed, so here we ensure that everything
# is available and all tests are run.
BDEPEND="test? (
dev-python/PyQt5[${PYTHON_USEDEP},bluetooth,dbus,declarative,designer,gui,help,location,multimedia,network,networkauth,opengl,positioning,printsupport,sensors,serialport,sql,ssl,svg,testlib,webchannel,webkit,websockets,widgets,x11extras,xml(+),xmlpatterns]
dev-python/PyQtWebEngine[${PYTHON_USEDEP}]
dev-python/pyside2[${PYTHON_USEDEP},3d,charts,concurrent,datavis,designer,gui,help,location,multimedia,network,opengl(+),positioning,printsupport,qml,quick,script,scripttools,scxml,sensors,serialport(+),speech,sql,svg,testlib,webchannel,webengine,websockets,widgets,x11extras,xml,xmlpatterns]
)"
distutils_enable_tests pytest
python_test() {
export QT_API="pyqt5"
virtx pytest -vv
export QT_API="pyside2"
virtx pytest -vv
unset QT_API
}

View File

@@ -1,30 +1,51 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Gentoo Python Project</name>
</maintainer>
<longdescription>
QtPy is a small abstraction layer that lets you write
applications using a single API call to either PyQt or
PySide. QtPy also provides a set of additional QWidgets. It
provides support for PyQt5, PyQt4 and PySide using the PyQt5
layout (where the QtGui module has been split into QtGui and
QtWidgets).
Basically, you write your code as if you were using PyQt5 but
import qt from QtPy instead of PyQt5.
</longdescription>
<use>
<flag name="designer">Build bindings for the QtDesigner module and enable the designer plugin</flag>
<flag name="gui">Build bindings for the QtGui module</flag>
<flag name="printsupport">Build bindings for the QtPrintSupport module</flag>
<flag name="svg">Build bindings for the QtSvg module</flag>
<flag name="testlib">Build bindings for the QtTest module</flag>
<flag name="webengine">Build bindings for the QtWebEngine module</flag>
</use>
<upstream>
<remote-id type="github">spyder-ide/qtpy</remote-id>
<remote-id type="pypi">QtPy</remote-id>
</upstream>
<maintainer type="project">
<email>python@gentoo.org</email>
<name>Gentoo Python Project</name>
</maintainer>
<maintainer type="person">
<email>andrewammerlaan@riseup.net</email>
<name>Andrew Ammerlaan</name>
</maintainer>
<maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<longdescription>
QtPy is a small abstraction layer that lets you write applications using a single API call to either PyQt or PySide.
It provides support for PyQt5, PyQt4, PySide2 and PySide using the Qt5 layout (where the QtGui module has been split into QtGui and QtWidgets).
Basically, you can write your code as if you were using PySide2 but import Qt modules from qtpy instead of PySide2 (or PyQt5)
</longdescription>
<use>
<flag name="declarative">Pull in bindings for the QtQml/QtQuick modules and enable the qmlscene plugin</flag>
<flag name="designer">Pull in bindings for the QtDesigner module and enable the designer plugin</flag>
<flag name="gui">Pull in bindings for the QtGui module</flag>
<flag name="help">Pull in bindings for the QtHelp module</flag>
<flag name="location">Pull in bindings for the QtLocation module</flag>
<flag name="multimedia">Pull in QtMultimedia and QtMultimediaWidgets modules</flag>
<flag name="network">Pull in bindings for the QtNetwork module</flag>
<flag name="opengl">Pull in bindings for the QtOpenGL module</flag>
<flag name="positioning">Pull in bindings for the QtPositioning module</flag>
<flag name="printsupport">Pull in bindings for the QtPrintSupport module</flag>
<flag name="qml">Pull in QtQml module</flag>
<flag name="quick">Pull in QtQuick and QtQuickWidgets modules</flag>
<flag name="sensors">Pull in bindings for the QtSensors module</flag>
<flag name="serialport">Pull in bindings for the QtSerialPort module</flag>
<flag name="sql">Pull in bindings for the QtSql module</flag>
<flag name="svg">Pull in bindings for the QtSvg module</flag>
<flag name="testlib">Pull in bindings for the QtTest module</flag>
<flag name="webchannel">Pull in bindings for the QtWebChannel module</flag>
<flag name="webengine">Pull in QtWebEngine and QtWebEngineWidgets modules</flag>
<flag name="websockets">Pull in bindings for the QtWebSockets module</flag>
<flag name="widgets">Pull in bindings for the QtWidgets module</flag>
<flag name="x11extras">Pull in bindings for the QtX11Extras module</flag>
<flag name="xmlpatterns">Pull in bindings for the QtXmlPatterns module</flag>
<flag name="xml">Pull in QtXml module</flag>
</use>
<upstream>
<remote-id type="github">spyder-ide/qtpy</remote-id>
<remote-id type="pypi">QtPy</remote-id>
</upstream>
</pkgmetadata>