9

Environment

  • Debian GNU/Linux 7.8 (wheezy) Linux marvin 3.16-0.bpo.2-amd64 #1 SMP Debian 3.16.3-2~bpo70+1 (2014-09-21) x86_64 GNU/Linux
  • Raspberry Pi 2
  • Yocto Poky
  • Qt5

My goal is to run Chromium layout web engine on the RPi2

I want to be able to run this on my RPi2:

import QtQuick 2.1
import QtQuick.Controls 1.1
import QtWebEngine 1.0

ApplicationWindow {
    width: 1280
    height: 720
    visible: true
    WebEngineView {
        id: webview
        url: "http://www.qt-project.org"
        anchors.fill: parent
    }
}

How I created my RPi2 image

I have successfully created an image for my RPi2 using Yocto using this unique and amazing tutorial in portuguese and this one in english

here after in a few line how I was able to generate a image for my RPi2

mkdir -p ~/yocto/dl
cd ~/yocto
git clone -b dizzy git://git.yoctoproject.org/poky poky-dizzy
cd poky-dizzy
git clone git://git.yoctoproject.org/meta-raspberrypi 
git clone -b dizzy https://github.com/meta-qt5/meta-qt5.git
git clone -b dizzy git://git.openembedded.org/meta-openembedded
git clone -b dizzy https://bitbucket.org/embarcados/meta-embarcados.git

then

cd ~/yocto
. poky-dizzy/oe-init-build-env build-dizzy
bitbake qt5-image-demo

after a few hours I could pick the image built ~/yocto/build-dizzy/tmp/deploy/images/raspberrypi2/qt5-image-demo-raspberrypi2.rpi-sdimg

... and copy to a microSD card e.g.

dd if=~/yocto/build-dizzy/tmp/deploy/images/raspberrypi2/qt5-image-demo-raspberrypi2.rpi-sdimg of=/dev/sdbX bs=4M

The ISSUE: QtWebEngine is not installed

... but when I tried to run this simple QtWebEngine example I got an error saying that QtWebEngine is not installed:

root@raspberrypi2:~# /usr/bin/qt5/qmlscene qb.qml -platform eglfs
file:///home/root/qb.qml:3 module "QtWebEngine" is not installed

... so I added QtWebEngine recipe to my bitbake image configuration and ran in my image configuration

vi ../poky-dizzy/meta-embarcados/meta-rpi/recipes-core/images/qt5-image-demo.bbappend

IMAGE_INSTALL += "\
           packagegroup-qt5-machine-related \
           apt \
           openssh \
           qtwebengine \                   => /usr/lib/qt5/libexec/QtWebEngineProcess
           qtwebengine-qmlplugins \        => /usr/lib/qt5/qml/QtWebEngine
                        "

The ERROR - RESOLVED

~/yocto/build-dizzy$ bitbake qt5-image-demo
WARNING: Host distribution "Debian-7.8" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
Loading cache: 100% |##########################################################################################################################################################################################| ETA:  00:00:00
Loaded 1952 entries from dependency cache.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.24.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Debian-7.8"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "raspberrypi2"
DISTRO            = "poky"
DISTRO_VERSION    = "1.7.2"
TUNE_FEATURES     = "arm armv7a vfp thumb neon callconvention-hard vfpv4 cortexa7"
TARGET_FPU        = "vfp-vfpv4-neon"
meta-embarcados   
meta-rpi          = "dizzy:821ba371852d2aa86bc71d75918df37a21d264ad"
meta-raspberrypi  = "master:6ef9d94a2c2588dcefe442577ef6ae5bbe722dec"
meta-qt5          = "dizzy:adeca0db212d61a933d7952ad44ea1064cfca747"
meta-oe           = "dizzy:5b6f39ce325d490fc382d5d59c5b8b9d5fa38b38"
meta              
meta-yocto        = "dizzy:9c4ff467f66428488b1cd9798066a8cb5d6b4c3b"
meta-ruby         = "dizzy:5b6f39ce325d490fc382d5d59c5b8b9d5fa38b38"

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
WARNING: Failed to fetch URL git://code.qt.io/qt/qtwebengine.git;branch=1.0, attempting MIRRORS if available
ERROR: Fetcher failure: Unable to find revision 21f6ce84ecca9a4ff2aa980b21d2e5174c78d14b in branch 1.0 even from upstream
ERROR: Function failed: Fetcher failure for URL: 'git://code.qt.io/qt/qtwebengine.git;branch=1.0'. Unable to fetch URL from any source.
ERROR: Logfile of failure stored in: /home/otto/yocto/build-dizzy/tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/temp/log.do_fetch.16064
ERROR: Task 634 (/home/otto/yocto/build-dizzy/../poky-dizzy/meta-qt5/recipes-qt/qt5/qtwebengine_5.3.2+git.bb, do_fetch) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3306 tasks of which 3305 didn't need to be rerun and 1 failed.
No currently running tasks (1955 of 3321)

Summary: 1 task failed:
  /home/otto/yocto/build-dizzy/../poky-dizzy/meta-qt5/recipes-qt/qt5/qtwebengine_5.3.2+git.bb, do_fetch
Summary: There were 2 WARNING messages shown.
Summary: There were 2 ERROR messages shown, returning a non-zero exit code.

The LOG

~/yocto/build-dizzy$ tail /home/otto/yocto/build-dizzy/tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/temp/log.do_fetch.16064
DEBUG: Running export PATH="/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/bin/qt5:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/bin/python-native:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/bin/perl-native:/home/otto/yocto/poky-dizzy/scripts:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi:/home/otto/yocto/build-dizzy/tmp/sysroots/raspberrypi2/usr/bin/crossscripts:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/sbin:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/usr/bin:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/sbin:/home/otto/yocto/build-dizzy/tmp/sysroots/x86_64-linux/bin:/home/otto/yocto/poky-dizzy/scripts:/home/otto/yocto/poky-dizzy/bitbake/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"; export HOME="/home/otto"; /usr/bin/env wget -t 2 -T 30 -nv --passive-ftp --no-check-certificate -P /home/otto/yocto/build-dizzy/../dl 'http://sources.openembedded.org/git2_code.qt.io.qt.qtwebengine.git.tar.gz'
DEBUG: Mirror fetch failure for url http://sources.openembedded.org/git2_code.qt.io.qt.qtwebengine.git.tar.gz (original url: git://code.qt.io/qt/qtwebengine.git;branch=1.0)
DEBUG: Fetcher failure: Fetch command failed with exit code 8, output:
http://sources.openembedded.org/git2_code.qt.io.qt.qtwebengine.git.tar.gz:
2015-05-24 03:12:49 ERROR 404: Not Found.

ERROR: Fetcher failure: Unable to find revision 21f6ce84ecca9a4ff2aa980b21d2e5174c78d14b in branch 1.0 even from upstream
DEBUG: Python function base_do_fetch finished
DEBUG: Python function do_fetch finished
ERROR: Function failed: Fetcher failure for URL: 'git://code.qt.io/qt/qtwebengine.git;branch=1.0'. Unable to fetch URL from any source.

indeed this give me a 404 and that's my issue

http://sources.openembedded.org/git2_code.qt.io.qt.qtwebengine.git.tar.gz` 

but I check this and it works

git clone git://code.qt.io/qt/qtwebengine.git;branch=1.0git://code.qt.io/qt/qtwebengine.git;branch=1.0`  

Doesn't anyone know how to fix this?

As a matter of fact I have the same problem with QtWebKit

UPDATE - COMPILATION PASS - How do I run QtWebEngine?

Compilation/Installation part of QtWebEngine was addressed. I was able to compile the QtWebEngine /usr/lib/qt5/libexec/QtWebEngineProcess. The simple QML script still doesn't find the QtWebEngine, I think it is expecting /usr/lib/qt5/qml/QtWebEngine which I am not able to generate.

QML is not a hard requirement. I just need to be able to compile and run a very simple Qt5 application that will load a Web page with the Chromium Layout Engine capabilities hence the requirement of QtWebEngine.

UPDATE Added QtWebEngine QML plugins - Can't figure out the IMPORT VERSION

root@raspberrypi2:~# /usr/bin/qt5/qmlscene --platform eglfs chromium.qml 
file:///home/root/chromium.qml:3 module "QtWebEngine" version 1.0 is not installed

QtWebEngine Files installed

root@raspberrypi2:/usr/lib/qt5# find . -name *ngine*
./qml/QtWebEngine
./qml/QtWebEngine/experimental/libqtwebengineexperimentalplugin.so
./qml/QtWebEngine/libqtwebengineplugin.so
./plugins/iconengines
./plugins/mediaservice/libqtmedia_audioengine.so
./plugins/qtwebengine
./libexec/QtWebEngineProcess

Looks like it's version 0.9

root@raspberrypi2:~# ls -al /usr/lib/libQt0Web*
lrwxrwxrwx    1 root     root            24 Jun  5 09:16 /usr/lib/libQt0WebEngine.so.0 -> libQt0WebEngine.so.0.9.0
lrwxrwxrwx    1 root     root            24 Jun  5 09:16 /usr/lib/libQt0WebEngine.so.0.9 -> libQt0WebEngine.so.0.9.0
-rwxr-xr-x    1 root     root        112744 May 24 19:04 /usr/lib/libQt0WebEngine.so.0.9.0
lrwxrwxrwx    1 root     root            28 Jun  5 09:16 /usr/lib/libQt0WebEngineCore.so.0 -> libQt0WebEngineCore.so.0.9.0
lrwxrwxrwx    1 root     root            28 Jun  5 09:16 /usr/lib/libQt0WebEngineCore.so.0.9 -> libQt0WebEngineCore.so.0.9.0
-rwxr-xr-x    1 root     root      32914884 May 24 19:04 /usr/lib/libQt0WebEngineCore.so.0.9.0
lrwxrwxrwx    1 root     root            31 Jun  5 09:16 /usr/lib/libQt0WebEngineWidgets.so.0 -> libQt0WebEngineWidgets.so.0.9.0
lrwxrwxrwx    1 root     root            31 Jun  5 09:16 /usr/lib/libQt0WebEngineWidgets.so.0.9 -> libQt0WebEngineWidgets.so.0.9.0
-rwxr-xr-x    1 root     root         73976 May 24 19:04 /usr/lib/libQt0WebEngineWidgets.so.0.9.0

Changed import version to 0.9 import QtWebEngine 0.9

Now getting a different error, but a blank (white then red) canvas is opening

root@raspberrypi2:~# /usr/bin/qt5/qmlscene --platform eglfs chromium.qml 
[0605/112518:ERROR:resource_bundle.cc(607)] Failed to load /usr/share/qt5/qtwebengine_resources.pak
Some features may not be available.
[0605/112518:WARNING:resource_bundle.cc(280)] locale_file_path.empty()
[0605/112518:WARNING:proxy_service.cc(890)] PAC support disabled because there is no system implementation
[0605/112518:ERROR:resource_bundle.cc(607)] Failed to load /usr/share/qt5/qtwebengine_resources.pak
Some features may not be available.
[0605/112518:WARNING:resource_bundle.cc(280)] locale_file_path.empty()
Indeed no .pak file present
root@raspberrypi2:/usr/share/qt5# ls -al
drwxr-xr-x    4 root     root          1024 Jun  5 09:27 .
drwxr-xr-x   29 root     root          1024 May 22 15:21 ..
drwxr-xr-x   40 root     root          1024 Jun  5 09:16 examples
drwx------    3 root     root          1024 Jun  5 09:27 translations

No QtWebEngine plugins.qmltypes (?)

root@raspberrypi2:~# find /usr/lib -name plugins.qmltypes
/usr/lib/qt5/qml/QtQuick.2/plugins.qmltypes
/usr/lib/qt5/qml/QtMultimedia/plugins.qmltypes
/usr/lib/qt5/qml/Qt/labs/settings/plugins.qmltypes
/usr/lib/qt5/qml/Qt/labs/folderlistmodel/plugins.qmltypes
/usr/lib/qt5/qml/Qt/WebSockets/plugins.qmltypes
/usr/lib/qt5/qml/QtServiceFramework/plugins.qmltypes
/usr/lib/qt5/qml/Qt3D/plugins.qmltypes
/usr/lib/qt5/qml/Qt3D/Shapes/plugins.qmltypes
/usr/lib/qt5/qml/QtLocation/plugins.qmltypes
/usr/lib/qt5/qml/QtPositioning/plugins.qmltypes
/usr/lib/qt5/qml/Enginio/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/LocalStorage/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/Controls/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/Layouts/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/Particles.2/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/XmlListModel/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/Window.2/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/Dialogs/plugins.qmltypes
/usr/lib/qt5/qml/QtQuick/PrivateWidgets/plugins.qmltypes
/usr/lib/qt5/qml/QtSensors/plugins.qmltypes
/usr/lib/qt5/qml/QtNfc/plugins.qmltypes
/usr/lib/qt5/qml/QtSystemInfo/plugins.qmltypes
/usr/lib/qt5/qml/QtPublishSubscribe/plugins.qmltypes
/usr/lib/qt5/qml/QtTest/plugins.qmltypes
/usr/lib/qt5/qml/QtBluetooth/plugins.qmltypes

packages

otto@marvin:~/yocto/build-dizzy$ find . -name  packages-split | grep webengine
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/packages-split

on my build machine

otto@marvin:~/yocto/build-dizzy$ find . -name qtwebengine_resources.pak 
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/packages-split/qtwebengine-dev/usr/share/qt5/qtwebengine_resources.pak
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/image/usr/share/qt5/qtwebengine_resources.pak
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/package/usr/share/qt5/qtwebengine_resources.pak
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/git/src/core/Release/gen/repack/qtwebengine_resources.pak
./tmp/work/cortexa7t2hf-vfp-vfpv4-neon-poky-linux-gnueabi/qtwebengine/5.3.2-r0/sysroot-destdir/usr/share/qt5/qtwebengine_resources.pak
./tmp/sysroots/raspberrypi2/usr/share/qt5/qtwebengine_resources.pak

Simple QML QtWebEngine not showing web page QUESTION on Stackoverflow

Community
  • 1
  • 1
zabumba
  • 12,172
  • 16
  • 72
  • 129

1 Answers1

4

If you take a look at the repo git://code.qt.io/qt/qtwebengine.git, you'll see that there's no branch named 1.0, which is what your bitbake log states:

ERROR: Fetcher failure: Unable to find revision 21f6ce84ecca9a4ff2aa980b21d2e5174c78d14b in branch 1.0 even from upstream

If we clone the qtwebengine repo, and run the following command, we'll learn which branch contains that commit.

$  git branch -r --contains 21f6ce84ecca9a4ff2aa980b21d2e5174c78d14b
origin/5.4
origin/5.4.2
origin/5.5
origin/5.5.0
origin/HEAD -> origin/5.5
origin/dev

Thus, that commit is available on e.g the 5.4 branch.

Having a look at the qtwebengine_5.3.2ǵit.bb recipe in meta-qt5, we'll see the following line in the recipe:

QT_MODULE_BRANCH = "1.0"

It's this line that will decide what branch to checkout from the repository above.

Try adding a qtwebengine_5.3.2+git.bbappend in your own layer, in which you add:

QT_MODULE_BRANCH = "5.4"

After that, you should at least be able to fetch the requested SHA1. This seems to be bug in the meta data.

Note: I've not build tested this on the dizzy branch.

Anders
  • 8,541
  • 1
  • 27
  • 34
  • Yes this I had succeeded ok, but once compiled I end up with `/usr/lib/qt5/libexec/QtWebEngineProcess` binary (?), unfortunately my simple QML script still doesn't find the QtWebEngine, I think it is expecting `/usr/lib/qt5/qml/QtWebEngine` which I am not able to generate. There must be another trick. Any further ideas? Thanks Anders!! – zabumba May 27 '15 at 21:44
  • Anders Could you give a step-by-step to add you own layer? BTW I was aiming to an answer that would resolve running a QML with `QtWebEngine` import. Your help resolves the GIT issue which is great but not enough. I am able to compile a `QtWebEngineProcess` which doesn't resolve my issue entirely. – zabumba Jun 02 '15 at 17:50
  • 1
    Well, the main part of the original question was that you wasn't able to build the image... (At least that was my interpretation). Well, I'm not using any of the Web components in any of my own images, nor in any customer's. I could get a test build up, but I'm not sure when I can get the time for that. And I'm definitely not an expert in qml, I'm more of a build system guy when it comes to Qt5. – Anders Jun 02 '15 at 18:36
  • I really understand the confusion and I think your answer does address an important part. I should have edited the question. What about a non QML way of running QtWebEngineProcess library? Any further ideas? I am complete newbie to Qt5. QML may not be a hard requirement. In the meantime I will give your this bounty – zabumba Jun 04 '15 at 09:44
  • Anders, sorry I didn't find a way to give you the bounty, so I created another 200 credits bounty. – zabumba Jun 04 '15 at 10:12
  • 1
    @joelmaranhao Is `/usr/lib/qt5/qml/QtWebEngine` a directory with stuff? If so, install the package `qtwebengine-qmlplugins` into your image. When I'm bulding qtwebengine, I'm at least getting a directory at that location. (Though, once again, I've never used QtWebEngine, so I don't know what to expect...) – Anders Jun 05 '15 at 08:31
  • No worries, it's fantastic suggestion. Cheers mate. – zabumba Jun 05 '15 at 08:56
  • Hey Anders, I am getting pretty close!!!! :) now I have a the QML plugins installed and the error message is different, this time it complains about the version. I have tried changing it to e.g. 5.4 but no chance. Would you know how to figure out the version to import? – zabumba Jun 05 '15 at 12:03
  • See last UPDATE section in QUESTION – zabumba Jun 05 '15 at 13:18
  • 1
    Sorry, no idea... If you look at `/usr/lib/qt5/qml/QtWebEngine/plugins.qmltypes`, what version does that file state? (I've only built tested poky and meta-qt5 master, and in that combination, it says 1.0). – Anders Jun 05 '15 at 13:26
  • Yeah I also found out that in branch 5.5 IMPORT_VERSION should be 1.0 hm ... in the file `import QtWebEngine 1.0` see at the top of the question, it's merely a few lines of code. To run it `/usr/bin/qt5/qmlscene --platform eglfs test.qml` – zabumba Jun 05 '15 at 13:29
  • See my new UPDATE, it looks like version 0.9 is compiled and installed, this time the script runs although I get into another issue. See question UPDATE. `Failed to load /usr/share/qt5/qtwebengine_resources.pak`. Also I have no `/usr/lib/qt5/qml/QtWebEngine/plugins.qmltypes` (?) – zabumba Jun 05 '15 at 13:39
  • I think I need to install `qtwebengine_resources.pak` file ... hm ... may be another module that I am missing. I am also missing the `qmltypes` – zabumba Jun 05 '15 at 13:52
  • 1
    Ok. `qtwebengine_resources.pak` is at least of poky/meta-qt5 master in qtwebengine package under `/usr/share/qt5`. Have a look under `${WORKDIR}/packages-split/xxx`. xxx is all the different packages that gets built from the qtwebengine recipe. – Anders Jun 05 '15 at 14:01
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/79794/discussion-between-joelmaranhao-and-anders). – zabumba Jun 05 '15 at 14:13