qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# qt5webengine
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
QT5WEBENGINE_VERSION = $(QT5_VERSION)
|
|
|
|
QT5WEBENGINE_SITE = $(QT5_SITE)
|
2018-03-15 20:50:54 +01:00
|
|
|
QT5WEBENGINE_SOURCE = qtwebengine-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBENGINE_VERSION).tar.xz
|
qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
QT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx opus webp qt5base \
|
|
|
|
qt5declarative qt5webchannel host-bison host-flex host-gperf \
|
|
|
|
host-pkgconf host-python
|
|
|
|
QT5WEBENGINE_INSTALL_STAGING = YES
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
|
|
|
|
QT5WEBENGINE_DEPENDENCIES += xlib_libXScrnSaver xlib_libXcomposite \
|
|
|
|
xlib_libXcursor xlib_libXi xlib_libXrandr xlib_libXtst
|
|
|
|
endif
|
|
|
|
|
2018-03-15 20:50:54 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y)
|
|
|
|
QT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss
|
|
|
|
endif
|
|
|
|
|
qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_system_ffmpeg
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y)
|
|
|
|
QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_proprietary_codecs
|
|
|
|
endif
|
|
|
|
|
2018-02-14 03:37:14 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_QT5WEBENGINE_ALSA),y)
|
|
|
|
QT5WEBENGINE_DEPENDENCIES += alsa-lib
|
|
|
|
else
|
|
|
|
QT5WEBENGINE_QMAKEFLAGS += QT_CONFIG-=alsa
|
|
|
|
endif
|
|
|
|
|
qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
# QtWebengine's build system uses python, but only supports python2. We work
|
|
|
|
# around this by forcing python2 early in the PATH, via a python->python2
|
|
|
|
# symlink.
|
|
|
|
QT5WEBENGINE_ENV = PATH=$(@D)/host-bin:$(BR_PATH)
|
|
|
|
define QT5WEBENGINE_PYTHON2_SYMLINK
|
|
|
|
mkdir -p $(@D)/host-bin
|
|
|
|
ln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python
|
|
|
|
endef
|
|
|
|
QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK
|
|
|
|
|
2018-03-15 20:50:54 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y)
|
|
|
|
define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
|
|
|
|
sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config
|
|
|
|
chmod +x $(@D)/host-bin/host-pkg-config
|
|
|
|
endef
|
|
|
|
QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
|
|
|
|
QT5WEBENGINE_ENV += GN_PKG_CONFIG_HOST=$(@D)/host-bin/host-pkg-config
|
|
|
|
endif
|
|
|
|
|
qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
define QT5WEBENGINE_CONFIGURE_CMDS
|
2018-02-11 01:18:37 +01:00
|
|
|
(cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(HOST_DIR)/bin/qmake $(QT5WEBENGINE_QMAKEFLAGS))
|
qt5webengine: new package
This patch is based on works [1] and [2].
With this patch, one can run the Qt5 WebEngine quicknanobrowser sample
with the following options.
BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and
BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++,
dynamic library; for now it builds only with glibc)
BR2_PACKAGE_LIBERATION (Qt needs at least one font)
BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample)
BR2_PACKAGE_QT5BASE_GIF (do display gif)
BR2_PACKAGE_QT5BASE_JPEG (do display jpeg)
BR2_PACKAGE_QT5BASE_PNG (do display png)
BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine)
BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine)
BR2_PACKAGE_QT5WEBENGINE (because it is what we want)
Qt WebEngine requires an Open(E)GL-capable backend. As an example, the
package rpi-userland must be enabled to build for a rpi.
BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend)
To browse for HTTPS websites, please consider adding the following
options as well for SSL/TLS.
BR2_PACKAGE_CA_CERT (for certificates)
BR2_PACKAGE_NTPD (to sync date for certificates)
Since version 5.9, chromium requires udev at runtime (see note 4).
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend)
To run quicknanobrowser
# cd /usr/lib/qt/examples/webengine/quicknanobrowser/
# ./quicknanobrowser https://www.buildroot.org/
Note: The chromium.inc has been generated using the following command.
( echo 'CHROMIUM_LICENSE_FILES = \' &&
cd output/build/qt5webengine-5.9.1/ && \
find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \
sed -e '/\.asm$/d' \
-e '/\.h$/d' \
-e '/\.c$/d' \
-e '/\.cc$/d' \
-e '/\.cpp$/d' \
-e '/\.pyc\?$/d' \
-e '/\.pl$/d' \
-e '/\.sha1$/d' \
-e '/\.patch$/d' \
-e '/licensecheck/d' \
-e 's,^,\t,' \
-e 's,$, \\,' | \
sort && \
echo '' ) >package/qt5/qt5webengine/chromium.inc
Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3].
Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using
qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting
the following options.
BR2_PACKAGE_FFMPEG
BR2_PACKAGE_OPUS
BR2_PACKAGE_LIBVPX
BR2_PACKAGE_WEBP
BR2_PACKAGE_WEBP_DEMUX
In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0:
/home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch
vld1q_s32 (const int32_t * __a)
^~~~~~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here
int32x4_t coef0 = vld1q_s32(coef32);
^~~~~
../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’
Note 3: Version 5.6.2 causes a build issue while building chromium. The
build against this version is disabled until the release 5.6.3 is out.
Note 4: Here is trace when udev does not run
# cd /usr/lib/qt/examples/webengine/quicknanobrowser
# ./quicknanobrowser
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
[0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale
[202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x0000742b93de <unknown>
#1 0x0000742c3c38 <unknown>
#2 0x000073e1e1aa <unknown>
#3 0x000073e1d96e <unknown>
#4 0x000073e1defa <unknown>
#5 0x000074af6364 <unknown>
#6 0x000074302878 <unknown>
#7 0x0000742c8fee <unknown>
#8 0x0000742c9f44 <unknown>
#9 0x0000742ca21e <unknown>
#10 0x0000742cac4c <unknown>
#11 0x0000742c87b2 <unknown>
#12 0x0000742da4f6 <unknown>
#13 0x000073ed9d38 <unknown>
#14 0x000073eda03c <unknown>
#15 0x0000742e9aec <unknown>
#16 0x0000742e71dc <unknown>
Aborted
Note 5: On rpi and depending on what is insinde the .config, more GPU
memory should be allocated to run properly qt samples.
#0 0x0000742c63de <unknown>
#1 0x0000742d0c38 <unknown>
#2 0x0000749d7bde <unknown>
#3 0x0000749e3c70 <unknown>
#4 0x00007530227c <unknown>
#5 0x000075302480 <unknown>
#6 0x0000752fb1e4 <unknown>
#7 0x00007430f878 <unknown>
#8 0x0000742d5fee <unknown>
#9 0x0000742d6f44 <unknown>
#10 0x0000742d721e <unknown>
#11 0x0000742d7ad6 <unknown>
#12 0x0000742d57b2 <unknown>
#13 0x0000742e74f6 <unknown>
#14 0x0000742f6a74 <unknown>
#15 0x0000742f41dc <unknown>
Received signal 6
#0 0x0000742c63de <unknown>
#1 0x0000742c66a0 <unknown>
#2 0x0000725b5d10 <unknown>
[end of stack trace]
qml: Render process exited with code 256 (abnormal exit)
# mount /dev/mmcblk0p1 /mnt
# sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt
# umount /mnt
Note 6: The first patch fixes a build issue when samples are compiled
without the support of printing [4]. This patch is already merged in
branch 5.9 [5] and concerns only 5.9.1.
085c2c52 Always compile QWebEnginePage::print
It fixes the error below.
.obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback<bool> const&)'
The second patch loads both libEGL and libGLESv2 symbols implicitly
instead of loading them with explicitly using hard-coded locations. It
fixes a bug when providers of lib*GL does not create libraries named
libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch
5.9 [7].
d4c621f6 Load libEGL and libGLES2 symbols implicitly
It fixes the error below.
[327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory
[1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html
[2]: https://patchwork.ozlabs.org/patch/640633/
[3]: https://patchwork.ozlabs.org/patch/791332/
[4]: https://bugreports.qt.io/browse/QTBUG-61510
[5]: https://codereview.qt-project.org/#/c/198041/
[6]: https://bugreports.qt.io/browse/QTBUG-57761
[7]: https://codereview.qt-project.org/#/c/199554/
Cc: Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
Cc: Julien Corjon <corjon.j@ecagroup.com>
Signed-off-by: Gaël PORTAY <gael.portay@savoirfairelinux.com>
[Arnout:
- move more dependencies to _ARCH_DEPENDS;
- mention all toolchain dependencies in the comments]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2017-08-15 22:38:53 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define QT5WEBENGINE_BUILD_CMDS
|
|
|
|
$(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D)
|
|
|
|
endef
|
|
|
|
|
|
|
|
define QT5WEBENGINE_INSTALL_STAGING_CMDS
|
|
|
|
$(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D) install
|
|
|
|
$(QT5_LA_PRL_FILES_FIXUP)
|
|
|
|
endef
|
|
|
|
|
|
|
|
define QT5WEBENGINE_INSTALL_TARGET_QMLS
|
|
|
|
cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
|
|
|
|
endef
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)
|
|
|
|
define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES
|
|
|
|
cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(BR2_STATIC_LIBS),y)
|
|
|
|
define QT5WEBENGINE_INSTALL_TARGET_LIBS
|
|
|
|
cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
|
|
|
|
cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/
|
|
|
|
cp -dpfr $(STAGING_DIR)/usr/resources/ $(TARGET_DIR)/usr/
|
|
|
|
mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales/
|
|
|
|
cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales $(TARGET_DIR)/usr/translations/qtwebengine_locales/
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
define QT5WEBENGINE_INSTALL_TARGET_CMDS
|
|
|
|
$(QT5WEBENGINE_INSTALL_TARGET_LIBS)
|
|
|
|
$(QT5WEBENGINE_INSTALL_TARGET_QMLS)
|
|
|
|
$(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES)
|
|
|
|
endef
|
|
|
|
|
|
|
|
$(eval $(generic-package))
|