Adding yocto packages
General
Packages and package groups can be added to image recipes. See the Yocto Development manual for how to customize an image: http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html#usingpoky-extend-customimage-imagefeatures
Adding a package to the local build of the BSP
Search for the corresponding recipe and which layer the recipe is in. This link is a useful tool for doing so: http://layers.openembedded.org/layerindex/branch/morty/layers/
If the package is in the meta-openembedded layer, the recipe is already available in your build tree.
Add the following line to YOCTO_DIR/BUILD_DIR/conf/local.conf:
IMAGE_INSTALL_append = " <package>"
Note: The leading white-space between the " and the package name is necessary for the append command.
If you need to add a layer to the BSP, clone or extract it to the YOCTO_DIR/sources/ directory. Then, modify YOCTO_DIR/BUILD_DIR/conf/bblayers.conf to include this new layer in BBLAYERS:
BBLAYERS += "${BSPDIR}/sources/<new_layer>"
Webserver support
Recipes in meta-openembedded/meta-webserver/recipes-httpd:
- apache2
- cherokee
- hiawatha
- monkey
- nginx
- nostromo
- sthttpd
Recipes in poky/meta/recipes-extended/lighttpd:
- lighttpd
Although full of capabilities and features, Apache is commonly considered quite heavy, so is not generally used for embedded devices.
Nostromo and sthttpd are commonly considered ultralight webserver, with a very small set of capabilities and features, with very limited resource requirements.
The usual choice is usually between the following 5:
- cherokee
- hiawatha
- monkey
- nginx
- lighttpd
Here you can find an article comparing the above 5 webserver:
https://www.linux.com/news/which-light-weight-open-source-web-server-right-you
Accelerated browsers support
Yocto build system allow integrating browsers that support iMX6 GPU accelerations.
The common used browsers are:
- qtwebkit based browsers: QtWebKit is the WebKit porting to QT. WebKit is an open source web browser engine. QT5 provide some demo implementations in webkitwidgets examples.
- qtwebengine based browsers: QtWebEngine integrates chromium's fast moving web capabilities into QT. QT5 provide some demo implementations in webenginewidgets examples.
- chromium based browsers: Chromium is an open-source browser project.
Till 2016, FSLC community maintained chromium-imx project: customized Chromium versions (up to v48) providing GPU and VPU integration for iMX6 CPUs.
Much more updated Chromium versions are available from meta-browser, only providing GPU integration.
The minimum requirements to use chromium browsers is X11 or Wayland.
QT based browsers directly rely on QT integration with iMX6 accelerations.
QtWebKit has been superseded by QtWebEngine, mainly because QtWebKit has not been actively synchronized with the upstream WebKit code since Qt 5.2 and has been deprecated in Qt 5.5. Further details are available in Qt WebEngine Overview
QT team provides a QtWebEngine browser for embedded touch devices and related recipes hase been integrated in our BSP starting from Sumo.
The performance of each browser is strictly related to the features to be used, so different html applications can provide better performance with different browsers.
The following table try to summarize some benchmark for Wayland backend:
website | QtWebKit | QtWebEngine | Chromium |
---|---|---|---|
http://peacekeeper.futuremark.com | crash | 623 | n/a |
http://www.kevs3d.co.uk/dev/canvasmark | n/a | 4796 | 3780 |
http://webglsamples.org/blob/blob.html | 2 fps | 32 fps | 34 fps |
Add QtWebKit examples to the build
Add the following line to YOCTO_DIR/BUILD_DIR/conf/local.conf:
IMAGE_INSTALL_append = " qtwebkit-examples-examples"
The demo browser used for the above tests is available as
/usr/share/qt5/examples/webkitwidgets/fancybrowser/fancybrowser
Add QtWebEngine examples to the build
Add the following line to YOCTO_DIR/BUILD_DIR/conf/local.conf:
IMAGE_INSTALL_append = " qtwebengine-examples"
The demo browser used for the above tests is available as
/usr/share/qt5/examples/webenginewidgets/fancybrowser/fancybrowser
Add Chromium to the build
Add the following line to YOCTO_DIR/BUILD_DIR/conf/local.conf:
IMAGE_INSTALL_append = "chromium<suffix>" LICENSE_FLAGS_WHITELIST += "commercial_libav commercial_x264"
Till Yocto Morty, chromium was available only for x11 backend and no suffix was required
IMAGE_INSTALL_append = "chromium"
Starting from Yocto Thud, chromium is available for both x11 backend
IMAGE_INSTALL_append = "chromium-x11"
and wayland backend
IMAGE_INSTALL_append = "chromium-ozone-wayland"
If you plan to use Chromium, please take care of the specific requirements for commercial license of libav and x264 packages.
The demo browser used for the above tests is available as
/usr/bin/google-chrome