Supported hardware, WPEBackends, BSPs
clopez@igalia.com
psaavedra@igalia.com
https://people.igalia.com/psaavedra/slides/webengines-hackfest-2021-wpe-embedded




libwpe for rendering and input handlingwpebackend-rdk, wpebackend-fdo, …EGL_WL_bin_wayland_display)libwpe, libwebkit, cog …) and several backend implementations that makes a bit difficult the setup.armv7, arm64, x86 x86_64, mips32risc-v, mips64, powerpc ... expected to work but only with a less optimized interpreterProblem 1: Several libs and dependencies that makes a bit difficult the the setup.
Problem 2: WPE is sensitive to the underlying hardware and software stack where it has to work
Problem 3: WPE works in the top of several multiple different hardware platforms
Solution: A software layer that enables an hardware-specific platform: BSP
libwpecog)
aperezdc!)The Yocto build enviroment is structurated in layers. Let’s see the layers like a set of recipes, classes and definitions that extend the base distribution.

Created on Oct 2015 by Carlos López (blog).
meta-webkit is an compatible Yocto BSP meta-layer which provides recipes for WebKitGTK and WPE:
wpe and webkitgtklibwpewpebackend-fdo and wpebackend-rdkcogmeta-webkit:├── conf
│ └── layer.conf
├── recipes-browser
│ ├── cog
│ │ └── cog_0.8.0.bb
│ ├── libwpe
│ │ └── libwpe_1.8.0.bb
│ ├── webkitgtk
│ │ └── webkitgtk_2.32.0.bb
│ ├── wpebackend-fdo
│ │ └── wpebackend-fdo_1.8.3.bb
│ └── wpewebkit
│ └── wpewebkit_2.32.0.bb
└── ...
cd ${HOME}/yocto-rpi3-wpe
git clone https://git.yoctoproject.org/git/poky -b hardknott
git clone git://git.openembedded.org/meta-openembedded -b hardknott
git clone https://github.com/OSSystems/meta-gstreamer1.0 -b master
git clone https://git.yoctoproject.org/git/meta-raspberrypi -b master
git clone https://github.com/Igalia/meta-webkit -b masterbblayers.conf:$ cat conf/bblayers.conf
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"
BBLAYERS = " ${BSPDIR}/poky/meta \
${BSPDIR}/poky/meta-poky \
${BSPDIR}/poky/meta-yocto-bsp \
${BSPDIR}/meta-openembedded/meta-oe \
${BSPDIR}/meta-openembedded/meta-python \
${BSPDIR}/meta-gstreamer1.0 \
${BSPDIR}/meta-raspberrypi \
${BSPDIR}/meta-webkit \
"local.conf:$ cat local.conf
MACHINE = 'raspberrypi3'
MACHINE_FEATURES_append = " vc4graphics"
GPU_MEM_256 = "128"
GPU_MEM_512 = "196"
GPU_MEM_1024 = "396"
EXTRA_IMAGE_FEATURES = "debug-tweaks"
IMAGE_FEATURES_append = " ssh-server-dropbear hwcodecs"
DISABLE_VC4GRAPHICS = "1"
PREFERRED_PROVIDER_virtual/wpebackend = "wpebackend-fdo"
PREFERRED_PROVIDER_virtual/libwpe = "libwpe"
IMAGE_INSTALL_append = " cog wpewebkit"$ bitbake core-image-weston
Loading cache: 100% |#################| Time: 0:00:00
Loaded 3376 entries from dependency cache.
Parsing recipes: 100% |#################| Time: 0:20:00
Build Configuration:
BB_VERSION = "1.36.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "universal"
TARGET_SYS = "arm-linux-gnueabi"
MACHINE = "raspberrypi3"
DISTRO = "poky"
DISTRO_VERSION = "1.0.0"
meta
meta-poky
meta-yocto-bsp = "hardknott"
meta-oe
...