Bonjour,

Ça fait un moment que je me pose cette question. Alors, ok, industrie, c'est vague, mais Yocto aussi ... Yocto ? Poky ? OpenEmbedded ? Je en sais jamais vraiment comment l'appeler ou qui fait quoi.

Pourquoi je pose cette question ? Vite fait (+/-) : ça fait 2 - 3 ans que je touche à Yocto, sans être allé au bout d'un projet pour autant (le pourquoi serait trop long à raconter ici).

A chaque fois, j'ai été confronté aux mêmes séries de problèmes :

  • la "tambouille" de départ est-elle la bonne ? Généralement, le tuto du fabriquant de la carte d'éval démarre par la récupération de repo, puis des ses layers. Dans bien des cas, on peut se demander si c'est la bonne version, la bonne source, si ce qui est dispo sur le site Yocto suffit, ou si il faut absolument passer par le site du fabricant ...
  • le premier build se passe bien généralement. C'est après que ça se corse, quand il faut customiser. Par où je passe ? Est-ce que je dois absolument me taper 100% des docs Yocto avant de pouvoir commencer, ou bien je fais du copier coller d'exemples qui marchent déjà ? Quelle variable dans quel fichier ? Qu'est-ce que je peux mettre dans mon local.conf ou mon bblayers.conf avant d'avoir à créer ma propre layer ? Qu'est-ce que je peux mettre dedans exactement ? Du coup, mes principaux outils quand je fais ça sont : find et grep ! Et j'ai toujours l'impression que ce que je fais n'est pas correct, même quand ça marche.
  • je fais bitbake <quoi ?> pour builder mon système ? Dans certains cas, ça reste sur les classiques, dans d'autres, le fabricant de la carte s'est "amusé" à ajouter sa/ses propre/s target/s (target est le bon terme ?).
  • ok, admettons que ça build à l'instant t. Mais est-ce que ça buildera toujours à l'instant t+delta ? Yocto tire tellement de repo git, d'archives, etc, qu'on est en droit de se demander si un build sera identique du jour au lendemain, même sans modification. Non mais on peut se poser la question quand même, quand on voit un build à 7000 tâches et quelques ? Ça fait peur !
  • Yocto garde un caractère aléatoire quand c'est pas magique pour moi. Dernière bizarrerie en date au taff : carte Pico-Pi de TechNexion avec i.MX7D. Build OK, y compris Qt5 et la toolchain associée. Jusqu'à ce que je veuille ajouter le package mpg123. Et là, c'est marrant parce que ça n'a aucun rapport (a priori), mais ça cause une erreur de compile dans Qt5 ... Alors que sur d'autres plateforme, j'ai déjà ajouté mpg123 sans problème. WTF ? Je cherche où le problème ? Dans le code source de bash ou du driver réseau dans le kernel ?
  • autre projet passé : proto rapide sur Raspberry Pi. Démarrage sur Raspbian, normal; mais ça fini par déconner : 2 R-Pi avec leur écran 7" officiel, configurés à l'identique, mais sur l'un, impossible d'orienter le tactile en portrait. Jamais trouvé la différence. Du coup, tentative de Yocto. Beurk, galère; merde, c'est que R-Pi quoi, c'est pas du SoM SolidRun i.MX8 encore chaude sortie du four enfin. Ça s'est fini avec Buildroot : trop bien, direct au but, simple et logique.


Dans une autre vie, je suis passé par Bombardier (embarqué dans les trains) ou Thalès (embarqué dans ... chut, pas le droit de le dire ...) par exemple. Je vois mal ces boites utiliser Yocto pour produire un système embarqué, même sans contraintes sévères sur la sécurité (l'IHM utilisée par le conducteur d'un train n'a pas les mêmes contraintes que les systèmes qui gèrent le niveau de sable pour le freinage d'urgence par exemple).
Comment pourraient-elles assurer la maintenance pendant plusieurs années ? Il faudrait enfermer le PC qui a fait le build dans un coffre (ça se fait réellement) et ne plus le connecter au net lorsqu'on a une évolution ou une correction à apporter. Mais si cette tâche implique la récupération d'un package qui n'était pas présent lors du build de la release précédente ? On le reconnecte au net ? Et on prend le risque de tirer des mises à jour d'autres packages, et ainsi de modifer en profondeur le comportement du système ? No way !

Bref ... (pas bref en fait, je sais ...)

Comment vivez-vous cet enfer ?...

Merci pour vos retours d'expérience, ou mieux, le lien vers le tuto miraculeux qui explique tout en 15 lignes !

Et bravo à ceux qui ont eu le courage de tout lire ! Chapeau !