Incorporar funcionalidad a Yocto mediante capas: Un ejemplo con Qt

Table of contents

Una vez hemos construido nuestra distribución podemos incorporarle nuevas funcionalidades a través de capas.

Las capas no son más que grupos de recetas, cada una de las cuales contiene información sobre como construir un componente de software concreto, de manera que trabajando juntos se incorpora la funcionalidad deseada. Para nuestro ejemplo añadiremos a nuestra distribución el framework de desarrollo de aplicaciones Qt.

La versión actual del proyecto Yocto ya provee de la capa meta-qt que permite incluir Qt 4.8 Embedded for Linux en nuestra distribución.

Sin embargo, en la versión 5 se actualiza y reemplaza Qt for Embedded Linux con un nuevo componente denominado QPA o Qt Platform Abstraction. La nueva arquitectura es más simple, facilita la integración de Qt con cualquier sistema de ventanas —suprime el gestor de ventanas QWS incluido en Qt for Embedded Linux— y la inclusión de contenidos basados en OpenGL. Por eso la 5 será la versión que utilizaremos en nuestro proyecto.

En una charla de Thomas Senyk se desarrollan mucho mejor todas estas diferencias y se justifican las ventajas de QPA respecto a su predecesor.

Incorporar Qt

Incorporar Qt es muy similar a hacerlo para el soporte de Raspberry Pi a nuestra distribución.

Empezamos clonado localmente el repositorio meta-qt5 fuera del directorio raspberry-pi-build.

git clone https://github.com/meta-qt5/meta-qt5.git

Después buscamos la variable BBLAYERS en raspberry-pi-build/conf/bblayers.conf y añadir al final la ruta hasta el repositorio de la capa meta-qt5 para incluirla en el proceso de construcción. Por ejemplo:

BBLAYERS ?= "
 /home/usuario/poky-danny-8.0/meta 
 /home/usuario/poky-danny-8.0/meta-yocto 
 /home/usuario/poky-danny-8.0/meta-yocto-bsp 
 /home/usuario/meta-raspberry-pi 
 /home/usuario/meta-qt5 
"

Posteriormente, construimos la imagen del sistema:

cd raspberry-pi-build
bitbake rpi-basic-image

Recuerda que esta imagen incluye un servidor SSH y un splash de Raspberry Pi durante el arranque. Mientras que la imagen alternativa rpi-hwup-image no contiene ninguna de las dos cosas.

Finalmente, transferimos la imagen construida a la tarjeta SD:

sudo dd if=tmp/deploy/images/rpi-basic-image-raspberrypi.rpi-sdimg of=/ruta/a/la/sd

y ya podemos probarla en el dispositivo.

Referencias