URL: https://linuxfr.org/news/yocto-zeus Title: Yocto Zeus Authors: David Marec Nils Ratusznik, palm123, Benoît Sibaud, Christophe, X@v et ZeroHeure Date: 2019-11-26T22:45:36+01:00 License: CC by-sa Tags: yocto, embarqué, linuxembarque et embedded Score: 4 La version 3.0, Zeus, de Yocto et sa distribution de référence *poky* (version 24) sont sorties le 23 octobre 2019. C'est un environnement et une collection d'outils qui vous permettront de créer des distributions Linux sur mesure, principalement orientés vers le monde embarqué. Cette version amène son lot de nouvelles recettes et de sauts de version pour les composants qui serviront de base par défaut à vos distributions. Il n'y a pas de grand changement dans la structure et les règles d'écriture des recettes et des configurations. Vous devriez pouvoir [migrer](https://www.yoctoproject.org/docs/3.0/ref-manual/ref-manual.html#moving-to-the-yocto-project-3.0-release) facilement. Vérifiez que les *meta-layers* tierces que vous utilisez soient déclarées compatibles avec cette version. Ajustez la variable `LAYERSERIES_COMPAT_XXXX` du fichier `conf/layer.conf`. Normalement, celles qui sont hébergées par le projet Yocto le sont automatiquement. ---- [L'annonce](https://www.yoctoproject.org/pipermail/yocto-announce/2019-October/000169.html) [Notes de version](http://downloads.yoctoproject.org/releases/yocto/yocto-3.0/RELEASENOTES) [Yocto project](https://www.yoctoproject.org/) ---- # Mécanique Yocto repose sur un ensemble de scripts qui vont analyser une liste de jeux de recettes organisés en *meta*, chaque recette configurant une suite de tâches à réaliser. De cette analyse sort un arbre de tâches que *bitbake*, le constructeur va lancer. Dans cette version, le [standard d'identification de licences SPDX](https://spdx.org/licenses/) a été adopté. La construction en une seule commande d'images pour différentes cibles, `multiconfig`, est considérée mature. ## Bitbake Les commandes `--runall` et `--runonly`, qui ne demandent la réalisation que d'un seul type de tâche, respectent désormais `--force`. Précisez `mc:prefix` à bitbake -e pour afficher les configurations multiples. Notez que `mc:` est le raccourci pour `multiconfig:`. Les tâches `SetScene` ont fusionnées avec les tâches `RunQueue`, ce qui permet de les exécuter en parallèle. En effet, il y a deux grandes catégories de tâches: `SetScene` permet de restaurer un état précédemment déjà calculé et mis en cache, et `RunQueue` concerne lui l'exécution des tâches restantes. La variable [BB_SETSCENE_VERIFY_FUNCTION2](https://www.yoctoproject.org/docs/3.0/bitbake-user-manual/bitbake-user-manual.html#var-bb-BB_SETSCENE_VERIFY_FUNCTION2) est aussi ignorée. Les paramètres passés à la fonction définie dans [BB_HASHCHECK_FUNCTION](https://www.yoctoproject.org/docs/3.0/bitbake-user-manual/bitbake-user-manual.html#var-bb-BB_HASHCHECK_FUNCTION), appelée durant `SetScene` ont changé. La définition de tâches listées dans la variable `BB_TASKDEPDATA` doivent utiliser uniquement la signature `:`, les implémentations qui utilisaient encore un `.` comme délimiteur ont été modifiées. ## compilation Par défaut, ce sont [gcc 9.2](https://gcc.gnu.org/gcc-9/changes.html) et la [glibc 2.30](https://sourceware.org/ml/libc-alpha/2019-08/msg00029.html) qui s'en chargent. ## Recettes Les paramètres `minver` et `maxver` sont intégrés en option de `SRC_URI` pour les correctifs afin de proposer une plus grande souplesse. De même il est déconseillé d'utiliser la variable `${PN}` ( Package Name ) dans `SRC_URI`, vous en serez averti lors des phases de contrôle d'intégrité (*Sanity check*). Dans la même idée, il est désormais interdit d'utiliser `${PN}` avec `DEPENDS_`, qui entretenait la confusion avec `RDEPENDS_` qui lui, est bien lié au paquetage. Les variables `TARGET_CFLAGS`, `TARGET_CPPFLAGS`, `TARGET_CXXFLAGS` et `TARGET_LDFLAGS` ne sont plus exportées dans l’environnement. La recette `cve-update-db`, basée sur la classe ` cve-check` annule et remplace l'outil `cve-check-tool`. Ce nouvel outil utilise un flux *NVD JSON* en entrée plutôt que des données XML, obsolète. En autre amélioration, il comprend la notation `CVSSv37`. De plus, la variable `CVE_CHECK_CVE_WHITELIST` est remplacée par `CVE_CHECK_WHITELIST`. ## fonctions et scripts La fonction `bb.build.exec_func()` ne prend plus en compte le paramètre `pythonexception`. Dans la même idée, l'exception `bb.build.FuncFailed` est supprimée, les exceptions sous-jacentes seront levées à la place. # Architectures De base, Yocto propose une liste d'architectures cible, dont des cibles Qemu, que vous pouvez compléter par des *meta* maintenues par les fondeurs. Cette version ajoute l'émulation de RISC-V 64 (`qemuriscv64`) et ajoute *ppc64* dans la liste des cibles pour qemu (`QEMU_TARGETS`). Qemuarm64 prend en charge les accélérateurs KVM(`QB_CPU_KVM`). De nouveaux fichiers de réglage, `tun*`, sont présents pour Cortex-A53,Cortex-A57 et arm1176jz-s. Cette nouvelle version de Yocto prend en charge *ARM32* (armel) par [icu](http://site.icu-project.org/) et RISC-V par [libffi](https://sourceware.org/libffi/). L'outil de création de fichiers image *wic* comprend le nouveau plugin `bootimg-biosplusefi` qui crée une partition d'amorçage compatible à la fois [BIOS](https://fr.wikipedia.org/wiki/BIOS) et [EFI](https://fr.wikipedia.org/wiki/UEFI). # Composants Pour construire une image, il vous faut assembler divers composants, dont la version par défaut est figée à chaque mise à jour. La liste est longue et se retrouve dans les notes de publications. ##Noyau Yocto propose d'utiliser les versions 4.19 et 5.2 du noyau Linux. Parmi les améliorations, on peut retrouver : - la classe `kernel-fitimage` comprend la variable `FIT_HASH_ALG` qui définit l'algorithme de contrôle d'une *fitimage*, image pour le bootloader capable d'adresser plusieurs éléments (noyau, ramfs, dtb) ; - la prise en charge de la compression des modules via l'opton de configuration noyau [CONFIG_MODULE_COMPRESS=y](https://cateee.net/lkddb/web-lkddb/MODULE_COMPRESS.html) ; - import des fragments de configuration depuis la [meta-security](http://git.yoctoproject.org/cgit/cgit.cgi/meta-security). ## Pilotes Le pilote graphique `drm-bochs` est maintenant pris en charge. Comme son nom l'indique, ce pilote permet de gérer l'adaptateur graphique virtuel de l'émulateur [Bochs](https://fr.wikipedia.org/wiki/Bochs). La recette `libdrm` intègre le fichier `amdgpu.ids` dans le paquet `libdrm-amdgpu`. ## Distributions La sélection du gestionnaire d'initialisation du système a été simplifiée, grâce à la variable `INIT_MANAGER` qui comprend les valeurs suivantes : * `none` ; * `sysvinit` ; * `systemd` ; * `mdev-busybox`. Si `none` est sélectionné, votre configuration actuelle est utilisée. C'est à dire que cette variable est ignorée. La distribution `poky-lsb` et la majorité des recettes associées sont retirés de *poky*. La version destinée au configuration de tests est renommée en `poky-altcfg`. ## Base [busybox](https://busybox.net/) active Unicode par défaut. ## Développement L'outil de parallélisation de compilation [distcc](https://distcc.github.io/) est séparé en deux paquets `distcc-client` et `distcc-server`. ## Bibliothèques GTK+ 2 est déplacé vers la [meta-oe](https://layers.openembedded.org/layerindex/branch/master/layer/meta-oe/). Les dépendances à Python 2 sont réduites au maximum. Le paquet `libcap-ng` ne prend plus Python en charge, ajoutez le paquet `libcap-ng-python` en cas de besoin. # Autour de Yocto Les branches précédentes de Yocto sont toujours vivantes, et ont connu de récentes mises à jour : - *Warrior* est passée en 2.7.2 le 26 novembre 2019 ; - *Thud* est en 2.8.4 depuis le 31 octobre. La prochaine branche, [dunfell](https://wiki.yoctoproject.org/wiki/Releases), sortira en avril 2020. La nouvelle *meta-intel*, version 12.0, a été publiée le 27 Novembre. Il est possible de suivre l'état de maintenance des branches via [la page wiki dédiée](https://wiki.yoctoproject.org/wiki/Releases) sur le site du projet. [LuneOS](https://linuxfr.org/news/luneos-doppio-est-sortie), une distribution linux pour appareils mobiles qui utilise Yocto, a présenté sa [dernière version](https://pivotce.com/2019/10/24/luneos-october-stable-release-eggnog-latte/), *eggnog-latte*, le 24 octobre. Celle-ci suit la branche *warrior* de Yocto.