summaryrefslogtreecommitdiff
path: root/dev-python/PyQt6/PyQt6-6.4.0.ebuild
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2022-10-03 19:45:53 -0400
committerIonen Wolkens <ionen@gentoo.org>2022-10-03 21:32:18 -0400
commit105b1a86c2142f6e8c6128b845ae294bdd07821d (patch)
treec648bbd9fe448061c28c79c11946fa596c595951 /dev-python/PyQt6/PyQt6-6.4.0.ebuild
parentd807608fbdff88a4e60f9b98f5d1ee7579341546 (diff)
downloadgentoo-105b1a86c2142f6e8c6128b845ae294bdd07821d.tar.gz
gentoo-105b1a86c2142f6e8c6128b845ae294bdd07821d.tar.bz2
gentoo-105b1a86c2142f6e8c6128b845ae294bdd07821d.zip
dev-python/PyQt6: add 6.4.0
qt-6.4.0 is only in the ::qt overlay the moment, but this works just fine with 6.3.2 that I can see. Adding but may be better to wait to match 6.x as a precaution in the future, notably confuses 1 qutebrowser test but it has no real consequence. Eitherway, given it's masked not too woried about this and want to get some testing out of these things to know effects of mismatch. PyQt6-6.4.0 adds support for QtTextToSpeech and QtPdf but neither can be enabled at the moment. - pdf: from qtwebengine:6 but is currently disabled in its ebuild - speech: not available in <qt-6.4.0 and qtspeech:6 is not packaged in the qt overlay either yet, skips the need to bump QT_PV to 6.4:6 here for now Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-python/PyQt6/PyQt6-6.4.0.ebuild')
-rw-r--r--dev-python/PyQt6/PyQt6-6.4.0.ebuild149
1 files changed, 149 insertions, 0 deletions
diff --git a/dev-python/PyQt6/PyQt6-6.4.0.ebuild b/dev-python/PyQt6/PyQt6-6.4.0.ebuild
new file mode 100644
index 000000000000..dc1177248853
--- /dev/null
+++ b/dev-python/PyQt6/PyQt6-6.4.0.ebuild
@@ -0,0 +1,149 @@
+# Copyright 2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=sip
+PYTHON_COMPAT=( python3_{8..11} )
+inherit distutils-r1 flag-o-matic multiprocessing qmake-utils
+
+QT_PV="6.3:6" # minimum tested qt version
+
+DESCRIPTION="Python bindings for the Qt framework"
+HOMEPAGE="https://www.riverbankcomputing.com/software/pyqt/"
+SRC_URI="mirror://pypi/${P::1}/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+# currently keeping defaults in sync with qtbase (no extra deps), but trying
+# to stay minimal'ish given each builds relatively slowly (subject to change,
+# perhaps more or less depending on consumers and if qtbase is ever split)
+IUSE="
+ +dbus debug qml designer examples gles2-only +gui help multimedia
+ +network opengl positioning printsupport quick quick3d serialport
+ +sql +ssl svg testlib webchannel websockets +widgets +xml"
+# see `grep -r "%Import " sip` and `grep qmake_QT project.py`
+REQUIRED_USE="
+ designer? ( gui widgets )
+ help? ( gui widgets )
+ multimedia? ( gui network )
+ opengl? ( gui )
+ printsupport? ( gui widgets )
+ qml? ( network )
+ quick3d? ( gui qml )
+ quick? ( gui qml )
+ sql? ( widgets )
+ svg? ( gui )
+ testlib? ( gui widgets )
+ webchannel? ( network )
+ websockets? ( network )
+ widgets? ( gui )"
+
+# note: xml(+) for now given qtbase-6.3.1-r0 is missing IUSE=xml with a TODO
+DEPEND="
+ >=dev-qt/qtbase-${QT_PV}[dbus?,gles2-only=,gui?,network?,opengl?,sql?,ssl=,widgets?,xml(+)?]
+ dbus? (
+ dev-python/dbus-python[${PYTHON_USEDEP}]
+ sys-apps/dbus
+ )
+ designer? ( >=dev-qt/qttools-${QT_PV}[designer] )
+ help? ( >=dev-qt/qttools-${QT_PV}[assistant] )
+ multimedia? ( >=dev-qt/qtmultimedia-${QT_PV} )
+ positioning? ( >=dev-qt/qtpositioning-${QT_PV} )
+ qml? ( >=dev-qt/qtdeclarative-${QT_PV} )
+ quick3d? ( >=dev-qt/qtquick3d-${QT_PV} )
+ serialport? ( >=dev-qt/qtserialport-${QT_PV} )
+ svg? ( >=dev-qt/qtsvg-${QT_PV} )
+ webchannel? ( >=dev-qt/qtwebchannel-${QT_PV} )
+ websockets? ( >=dev-qt/qtwebsockets-${QT_PV} )"
+RDEPEND="
+ ${DEPEND}
+ >=dev-python/PyQt6-sip-13.4[${PYTHON_USEDEP}]"
+BDEPEND="
+ >=dev-python/PyQt-builder-1.11[${PYTHON_USEDEP}]
+ >=dev-qt/qtbase-${QT_PV}
+ sys-devel/gcc
+ dbus? ( virtual/pkgconfig )"
+
+src_prepare() {
+ default
+
+ # hack: qmake wants g++ (not clang), try to respect ${CHOST} #726112
+ mkdir "${T}"/cxx || die
+ ln -s "$(type -P ${CHOST}-g++ || type -P g++ || die)" "${T}"/cxx/g++ || die
+ PATH=${T}/cxx:${PATH}
+}
+
+src_configure() {
+ append-cxxflags -std=c++17 # for clang and old gcc that default to <17
+
+ pyqt-use_enable() {
+ local state=$(usex ${1} --enable= --disable=)
+ shift
+ echo ${*/#/${state}}
+ }
+
+ # workaround until bug 863395 has something to offer
+ local qmake6=$(qt5_get_bindir)/qmake
+ qmake6=${qmake6//qt5/qt6}
+
+ DISTUTILS_ARGS=(
+ --jobs=$(makeopts_jobs)
+ --qmake="${qmake6}"
+ --qmake-setting="$(qt5_get_qmake_args)"
+ --verbose
+ --confirm-license
+
+ # TODO: enable/restrict more as qt6 packages/USE get added
+ --disable=QAxContainer
+ --disable=QtBluetooth
+ --enable=QtCore
+ $(pyqt-use_enable dbus QtDBus)
+ $(pyqt-use_enable designer QtDesigner)
+ $(pyqt-use_enable help QtHelp)
+ $(pyqt-use_enable gui QtGui)
+ #--disable=QtLocation # force-disabled in project.py
+ $(pyqt-use_enable multimedia QtMultimedia \
+ $(usev widgets QtMultimediaWidgets))
+ $(pyqt-use_enable network QtNetwork)
+ --disable=QtNfc
+ $(pyqt-use_enable opengl QtOpenGL \
+ $(usev widgets QtOpenGLWidgets))
+ --disable=QtPdf #+QtPdfWidgets (QtPdf is disabled in qtwebengine:6)
+ $(pyqt-use_enable positioning QtPositioning)
+ $(pyqt-use_enable printsupport QtPrintSupport)
+ $(pyqt-use_enable qml QtQml)
+ $(pyqt-use_enable quick QtQuick \
+ $(usev widgets QtQuickWidgets))
+ $(pyqt-use_enable quick3d QtQuick3D)
+ --disable=QtRemoteObjects
+ --disable=QtSensors
+ $(pyqt-use_enable serialport QtSerialPort)
+ $(pyqt-use_enable sql QtSql)
+ $(pyqt-use_enable svg QtSvg \
+ $(usev widgets QtSvgWidgets))
+ $(pyqt-use_enable testlib QtTest)
+ --disable=QtTextToSpeech
+ $(pyqt-use_enable webchannel QtWebChannel)
+ $(pyqt-use_enable websockets QtWebSockets)
+ $(pyqt-use_enable widgets QtWidgets)
+ $(pyqt-use_enable xml QtXml)
+
+ $(usev debug '--debug --qml-debug --tracing')
+
+ $(usev !dbus --no-dbus-python)
+ # TODO?: plugins not in wheels by upstream, see project.py#L215
+ # (if needed by something, will need to be added to python_install)
+ $(usev !designer --no-designer-plugin)
+ $(usev !qml --no-qml-plugin)
+
+ $(usev !gles2-only --disabled-feature=PyQt_OpenGL_ES2)
+ $(usev !ssl --disabled-feature=PyQt_SSL)
+ )
+}
+
+python_install_all() {
+ einstalldocs
+ use examples && dodoc -r examples
+}