summaryrefslogtreecommitdiff
path: root/dev-python/pyotherside
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/pyotherside')
-rw-r--r--dev-python/pyotherside/Manifest4
-rw-r--r--dev-python/pyotherside/files/pyotherside-1.6.0-qt6.5.patch34
-rw-r--r--dev-python/pyotherside/pyotherside-1.6.0-r1.ebuild106
-rw-r--r--dev-python/pyotherside/pyotherside-1.6.0.ebuild15
4 files changed, 152 insertions, 7 deletions
diff --git a/dev-python/pyotherside/Manifest b/dev-python/pyotherside/Manifest
index 139447fb794b..439546fba549 100644
--- a/dev-python/pyotherside/Manifest
+++ b/dev-python/pyotherside/Manifest
@@ -1,3 +1,5 @@
+AUX pyotherside-1.6.0-qt6.5.patch 1745 BLAKE2B ed4b87ad3379b9a24534c44bf34e8b94f6aa14a90551cbfee8ee7bcc3ca15ff2e9a3e29b5de83567071132c4a56fdae99939b9c7e581a1516d5716927a660cb2 SHA512 2f214a6475742d205ef641495fc52857ff56fed056fce7e7b7303c3b00371d419de1472592c3da1f4d40889d7871840f2e0448548fdb54637070e70753d3e518
DIST pyotherside-1.6.0.tar.gz 183645 BLAKE2B e2a12a9a96f3672a5e322c9f2e84d485b8086bdcacfc6586e0c23f6dd730d3e66cea66618540fd9a304480a9ab86386e2fe0136047c59f70bfa3b5cff9e8e76e SHA512 57835db9d65fae10e6b3ec8ab37793e316324e7a819a1045436adf9eabdee11ccf3090a4db0302283b236e77e5e0bd14cf92ed1430835ccc324e50085a872787
-EBUILD pyotherside-1.6.0.ebuild 1262 BLAKE2B 2bff5a8d65ccfe2b214fc8382ba187cd17afb8cd2b42b03b21597e2169b3113e74c080cc0a9ae7e85ff57d888b127432f0361e99ca9e1b97f68cd3aebfa0feaf SHA512 13411b2916ca77f278643e68951a7f7becb61e59df16e472746aa821d216223bf5254d5e869d925e7d96f3fd3970aeba4cbf7da2c2fc4e5d0db9345ac696d72c
+EBUILD pyotherside-1.6.0-r1.ebuild 1965 BLAKE2B 798b2305c0feeae69a9699dad74e2238ed6737ec40bf2409eaeee2e613a5b7a905ac915e3c6b13f9348f916405e3dfbe10ecd59865bf093f3ff3480f62319215 SHA512 9506d25c5faa9521ed5956a0173bc1823d738d007df31eb8eaf71c0cd7c069e92aa93ad709479877a49ff9422832a8e1c88b62edc5a243a228b4d4f8ac102729
+EBUILD pyotherside-1.6.0.ebuild 1303 BLAKE2B aabb06d23f6b2a81f83b7f365b233d7ec6197c60a397a8399c395a723a95106daa8ec2a3f044933fef452a9e99e0cd23b2d74c3ad0b98c2c332145251114013b SHA512 e04da50c62fde18ef9a082fd85118d03f3446afb8724f1c1727fc43d0a644d375c551b039ea5dd33a94888ac78f789233557deb683d6bee9ed65c5f30e6c3d4b
MISC metadata.xml 326 BLAKE2B c323223e1038b40f67b25b1f13a4f5fec61175ef0b73bd3ec3a4228bb51b0a41e0f27ca2f47ec9f2b595e07a83358c74f254054d06b4488ff25d2a1c046899b4 SHA512 9d4649f09f1a00a9aa4a8eeb4e535ceff6b924253cd3ac93a8c0d1f6fe2a94c02a7f14f5b722b7b39744ab7331cd3efb57dc59bcb7ab6fb5ce59f692c0f2718a
diff --git a/dev-python/pyotherside/files/pyotherside-1.6.0-qt6.5.patch b/dev-python/pyotherside/files/pyotherside-1.6.0-qt6.5.patch
new file mode 100644
index 000000000000..08844cc8338d
--- /dev/null
+++ b/dev-python/pyotherside/files/pyotherside-1.6.0-qt6.5.patch
@@ -0,0 +1,34 @@
+From 45044252aaf73262cd46443acd049e7afcdf072b Mon Sep 17 00:00:00 2001
+From: Thomas Perl <m@thp.io>
+Date: Sat, 2 Dec 2023 18:46:06 +0100
+Subject: [PATCH] Fix build error with Qt >= 6.5 (fixes #128)
+
+--- a/src/qpython_priv.cpp
++++ b/src/qpython_priv.cpp
+@@ -405,8 +405,25 @@ pyotherside_QObjectMethod_call(PyObject *callable_object, PyObject *args, PyObje
+ }
+
+ QVariant result;
++#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
++ QGenericReturnArgument returnArg = Q_RETURN_ARG(QVariant, result);
++#else
++ /**
++ * Starting with Qt 6.5, Q_RETURN_ARG() expands to a QMetaMethodReturnArgument,
++ * whereas previously it returned a QGenericReturnArgument. Since we are using
++ * the old, deprecated QMetaMethod::invoke() functions, and those take a
++ * QGenericReturnArgument and not a QMetaMethodReturnArgument, we need to
++ * create the QGenericReturnArgument ourselves by emulating what Q_RETURN_ARG()
++ * does in old Qt versions before 6.5.
++ *
++ * See also:
++ * https://bugreports.qt.io/browse/QTBUG-113147
++ * https://github.com/thp/pyotherside/issues/128
++ **/
++ QGenericReturnArgument returnArg {QT_STRINGIFY(QVariant), &result};
++#endif
+ if (method.invoke(o, Qt::DirectConnection,
+- Q_RETURN_ARG(QVariant, result), genericArguments.value(0),
++ returnArg, genericArguments.value(0),
+ genericArguments.value(1), genericArguments.value(2),
+ genericArguments.value(3), genericArguments.value(4),
+ genericArguments.value(5), genericArguments.value(6),
diff --git a/dev-python/pyotherside/pyotherside-1.6.0-r1.ebuild b/dev-python/pyotherside/pyotherside-1.6.0-r1.ebuild
new file mode 100644
index 000000000000..44c3228186f8
--- /dev/null
+++ b/dev-python/pyotherside/pyotherside-1.6.0-r1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit multibuild qmake-utils python-single-r1
+
+DESCRIPTION="Asynchronous Python 3 Bindings for Qt"
+HOMEPAGE="https://github.com/thp/pyotherside https://thp.io/2011/pyotherside/"
+SRC_URI="https://github.com/thp/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+IUSE="qt5 qt6"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+ || ( qt5 qt6 )"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ qt5? (
+ dev-qt/qtcore:5
+ dev-qt/qtdeclarative:5
+ dev-qt/qtgui:5
+ dev-qt/qtopengl:5
+ dev-qt/qtsvg:5
+ )
+ qt6? (
+ dev-qt/qtbase:6[opengl]
+ dev-qt/qtdeclarative:6[opengl]
+ dev-qt/qtquick3d:6[opengl]
+ dev-qt/qtsvg:6
+ )"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.6.0-qt6.5.patch
+)
+
+pkg_setup() {
+ MULTIBUILD_VARIANTS=( $(usev qt5) $(usev qt6) )
+ python_setup
+}
+
+src_prepare() {
+ default
+ sed -i -e "s/qtquicktests//" pyotherside.pro || die
+ multibuild_copy_sources
+}
+
+src_configure() {
+ myconfigure() {
+ pushd "${BUILD_DIR}" > /dev/null || die
+
+ if [[ "${MULTIBUILD_VARIANT}" == qt5 ]]; then
+ eqmake5
+ elif [[ "${MULTIBUILD_VARIANT}" == qt6 ]]; then
+ eqmake6
+ else
+ # This should never happen if REQUIRED_USE is enforced
+ die "Neither Qt5 nor Qt6 support enabled, aborting"
+ fi
+ popd > /dev/null || die
+ }
+
+ multibuild_foreach_variant myconfigure
+}
+
+src_compile() {
+ mycompile() {
+ pushd "${BUILD_DIR}" > /dev/null || die
+
+ emake
+
+ popd > /dev/null || die
+ }
+
+ multibuild_foreach_variant mycompile
+}
+
+src_test() {
+ mytest() {
+ pushd "${BUILD_DIR}" > /dev/null || die
+
+ QT_QPA_PLATFORM="offscreen" tests/tests || die
+
+ popd > /dev/null || die
+ }
+
+ multibuild_foreach_variant mytest
+}
+
+src_install() {
+ myinstall() {
+ pushd "${BUILD_DIR}" > /dev/null || die
+
+ emake install INSTALL_ROOT="${D}"
+
+ popd > /dev/null || die
+ }
+
+ multibuild_foreach_variant myinstall
+}
diff --git a/dev-python/pyotherside/pyotherside-1.6.0.ebuild b/dev-python/pyotherside/pyotherside-1.6.0.ebuild
index 41263ea70ea1..f151aceda94f 100644
--- a/dev-python/pyotherside/pyotherside-1.6.0.ebuild
+++ b/dev-python/pyotherside/pyotherside-1.6.0.ebuild
@@ -1,9 +1,9 @@
-# Copyright 1999-2023 Gentoo Authors
+# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9..11} )
+PYTHON_COMPAT=( python3_{10..12} )
inherit qmake-utils python-single-r1
@@ -19,9 +19,7 @@ IUSE="+qt5 qt6"
REQUIRED_USE="${PYTHON_REQUIRED_USE}
^^ ( qt5 qt6 )"
-# qt6 TODO:
-# - check if all qt6 deps are okay yet
-# - multibuild for both qt5 and qt6 if requested
+# TODO: multibuild for both qt5 and qt6 if requested
RDEPEND="
${PYTHON_DEPS}
qt5? (
@@ -33,11 +31,16 @@ RDEPEND="
)
qt6? (
dev-qt/qtbase:6[opengl]
- dev-qt/qtdeclarative:6
+ dev-qt/qtdeclarative:6[opengl]
+ dev-qt/qtquick3d:6[opengl]
dev-qt/qtsvg:6
)"
DEPEND="${RDEPEND}"
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.6.0-qt6.5.patch
+)
+
src_prepare() {
default
sed -i -e "s/qtquicktests//" pyotherside.pro || die