diff options
author | Rob Woolley <rob.woolley@windriver.com> | 2023-12-02 08:10:52 -0800 |
---|---|---|
committer | Martin Jansa <martin.jansa@gmail.com> | 2024-04-05 08:24:32 +0200 |
commit | e7795708cd4aecb51547104b4aac8511b1dc7b08 (patch) | |
tree | e68a6327e87ff25f28635ecd83fba3e0960fca6d | |
parent | 1fa0490319be5d188aef2fc004fd8b0dba962377 (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.bb | 9 | ||||
-rw-r--r-- | recipes-python/pyqt5/python3-pyqt5.inc | 79 | ||||
-rw-r--r-- | recipes-python/pyqt5/python3-pyqt5_5.15.7.bb | 65 |
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)}" |