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, mips32
risc-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
libwpe
cog
)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 webkitgtk
libwpe
wpebackend-fdo
and wpebackend-rdk
cog
meta-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 master
bblayers.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
...