[v2,1/1] package/python-pyqt5: manage qt optional dependencies
diff mbox series

Message ID 20190822220638.7304-1-fontaine.fabrice@gmail.com
State New
Headers show
Series
  • [v2,1/1] package/python-pyqt5: manage qt optional dependencies
Related show

Commit Message

Fabrice Fontaine Aug. 22, 2019, 10:06 p.m. UTC
Explictly enable the needed pyqt5 modules depending on Qt5 options or
packages

QtQuick moodule can't be built without opengl support so enable only
when OpenGL is available

Fixes:
 - https://bugs.buildroot.org/show_bug.cgi?id=12121
 - http://autobuild.buildroot.org/results/cb69c5daa564aa9f3250faa395399cb00a445e85

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
Changes v1 -> v2 (after review of Thomas Petazzoni and Arnout
Vandecappelle):
 - Explicitly enable modules through --enable=module in addition to
   managing dependencies. As this is bypassing current autodetection
   mechanism, I would advise to apply it for next and not for master

 package/python-pyqt5/python-pyqt5.mk | 108 ++++++++++++++++++++++++++-
 1 file changed, 107 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/package/python-pyqt5/python-pyqt5.mk b/package/python-pyqt5/python-pyqt5.mk
index 4955936ae3..b6d559cd5b 100644
--- a/package/python-pyqt5/python-pyqt5.mk
+++ b/package/python-pyqt5/python-pyqt5.mk
@@ -11,6 +11,14 @@  PYTHON_PYQT5_LICENSE = GPL-3.0
 PYTHON_PYQT5_LICENSE_FILES = LICENSE
 
 PYTHON_PYQT5_DEPENDENCIES = python-sip host-python-sip qt5base
+PYTHON_PYQT5_MODULES = \
+	QtCore \
+	$(if $(BR2_PACKAGE_QT5BASE_DBUS),QtDBus) \
+	$(if $(BR2_PACKAGE_QT5BASE_GUI),QtGui) \
+	$(if $(BR2_PACKAGE_QT5BASE_NETWORK),QtNetwork) \
+	$(if $(BR2_PACKAGE_QT5BASE_OPENGL_LIB),QtOpenGL) \
+	$(if $(BR2_PACKAGE_QT5BASE_PRINTSUPPORT),QtPrintSupport) \
+	$(if $(BR2_PACKAGE_QT5BASE_XML),QtXml)
 
 ifeq ($(BR2_PACKAGE_PYTHON),y)
 PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON_VERSION_MAJOR)
@@ -20,6 +28,103 @@  PYTHON_PYQT5_PYTHON_DIR = python$(PYTHON3_VERSION_MAJOR)
 PYTHON_PYQT5_RM_PORT_BASE = port_v2
 endif
 
+ifeq ($(BR2_PACKAGE_QT5BASE_WIDGETS),y)
+PYTHON_PYQT5_MODULES += QtWidgets
+
+# QtSql needs QtWidgets
+ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)
+PYTHON_PYQT5_MODULES += QtSql
+endif
+
+# QtTest needs QtWidgets
+ifeq ($(BR2_PACKAGE_QT5BASE_TEST),y)
+PYTHON_PYQT5_MODULES += QtTest
+endif
+endif
+
+ifeq ($(BR2_PACKAGE_QT5CONNECTIVITY),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5connectivity
+PYTHON_PYQT5_MODULES += QtBluetooth QtNfc
+endif
+
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5declarative
+PYTHON_PYQT5_MODULES += QtQml
+
+# QtQuick module needs opengl
+ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5BASE_OPENGL_LIB),yy)
+PYTHON_PYQT5_MODULES += \
+	QtQuick \
+	$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtQuickWidgets)
+endif
+endif
+
+ifeq ($(BR2_PACKAGE_QT5ENGINIO),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5enginio
+PYTHON_PYQT5_MODULES += Enginio
+endif
+
+ifeq ($(BR2_PACKAGE_QT5LOCATION),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5location
+PYTHON_PYQT5_MODULES += QtLocation QtPositioning
+endif
+
+ifeq ($(BR2_PACKAGE_QT5MULTIMEDIA),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5multimedia
+PYTHON_PYQT5_MODULES += \
+	QtMultimedia \
+	$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtMultimediaWidgets)
+endif
+
+ifeq ($(BR2_PACKAGE_QT5SENSORS),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5sensors
+PYTHON_PYQT5_MODULES += QtSensors
+endif
+
+ifeq ($(BR2_PACKAGE_QT5SERIALPORT),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5serialport
+PYTHON_PYQT5_MODULES += QtSerialPort
+endif
+
+ifeq ($(BR2_PACKAGE_QT5SVG),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5svg
+PYTHON_PYQT5_MODULES += QtSvg
+endif
+
+ifeq ($(BR2_PACKAGE_QT5WEBCHANNEL),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5webchannel
+PYTHON_PYQT5_MODULES += QtWebChannel
+endif
+
+ifeq ($(BR2_PACKAGE_QT5WEBENGINE),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5webengine
+PYTHON_PYQT5_MODULES += \
+	QtWebEngineCore \
+	$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebEngineWidgets)
+endif
+
+ifeq ($(BR2_PACKAGE_QT5WEBKIT),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5webkit
+PYTHON_PYQT5_MODULES += \
+	QtWebKit \
+	$(if $(BR2_PACKAGE_QT5BASE_WIDGETS),QtWebKitWidgets)
+endif
+
+ifeq ($(BR2_PACKAGE_QT5WEBSOCKETS),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5websockets
+PYTHON_PYQT5_MODULES += QtWebSockets
+endif
+
+ifeq ($(BR2_PACKAGE_QT5X11EXTRAS),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5x11extras
+PYTHON_PYQT5_MODULES += QtX11Extras
+endif
+
+ifeq ($(BR2_PACKAGE_QT5XMLPATTERNS),y)
+PYTHON_PYQT5_DEPENDENCIES += qt5xmlpatterns
+PYTHON_PYQT5_MODULES += QtXmlPatterns
+endif
+
 PYTHON_PYQT5_QTDETAIL_LICENSE = Open Source
 
 PYTHON_PYQT5_QTDETAIL_TYPE = shared
@@ -52,7 +157,8 @@  PYTHON_PYQT5_CONF_OPTS = \
 	-w --confirm-license \
 	--no-designer-plugin \
 	--no-docstrings \
-	--no-sip-files
+	--no-sip-files \
+	$(foreach module,$(PYTHON_PYQT5_MODULES),--enable=$(module))
 
 define PYTHON_PYQT5_CONFIGURE_CMDS
 	$(call PYTHON_PYQT5_GENERATE_QTDETAIL,$(@D))