package/qt5/qt5enginio: switch to a depends on for SSL support
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sun, 4 Aug 2019 15:45:45 +0000 (17:45 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Tue, 13 Aug 2019 13:13:55 +0000 (15:13 +0200)
qt5enginio requires SSL support in qt5base. However, the SSL support
in qt5base is a bit annoying: while it can be provided by either
openssl or libressl for Qt latest, it can only be provided by
libressl for Qt 5.6.

Fabrice Fontaine initially proposed [0] a dependency on
BR2_PACKAGE_QT5BASE_OPENSSL, and a long discussion
followed. Ultimately, we found the dependency to not be nice, as it
required users to know that they need to enable some SSL
implementation to be able to enable qt5enginio.

The current solution enables BR2_PACKAGE_OPENSSL (the virtual
package), which can be either openssl or libressl. This choice was
done under the assumption that we anyway don't test Qt 5.6 in the
autobuilders. However, this is incorrect: Qt latest needs gcc >= 4.8
on host and target, and we have configurations in the autobuilders
that don't meet this requirement, and therefore build Qt 5.6, and face
a build issue due to OpenSSL being used instead of LibreSSL.

After additional thinking, this commit simply gets back to the
original solution proposed by Fabrice: a "depends on". We simply add
Config.in comments to help the user in knowing what is missing to
enable qt5enginio.

An alternate solution would have been to disallow selecting qt5enginio
when Qt 5.6 is used. But fixing the qt5enginio build is also needed
for the LTS branch, and we can't drop qt5enginio on Qt 5.6 in the LTS
branch, as that could bother users.

Fixes:

  http://autobuild.buildroot.net/results/227d4b9e2b48c5b3f2dcf0fad9eefa2816c1eb0c/

[0] https://patchwork.ozlabs.org/patch/1053883/

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/qt5/qt5enginio/Config.in

index ac2d13b3ab5dbd7b4e6617edd56e7340f3f1c0e7..e5b4782040daab36c20ba5b09f828d86457bf8b3 100644 (file)
@@ -2,7 +2,7 @@ config BR2_PACKAGE_QT5ENGINIO
        bool "qt5enginio"
        select BR2_PACKAGE_QT5BASE_GUI
        select BR2_PACKAGE_QT5BASE_NETWORK
-       select BR2_PACKAGE_OPENSSL
+       depends on BR2_PACKAGE_QT5BASE_OPENSSL
        help
          Qt is a cross-platform application and UI framework for
          developers using C++.
@@ -15,9 +15,12 @@ config BR2_PACKAGE_QT5ENGINIO
 
          http://doc.qt.io/archives/qt-5.5/enginio-index.html
 
-# Forcibly selecting libressl is not possible because it is from a choice, and
-# depending on it is also not possible because we select openssl. So just a
-# a warning.
-comment "qt5enginio needs libressl for Qt5.6"
+# When Qt 5.6 is removed, replace the depends on
+# BR2_PACKAGE_QT5BASE_OPENSSL above by a select BR2_PACKAGE_OPENSSL.
+comment "qt5enginio needs libressl"
        depends on BR2_PACKAGE_QT5_VERSION_5_6
-       depends on !BR2_PACKAGE_LIBRESSL
+       depends on !BR2_PACKAGE_QT5BASE_OPENSSL
+
+comment "qt5enginio needs openssl"
+       depends on BR2_PACKAGE_QT5_VERSION_LATEST
+       depends on !BR2_PACKAGE_QT5BASE_OPENSSL