aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Woolley <rob.woolley@windriver.com>2023-12-02 08:10:52 -0800
committerMartin Jansa <martin.jansa@gmail.com>2024-04-05 08:24:32 +0200
commite7795708cd4aecb51547104b4aac8511b1dc7b08 (patch)
treee68a6327e87ff25f28635ecd83fba3e0960fca6d
parent1fa0490319be5d188aef2fc004fd8b0dba962377 (diff)
python3-pyqt5: Split recipe into target and native versions
We need python3-pyqt5-native as a build tool to ensure that sip_helper.cmake successfully finds the SIP binding generator. Using BBCLASSEXTEND results in unnecessary -native dependencies. Creating 2 recipes allows us to disable features and PyQt modules that may be present in qtbase but not in qtbase-native. Signed-off-by: Rob Woolley <rob.woolley@windriver.com> Signed-off-by: Martin Jansa <martin.jansa@gmail.com>
-rw-r--r--recipes-python/pyqt5/python3-pyqt5-native_5.15.7.bb9
-rw-r--r--recipes-python/pyqt5/python3-pyqt5.inc79
-rw-r--r--recipes-python/pyqt5/python3-pyqt5_5.15.7.bb65
3 files changed, 90 insertions, 63 deletions
diff --git a/recipes-python/pyqt5/python3-pyqt5-native_5.15.7.bb b/recipes-python/pyqt5/python3-pyqt5-native_5.15.7.bb
new file mode 100644
index 00000000..db820929
--- /dev/null
+++ b/recipes-python/pyqt5/python3-pyqt5-native_5.15.7.bb
@@ -0,0 +1,9 @@
+require python3-pyqt5.inc
+
+SRC_URI[md5sum] = "ae2c68e38b9b36fdf5f932419353a2b3"
+SRC_URI[sha256sum] = "755121a52b3a08cb07275c10ebb96576d36e320e572591db16cfdbc558101594"
+
+inherit native
+
+# Add PyQt_OpenGL to the DISABLED_FEATURES even if opengl distro feature is enabled
+DISABLED_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'PyQt_OpenGL', '', d)}"
diff --git a/recipes-python/pyqt5/python3-pyqt5.inc b/recipes-python/pyqt5/python3-pyqt5.inc
new file mode 100644
index 00000000..e86ec69c
--- /dev/null
+++ b/recipes-python/pyqt5/python3-pyqt5.inc
@@ -0,0 +1,79 @@
+SUMMARY = "Python Qt5 Bindings"
+AUTHOR = "Phil Thomson @ riverbank.co.uk"
+HOMEPAGE = "https://www.riverbankcomputing.com/software/pyqt"
+SECTION = "devel/python"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
+"
+
+inherit pypi
+
+PYPI_PACKAGE = "PyQt5"
+
+S = "${WORKDIR}/PyQt5-${PV}"
+
+inherit qmake5
+inherit python3native python3-dir
+
+DEPENDS = "qtbase qtdeclarative qtquickcontrols2"
+DEPENDS += "sip3 sip3-native python3"
+
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+# Work around mk_distinfo.py race condition
+# FileNotFoundError: [Errno 2] No such file or directory: '${WORKDIR}/image/${WORKDIR}/recipe-sysroot-native/usr/lib/python3.10/site-packages/PyQt5/QtCore.so'
+# https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97ae223251a26f941c1404dc36390244c636e142
+PARALLEL_MAKEINST = "-j 1"
+
+DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '', 'PyQt_OpenGL', d)}"
+
+# These are the base pyqt modules needed by native and target
+PYQT_MODULES = "QtCore QtGui QtXml"
+
+do_configure:prepend() {
+ cd ${S}
+ echo "py_platform = linux" > pyqt.cfg
+ echo "py_inc_dir = %(sysroot)/$includedir/python%(py_major).%(py_minor)${PYTHON_ABI}" >> pyqt.cfg
+ echo "py_pylib_dir = %(sysroot)/${libdir}/python%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "py_pylib_lib = python$%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "pyqt_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> pyqt.cfg
+ echo "pyqt_bin_dir = ${D}/${bindir}" >> pyqt.cfg
+ echo "pyqt_sip_dir = ${D}/${datadir}/sip/PyQt5" >> pyqt.cfg
+ echo "pyuic_interpreter = ${D}/${bindir}/python%(py_major).%(py_minor)" >> pyqt.cfg
+ echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
+ echo "qt_shared = True" >> pyqt.cfg
+ QT_VERSION=`${OE_QMAKE_QMAKE} -query QT_VERSION`
+ echo "[Qt $QT_VERSION]" >> pyqt.cfg
+ echo "pyqt_modules = ${PYQT_MODULES}" >> pyqt.cfg
+ echo yes | ${PYTHON} configure.py --verbose --qmake ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake --configuration pyqt.cfg $(if [ -n "${STAGING_HOST_DIR}" ]; then echo --sysroot ${STAGING_HOST_DIR}; fi)
+}
+
+do_compile() {
+ cd ${S}
+ oe_runmake
+}
+
+do_install:class-target() {
+ cd ${S}
+ oe_runmake install
+}
+
+do_install:class-native() {
+ cd ${S}
+ oe_runmake install
+
+ # Copied from qmake5_base_native_do_install()
+ find "${D}" -ignore_readdir_race -name "*.la" -delete
+ if ls ${D}${libdir}/pkgconfig/Qt5*.pc >/dev/null 2>/dev/null; then
+ sed -i "s@-L${STAGING_LIBDIR}@-L\${libdir}@g" ${D}${libdir}/pkgconfig/Qt5*.pc
+ fi
+}
+
+FILES:${PN} += "${libdir}/${PYTHON_DIR}/site-packages ${datadir}/sip/PyQt5/"
+
+RDEPENDS:${PN} = "qtbase qtdeclarative qtquickcontrols2 qtquickcontrols2-mkspecs"
+RDEPENDS:${PN} += "python3-core python3-sip3"
diff --git a/recipes-python/pyqt5/python3-pyqt5_5.15.7.bb b/recipes-python/pyqt5/python3-pyqt5_5.15.7.bb
index 939d5e77..166caa6c 100644
--- a/recipes-python/pyqt5/python3-pyqt5_5.15.7.bb
+++ b/recipes-python/pyqt5/python3-pyqt5_5.15.7.bb
@@ -1,67 +1,6 @@
-SUMMARY = "Python Qt5 Bindings"
-AUTHOR = "Phil Thomson @ riverbank.co.uk"
-HOMEPAGE = "https://www.riverbankcomputing.com/software/pyqt"
-SECTION = "devel/python"
-LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "\
- file://LICENSE;md5=d32239bcb673463ab874e80d47fae504 \
-"
-
-inherit pypi
-
-PYPI_PACKAGE = "PyQt5"
+require python3-pyqt5.inc
SRC_URI[md5sum] = "ae2c68e38b9b36fdf5f932419353a2b3"
SRC_URI[sha256sum] = "755121a52b3a08cb07275c10ebb96576d36e320e572591db16cfdbc558101594"
-S = "${WORKDIR}/PyQt5-${PV}"
-
-inherit qmake5
-inherit python3native python3-dir
-
-DEPENDS = "qtbase qtdeclarative qtquickcontrols2"
-DEPENDS += "sip3 sip3-native python3"
-
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-PARALLEL_MAKEINST = ""
-
-DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '', 'PyQt_OpenGL', d)}"
-
-PYQT_MODULES = "QtCore QtGui QtNetwork QtXml QtNetwork QtQml ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'QtQuick QtWidgets QtQuickWidgets', '', d)}"
-
-do_configure:prepend() {
- cd ${S}
- echo "py_platform = linux" > pyqt.cfg
- echo "py_inc_dir = %(sysroot)/$includedir/python%(py_major).%(py_minor)${PYTHON_ABI}" >> pyqt.cfg
- echo "py_pylib_dir = %(sysroot)/${libdir}/python%(py_major).%(py_minor)" >> pyqt.cfg
- echo "py_pylib_lib = python$%(py_major).%(py_minor)" >> pyqt.cfg
- echo "pyqt_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> pyqt.cfg
- echo "pyqt_bin_dir = ${D}/${bindir}" >> pyqt.cfg
- echo "pyqt_sip_dir = ${D}/${datadir}/sip/PyQt5" >> pyqt.cfg
- echo "pyuic_interpreter = ${D}/${bindir}/python%(py_major).%(py_minor)" >> pyqt.cfg
- echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
- echo "qt_shared = True" >> pyqt.cfg
- QT_VERSION=`${OE_QMAKE_QMAKE} -query QT_VERSION`
- echo "[Qt $QT_VERSION]" >> pyqt.cfg
- echo "pyqt_modules = ${PYQT_MODULES}" >> pyqt.cfg
- echo yes | ${PYTHON} configure.py --verbose --qmake ${STAGING_BINDIR_NATIVE}/${QT_DIR_NAME}/qmake --configuration pyqt.cfg --sysroot ${STAGING_DIR_HOST}
-}
-
-do_compile() {
- cd ${S}
- oe_runmake
-}
-
-do_install() {
- cd ${S}
- oe_runmake MAKEFLAGS='-j 1' install
-}
-
-FILES:${PN} += "${libdir}/${PYTHON_DIR}/site-packages ${datadir}/sip/PyQt5/"
-
-RDEPENDS:${PN} = "qtbase qtdeclarative qtquickcontrols2 qtquickcontrols2-mkspecs"
-RDEPENDS:${PN} += "python3-core python3-sip3"
+PYQT_MODULES += "QtNetwork QtNetwork QtQml ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'QtQuick QtWidgets QtQuickWidgets', '', d)}"