Skip to contentSkip to conversation

qt5webengine: enable build for 5.6.3

PATCH New Gaël PORTAY 3 participants 4 messages Nov 23, 2017 – Nov 27, 2017

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 qt5webengine: enable build for 5.6.3

The build was broken in 5.6.2 and was disabled.

It compiles fine since 5.6.3.

The two additional patches are useful at run-time.

The first one avoid the need to specify the path to the SSL certificate directory (using an additional environment variable).

The second one is the same used in 5.9.x (plus resolved conflicts). It uses the process's context to get handles on EGL and GLESv2 libraries. Those libraries are linked to Qt WebEngine at compile time.

The patch is particularly usefull for RPI boards since the raspberrypi userland package does not provide the libEGLv2.so.2 and libGLES.so.1 symlinks. Both library paths are hardcoded in Qt WebEngine.

---

Changes since v1:
- reword commit message to include comments from cover-letter
- format the first patch using git; and add my signed-off-by

 .../5.6.3/0001-Change-default-SSL-directory.patch  | 35 ++++++++
 ...ad-libEGL-and-libGLES2-symbols-implicitly.patch | 93 ++++++++++++++++++++++
 package/qt5/qt5webengine/Config.in                 |  5 --
 package/qt5/qt5webengine/qt5webengine.hash         |  3 +
 4 files changed, 131 insertions(+), 5 deletions(-)
 create mode 100644 package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch
 create mode 100644 package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch
package/qt5/qt5webengine/5.6.3/0001-Change-default-SSL-directory.patch new file +35 -0
new file mode 100644
index 0000000000..15cd9f87bb
@@ -0,0 +1,35 @@
+From fc41c0f572ff347142cca4bf5d82b87782bb5906 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= <[email protected]>
+Date: Thu, 23 Nov 2017 16:18:06 -0500
+Subject: [PATCH] Change default SSL directory
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 8bit
+
+Change the default SSL directory, as buildroot ca-cert package is
+installed at /etc/ssl. That way, we don't have to use the SSL_CERT_DIR
+environment at runtime.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Damien Riegel <[email protected]>
+Signed-off-by: Ga?l PORTAY <[email protected]>
+---
+ src/core/qtwebengine_extras.gypi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/qtwebengine_extras.gypi b/src/core/qtwebengine_extras.gypi
+index 229421ef..3b2386c0 100644
+--- a/src/core/qtwebengine_extras.gypi
++++ b/src/core/qtwebengine_extras.gypi
+@@ -96,7 +96,7 @@
+             'GL_GLEXT_PROTOTYPES',
+             'EGL_EGLEXT_PROTOTYPES',
+             # At runtime the env variable SSL_CERT_DIR can be used to override this
+-            'OPENSSLDIR="/usr/lib/ssl"',
++            'OPENSSLDIR="/etc/ssl"',
+             'OPENSSL_LOAD_CONF',
+             'EGL_API_FB=1',
+             'LINUX=1',
+-- 
+2.15.0
+
package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch new file +93 -0

93 lines not on this page · raw message

package/qt5/qt5webengine/Config.in +0 -5
index d40b58062e..d0c8d18210 100644
@@ -20,10 +20,6 @@ comment "qt5webengine needs an OpenGL and EGL-capable backend"
 	depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS
 	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL
 
-comment "qt5webengine is not available with Qt 5.6"
-	depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS
-	depends on BR2_PACKAGE_QT5_VERSION_5_6
-
 config BR2_PACKAGE_QT5WEBENGINE
 	bool "qt5webengine"
 	depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS
@@ -35,7 +31,6 @@ config BR2_PACKAGE_QT5WEBENGINE
 	depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative, qt5base-eglfs
 	depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs
 	depends on BR2_PACKAGE_HAS_UDEV
-	depends on !BR2_PACKAGE_QT5_VERSION_5_6
 	# v8 (a chromium 3rd-party) compiles its internal host-tools with the
 	# same word size as the target. For 32-bits targets, it adds the -m32
 	# flag (for 64-bits, it adds the -m64 flag).
package/qt5/qt5webengine/qt5webengine.hash +3 -0
index 918f7edb3a..f71889e251 100644
@@ -1,2 +1,5 @@
+# Hash from https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebengine-opensource-src-5.6.3.tar.xz.mirrorlist
+sha256 009d69fb39f6c0e2b0cd89a7e9302cd0ae1872d02c787d3a37f2cacca5ddb7a7 qtwebengine-opensource-src-5.6.3.tar.xz
+
 # Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.2/submodules/qtwebengine-opensource-src-5.9.2.tar.xz.mirrorlist
 sha256 cab069e4589f806640bebe4077c70e5cd5ffeb146c6e8caca6c4454fc0c4a108 qtwebengine-opensource-src-5.9.2.tar.xz
Signature · 1 line
2.15.0
#1 lore raw

PATCH v2 1/1 qt5webengine: enable build for 5.6.3

Hello,

+Yann in Cc, since there is licensing stuff involved :)

package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch line 22

Quoted 7 lines · Ga?l PORTAY
package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch new file +7 -0
+Upstream-Status: Merged
+Task-number: QTBUG-57761
+Change-Id: I29f037dfe542222b5188a33c7727c81a464a87bb
+Reviewed-by: Allan Sandfeld Jensen <[email protected]>
+Reviewed-by: Michal Klocek <[email protected]>
+Signed-off-by: Ga?l PORTAY <[email protected]>
+[gportay: backport from 5.9 and merge conflicts]

Backporting from 5.9 to 5.6 raises a red flag: Qt changed its licensing terms between 5.6 and 5.9, and you can't backport things this way, because Qt 5.9 is under GPLv3, while Qt 5.6 is not.

However I'm not sure about the specific status of qt5webengine. Also, its <pkg>_LICENSE variable says:

include package/qt5/qt5webengine/chromium.inc
QT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception

QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \
        LICENSE.GPLv3 LICENSE.LGPL3 $(CHROMIUM_LICENSE_FILES)

which I'm not sure is correct for Qt 5.6. Indeed, many of the packages have something like this instead:

ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y)
QT5MULTIMEDIA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL else
QT5MULTIMEDIA_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL endif

Could you double check the license status of qt5webengine, in Qt 5.6 and Qt 5.9 respectively ?

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#2 lore raw

PATCH v2 1/1 qt5webengine: enable build for 5.6.3

Thomas, All,

On 2017-11-24 10:04 +0100, Thomas Petazzoni spake thusly:

Quoted 4 lines

+Yann in Cc, since there is licensing stuff involved :)

On Thu, 23 Nov 2017 18:26:19 -0500, Ga?l PORTAY wrote:

Quoted 11 lines

package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch line 22

Quoted 7 lines
package/qt5/qt5webengine/5.6.3/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch new file +7 -0
+Upstream-Status: Merged
+Task-number: QTBUG-57761
+Change-Id: I29f037dfe542222b5188a33c7727c81a464a87bb
+Reviewed-by: Allan Sandfeld Jensen <[email protected]>
+Reviewed-by: Michal Klocek <[email protected]>
+Signed-off-by: Ga?l PORTAY <[email protected]>
+[gportay: backport from 5.9 and merge conflicts]

Backporting from 5.9 to 5.6 raises a red flag: Qt changed its licensing terms between 5.6 and 5.9, and you can't backport things this way, because Qt 5.9 is under GPLv3, while Qt 5.6 is not.

Three things:

0- IANAL, this is not legal advice, blablabla...

1- the real licensing terms are: LGPL-3.0 or GPL-2.0 or GPL-3.0 or proprietary

Note that this is LGPL-3.0 and not '+', because the source states:

[...] this file may be used under the terms of the GNU Lesser General Public License version 3 as published by [...]

Note that it is not GPL-2.0+, because the source code explicitly says:

[...] this file may be used under the terms of the GNU General Public License version 2.0 or (at your option) the GNU General Public license version 3 or any later version approved by the KDE Free Qt Foundation.

Note that the terms are ambiguous, because we don't know what "approved by the Free Qt Foundation" applies to. We should just assume nothing about this, hence GPL-3.0 and not '+'.

2- AFAICS, those were already the licensing terms for qtwebengine 5.6, so it looks like we can indeed backport. But then this should be clearly stated in the backported patch itself, so we don't come later and worry again about this issue.

Note that in qt-5.6, some Qt modules were already using the new licensing terms: new modules that were introduced in Qt-5.6 (and even those new in Qt-5.5?) have been using the LGPL-3.0/GPL2.0/GPL-3.0 from the onset.

Quoted 5 lines

However I'm not sure about the specific status of qt5webengine. Also, its <pkg>_LICENSE variable says:

include package/qt5/qt5webengine/chromium.inc
QT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception

The exception only applies to some filers in the tests/ and tools/ directories.

So I wonder if that is something that is applicable in the end.

Quoted 5 lines
QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \
        LICENSE.GPLv3 LICENSE.LGPL3 $(CHROMIUM_LICENSE_FILES)

which I'm not sure is correct for Qt 5.6. Indeed, many of the packages have something like this instead:

As explained above, it is valid already for Qt-5.6, becasue qtwebengine was a new module at that time, so it never had the non-v3 licenses.

Quoted 10 lines

ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y)
QT5MULTIMEDIA_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL else
QT5MULTIMEDIA_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) QT5MULTIMEDIA_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL endif

Could you double check the license status of qt5webengine, in Qt 5.6 and Qt 5.9 respectively ?

Yes, a second review of my statements above would be very much appreciated, please.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH v2 1/1 qt5webengine: enable build for 5.6.3

In reply to Gaël PORTAY

Hello,

Quoted 13 lines · Ga?l PORTAY

The build was broken in 5.6.2 and was disabled.

It compiles fine since 5.6.3.

The two additional patches are useful at run-time.

The first one avoid the need to specify the path to the SSL certificate directory (using an additional environment variable).

The second one is the same used in 5.9.x (plus resolved conflicts). It uses the process's context to get handles on EGL and GLESv2 libraries. Those libraries are linked to Qt WebEngine at compile time.

Quoted 6 lines

The patch is particularly usefull for RPI boards since the raspberrypi userland package does not provide the libEGLv2.so.2 and libGLES.so.1 symlinks. Both library paths are hardcoded in Qt WebEngine.

---

Following the feedback from Yann on the licensing question, I applied to the next branch. Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com