diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2023-07-24 14:55:15 -0400 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2023-07-24 20:01:10 -0400 |
commit | 7f8237e55580e580ba6137f87b7c7fcced55ee92 (patch) | |
tree | 37937a92d50f7daeffbcd792a1feca269b42e98d /dev-python/PyQt5 | |
parent | dev-python/PyQt5-sip: add 12.12.2, enable py3.12 (diff) | |
download | gentoo-7f8237e55580e580ba6137f87b7c7fcced55ee92.tar.gz gentoo-7f8237e55580e580ba6137f87b7c7fcced55ee92.tar.bz2 gentoo-7f8237e55580e580ba6137f87b7c7fcced55ee92.zip |
dev-python/PyQt5: enable py3.12, use distutils-r1+PEP517
Not 100% sure that there is no issues with py3.12 (no test suite),
but its major revdep (qutebrowser[-qt6]) seems to be working as
expected and has no tests regressions (that is, if we force in
pytest-qt to use 3.12 despite lacking pyside's 3.12 -- pyside
won't matter for PyQt)
Also migrate to PEP517 and bring a bit more in-line with PyQt6's
ebuild (allows a fair amount of simplification). Note that migration
is based on current ebuild options and have not reviewed their
original correctness (same for dependencies), merely checked that
files install the same. Could still be oversights given the amount
of options.
wrt files, there is one difference, just like PyQt6 there is two
plugins that upstream (intentionally) does not install when using
wheels as such they are now missing, aka:
* FILES:-usr/lib64/qt5/plugins/PyQt5/libpyqt5qmlplugin.so
* FILES:-usr/lib64/qt5/plugins/designer/libpyqt5.so
Unknown if anything actually needed those with PyQt5, may need
manual handling if something comes up.
Note that I don't really plan to maintain this unless it's causing
problems, ultimately support for Qt5 will be dropped sooner than
later in qutebrowser.
Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-python/PyQt5')
-rw-r--r-- | dev-python/PyQt5/PyQt5-5.15.9-r1.ebuild | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/dev-python/PyQt5/PyQt5-5.15.9-r1.ebuild b/dev-python/PyQt5/PyQt5-5.15.9-r1.ebuild new file mode 100644 index 000000000000..c30f8d4b3f3a --- /dev/null +++ b/dev-python/PyQt5/PyQt5-5.15.9-r1.ebuild @@ -0,0 +1,163 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=sip +PYPI_NO_NORMALIZE=1 +PYTHON_COMPAT=( python3_{10..12} ) + +inherit distutils-r1 flag-o-matic multiprocessing pypi qmake-utils + +DESCRIPTION="Python bindings for the Qt framework" +HOMEPAGE=" + https://www.riverbankcomputing.com/software/pyqt/ + https://pypi.org/project/PyQt5/ +" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" + +# TODO: QtNfc, QtQuick3D, QtRemoteObjects +IUSE=" + bluetooth dbus debug declarative designer examples gles2-only gui help location + multimedia network opengl positioning printsupport sensors serialport speech + sql +ssl svg testlib webchannel websockets widgets x11extras xmlpatterns +" + +# The requirements below were extracted from the qmake_QT declarations +# in project.py and from the output of 'grep -r "%Import " ${S}/sip' +REQUIRED_USE=" + bluetooth? ( gui ) + declarative? ( gui network ) + designer? ( widgets ) + help? ( gui widgets ) + location? ( positioning ) + multimedia? ( gui network ) + opengl? ( gui widgets ) + positioning? ( gui ) + printsupport? ( gui widgets ) + sensors? ( gui ) + serialport? ( gui ) + sql? ( widgets ) + svg? ( gui widgets ) + testlib? ( widgets ) + webchannel? ( network ) + websockets? ( network ) + widgets? ( gui ) + xmlpatterns? ( network ) +" + +# Minimal supported version of Qt. +QT_PV="5.15:5" + +DEPEND=" + >=dev-qt/qtcore-${QT_PV} + >=dev-qt/qtxml-${QT_PV} + bluetooth? ( >=dev-qt/qtbluetooth-${QT_PV} ) + dbus? ( + dev-python/dbus-python[${PYTHON_USEDEP}] + >=dev-qt/qtdbus-${QT_PV} + sys-apps/dbus + ) + declarative? ( >=dev-qt/qtdeclarative-${QT_PV}[widgets?] ) + designer? ( >=dev-qt/designer-${QT_PV} ) + gui? ( >=dev-qt/qtgui-${QT_PV}[gles2-only=] ) + help? ( >=dev-qt/qthelp-${QT_PV} ) + location? ( >=dev-qt/qtlocation-${QT_PV} ) + multimedia? ( >=dev-qt/qtmultimedia-${QT_PV}[widgets?] ) + network? ( >=dev-qt/qtnetwork-${QT_PV}[ssl=] ) + opengl? ( >=dev-qt/qtopengl-${QT_PV} ) + positioning? ( >=dev-qt/qtpositioning-${QT_PV} ) + printsupport? ( >=dev-qt/qtprintsupport-${QT_PV} ) + sensors? ( >=dev-qt/qtsensors-${QT_PV} ) + serialport? ( >=dev-qt/qtserialport-${QT_PV} ) + speech? ( >=dev-qt/qtspeech-${QT_PV} ) + sql? ( >=dev-qt/qtsql-${QT_PV} ) + svg? ( >=dev-qt/qtsvg-${QT_PV} ) + testlib? ( >=dev-qt/qttest-${QT_PV} ) + webchannel? ( >=dev-qt/qtwebchannel-${QT_PV} ) + websockets? ( >=dev-qt/qtwebsockets-${QT_PV} ) + widgets? ( >=dev-qt/qtwidgets-${QT_PV} ) + x11extras? ( >=dev-qt/qtx11extras-${QT_PV} ) + xmlpatterns? ( >=dev-qt/qtxmlpatterns-${QT_PV} ) +" +RDEPEND=" + ${DEPEND} + >=dev-python/PyQt5-sip-12.11:=[${PYTHON_USEDEP}] +" +BDEPEND=" + >=dev-python/PyQt-builder-1.14.1[${PYTHON_USEDEP}] + >=dev-python/sip-6.6.2[${PYTHON_USEDEP}] + >=dev-qt/qtcore-${QT_PV} + dbus? ( virtual/pkgconfig ) +" + +python_configure_all() { + append-cxxflags ${CPPFLAGS} # respect CPPFLAGS notably for DISTUTILS_EXT=1 + + pyqt_use_enable() { + local state=$(usex ${1} --enable= --disable=) + shift + echo ${*/#/${state}} + } + + DISTUTILS_ARGS=( + --jobs="$(makeopts_jobs)" + --qmake="$(qt5_get_bindir)"/qmake + --qmake-setting="$(qt5_get_qmake_args)" + --verbose + --confirm-license + + --enable=pylupdate + --enable=pyrcc + --enable=Qt + --enable=QtCore + $(pyqt_use_enable bluetooth QtBluetooth) + $(pyqt_use_enable dbus QtDBus) + $(pyqt_use_enable declarative QtQml QtQuick \ + $(usev widgets QtQuickWidgets)) + $(pyqt_use_enable designer QtDesigner) + $(pyqt_use_enable gui QtGui \ + $(use gles2-only && echo _QOpenGLFunctions_ES2 || echo _QOpenGLFunctions_{2_0,2_1,4_1_Core})) + $(pyqt_use_enable help QtHelp) + $(pyqt_use_enable location QtLocation) + $(pyqt_use_enable multimedia QtMultimedia \ + $(usev widgets QtMultimediaWidgets)) + $(pyqt_use_enable network QtNetwork) + $(pyqt_use_enable opengl QtOpenGL) + $(pyqt_use_enable positioning QtPositioning) + $(pyqt_use_enable printsupport QtPrintSupport) + $(pyqt_use_enable sensors QtSensors) + $(pyqt_use_enable serialport QtSerialPort) + $(pyqt_use_enable speech QtTextToSpeech) + $(pyqt_use_enable sql QtSql) + $(pyqt_use_enable svg QtSvg) + $(pyqt_use_enable testlib QtTest) + $(pyqt_use_enable webchannel QtWebChannel) + $(pyqt_use_enable websockets QtWebSockets) + $(pyqt_use_enable widgets QtWidgets) + $(pyqt_use_enable x11extras QtX11Extras) + --enable=QtXml + $(pyqt_use_enable xmlpatterns QtXmlPatterns) + + $(usev debug '--debug --qml-debug --tracing') + + $(usev !dbus --no-dbus-python) + # note: upstream currently intentionally skips installing these two + # plugins when using wheels w/ pep517 so, *if* something does need + # them, it will need to be handled manually + $(usev !declarative --no-qml-plugin) + $(usev !designer --no-designer-plugin) + + $(usev gles2-only --disabled-feature=PyQt_Desktop_OpenGL) + $(usev !ssl --disabled-feature=PyQt_SSL) + ) +} + +python_install_all() { + einstalldocs + use examples && dodoc -r examples +} |