yocto une solution robuste pour construire des applications à fort contenu applicatif

31
Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 1 www.cioinfoindus.fr Yocto une solution robuste Yocto une solution robuste pour construire des pour construire des applications à fort contenu applications à fort contenu applicatif. applicatif. C. Charreyre C. Charreyre [email protected] [email protected]

Upload: christian-charreyre

Post on 01-Dec-2014

934 views

Category:

Technology


0 download

DESCRIPTION

Ce document est la présentation effectuée par CIO Informatique Industrielle lors de la conférence 'Yocto et Linux, un couple d'avenir' du salon RTS 2013

TRANSCRIPT

Page 1: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 1

www.cioinfoindus.fr

Yocto une solution robuste Yocto une solution robuste pour construire des pour construire des

applications à fort contenu applications à fort contenu applicatif. applicatif.

C. CharreyreC. [email protected]@cioinfoindus.fr

Page 2: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 2

www.cioinfoindus.fr

Licence

Attribution-Noncommercial-Share Alike 2.0 France

You are free:

to Share - to copy, distribute, display, and perform the work

to Remix - to make derivative works

Under the following conditions:

Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).

Non commercial. You may not use this work for commercial purposes.

Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to http://creativecommons.org/licenses/by-nc-sa/2.0/fr/deed.en_US.

Any of the above conditions can be waived if you get permission from the copyright holder.

Nothing in this license impairs or restricts the author's moral rights.

Page 3: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 3

www.cioinfoindus.fr

CIO Informatique Industrielle

Société d'ingénierie en informatique industrielle et technique

Au service de nos clients depuis 1990

Une équipe de 15 spécialistes pour accompagner les projets industriels ou militaires

Investissement sur Linux depuis 2000. Centre de Compétences créé fin 2001

Agréé Crédit d'Impôt Recherche

Marchés industriels, embarqué et militaire

Membre de Libertis - Commission Logiciel Libre de Medinsoft

Page 4: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 4

www.cioinfoindus.fr

Évolutions de Linux embarqué

Il y a quelques années, Linux = moteur d'applications enfouies :

Besoin d'un kernel et d'une glibc

Utilisation de busybox pour bâtir le Root FileSystem

Application embarquée home made sur ces bases

Peu de soucis de cohérence ou de complexité

Besoins actuels : applications embarquées riches :

Moins de limitations de mémoire vive ou de masse

Processeurs beaucoup plus puissants

IHM riches : tactile, vidéo, image, culture Iphone et Androïd

Nécessité d'assembler de manière cohérente de multiples briques logicielles de base

Page 5: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 5

www.cioinfoindus.fr

Exemples dans l'électronique grand public

De nombreux appareils basés sur Linux, à fort contenu applicatif :

Page 6: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 6

www.cioinfoindus.fr

Les besoins actuels

Techniques :

Richesse : Graphisme, vidéo, connectivité

Complexité ⇒ Industrialisation de la production logicielle : fiabilité, automatisation si possible, reproductibilité

Économiques :

Time To Market de plus en plus court

Coûts optimisés

Recentrage sur la valeur ajoutée

Page 7: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 7

www.cioinfoindus.fr

Les besoins actuels

Conséquences :

Favoriser des composants sur étagère

L'application métier n'est qu'une partie, assemblés avec des éléments puisés dans l'écosystème

Exemple :

initiative Genivi dans l'automobile (In Vehicule Infotainment) – basée sur Yocto

Page 8: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 8

www.cioinfoindus.fr

Travailler avec Linux

Un monde fragmenté aux multiples sourcesBootloaders (UBoot, RedBoot, LILO, Grub, ...)

Kernel (kernel.org, fournisseur hardware, ...)

Librairies de base (glibc ou alternatives réduites)

Bases applicatives (busybox, kits embarqués libres ou propriétaires, ....)

IHM (Qt, MicroWindows/NanoX, ...)

Multimédia (Mplayer, Gstreamer, Xine, ....)

Extensions temps réel (RTAI, Xenomai, …)

Qu'il faut assembler en un ensemble cohérent : votre device

Mais chaque projet contributeur vit sa vie à son propre rythme

Page 9: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 9

www.cioinfoindus.fr

Faire attention au respect de licences multiples (GPL, LGPL, BSD, etc...)

Les connaître et les respecter

Adapter ce que l'on utilise à sa stratégie de publications de codes source

Pour des applications riches, des Software Development Kits structurés sont conseillés :

Buildroot

Scratchbox

Open Embedded / Angstrom / Yocto ....

Travailler avec Linux

Page 10: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 10

www.cioinfoindus.fr

PourquoiYocto ?

Pour éviter cela

Page 11: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 11

www.cioinfoindus.fr

PourquoiYocto ?

Pour gérer cela

Page 12: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 12

www.cioinfoindus.fr

PourquoiYocto ?

Dépendances de nautilus : 62 librairies

Page 13: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 13

www.cioinfoindus.fr

PourquoiYocto ?

Les « sorties » de l'outil :

La chaîne de compilation pour la cible (générée par Yocto)

Le Software Development Kit qui se construit petit à petit : fichiers headers et librairies partagées compilées pour la cible, outils natifs nécessaires à la compilation :

Utilisable tel quel (console)

Utilisable à travers Eclipse (plugin ADT)

Des paquets logiciels binaires au format debian ou RPM + un gestionnaire de paquets sur la cible (cohérences, dépendances)

Page 14: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 14

www.cioinfoindus.fr

PourquoiYocto ?

Les « sorties » de l'outil :

Une image finale prête à déployer (archive tgz, ubi, ext3, etc...)

Une classification des logiciels par type de licence

Page 15: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 15

www.cioinfoindus.fr

Les bénéfices de Yocto

Gestion intégrée des versions et de leurs dépendances

Grande richesse logicielle

Prise en compte de la cross compilation et des architectures ≠ Intel (patches, configurations spécifiques)

Architecture modulaire, en couches : meta-xxxx

Couches de base :

meta, meta-yocto, meta-yocto-bsp

Nombreuses couches additionnelles :

Support hardware, support software, distributions

Votre propre couche (développements propres)

Page 16: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 16

www.cioinfoindus.fr

Les bénéfices de Yocto

Architecture en couches

Priorité entre couches qui partageraient une recette

Liste des couches : http://layers.openembedded.org/layerindex/layers/

Page 17: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 17

www.cioinfoindus.fr

Les bénéfices de Yocto

Indépendance vis à vis du poste de développement hôte :

Outils nécessaires à la compilation générés par Yocto puis utilisés (ex: python, dmake, pkg-config …)

Pas d'utilisation des headers et librairies de la distribution locale, même en architecture Intel

Pas de problème lié à la mise à jour de la distribution hôte

Reproductibilité de la génération de l'image embarquée :

Remontée de tous les paramétrages à la génération

Aucune intervention manuelle lors du déploiement sur la cible

Communauté active

Page 18: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 18

www.cioinfoindus.fr

Comment fonctionneYocto ?

Un moteur écrit en Python : bitbake

Un jeu de recettes pour fabriquer les paquets logiciels

Une notion de classes pour mise en commun entre recettes

Une notion de groupe de paquets = package group permettant de structurer les recettes

Des dépendances entre paquets, décrites dans les recettes, ou déterminées automatiquement (librairies partagées)

Pour chaque recette des tâches élémentaires

Calcul de l'arbre des dépendances pour fabriquer les paquets dans le bon ordre

Page 19: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 19

www.cioinfoindus.fr

Comment fonctionne Yocto ?

Possibilité de modifier une recette en différentiel : facilite les adaptations au contexte propre

Une notion de distribution :

Définit des versions préférentielles pour les paquets logiciels (cohérence de l'ensemble)

Définit des réglages spécifiques (fichiers de configuration)

Prise en compte des spécificités de la plateforme :

Au niveau kernel : architecture, bootloader, modules kernel adaptés etc...

Au niveau userland : paramétrages GCC, optimisations, floating point etc...

Page 20: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 20

www.cioinfoindus.fr

Anatomie d'une recette

Une recette pour un ou plusieurs paquets (fractionnement pour optimisation de l'espace)

Des variables d'environnement

Des tâches élémentaires implicites ou explicites (pour modifier l'implicite)

Page 21: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 21

www.cioinfoindus.fr

Anatomie d'une recette (ed)

DESCRIPTION = "a line-oriented text editor"HOMEPAGE = "http://www.gnu.org/software/ed/"BUGTRACKER = ""

LICENSE = "GPLv3+"LIC_FILES_CHKSUM = "file://COPYING;md5=f27defe1e96c2e1ecd4e0c9be8967949 \ file://ed.h;endline=20;md5=c708cda1b2e8d723d458690b7db03878 \ file://main.c;endline=24;md5=1bd039d59e04ee5f82adcc970144a2c3"

SECTION = "base"PR = "r0"

# LSB states that ed should be in /bin/bindir = "${base_bindir}"

SRC_URI = "${GNU_MIRROR}/ed/ed-${PV}.tar.gz \ file://ed-1.2-build.patch"

SRC_URI[md5sum] = "9a78593decccaa889523aa4bb555ed4b"SRC_URI[sha256sum] = "211c67b0c4aae277d34b1c5f842db1952e468e5905142868e4718ac838f08a65"

do_configure() {${S}/configure

}

do_install() {oe_runmake 'DESTDIR=${D}' install

}

Page 22: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 22

www.cioinfoindus.fr

Anatomie d'une recette (gthumb)

DESCRIPTION = "gThumb is an image viewer and browser for the GNOME Desktop"SECTION = "x11/gnome"LICENSE = "GPLv2"LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"DEPENDS = "glib-2.0 gtk+ libxml2 gnome-doc-utils libunique gconf libpng gstreamer jpeg tiff gst-plugins-base"

PR = "r4"

EXTRA_OECONF = "--disable-gnome-keyring --disable-libsoup --disable-exiv2 --disable-clutter"

inherit gnome pkgconfig

SRC_URI[archive.md5sum] = "97fc13221b0c5d80c27a2e25a3a3ac6f"SRC_URI[archive.sha256sum] = "cf809695230ab8892a078be454a42ade865754c72ec1da7c3d74d4310de54f1d"

SRC_URI += "file://parallel.patch"

do_install_append () {rm ${D}${libdir}/${BPN}/extensions/*.a

}

FILES_${PN} += "${datadir}/icons"FILES_${PN} += "${libdir}/${BPN}/extensions/*.so \ ${libdir}/${BPN}/extensions/*.extension"FILES_${PN}-dev += "${libdir}/${BPN}/extensions/*.la"FILES_${PN}-dbg += "${libdir}/${BPN}/extensions/.debug/"

Page 23: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 23

www.cioinfoindus.fr

Modification d'une recette en delta

FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"

dirs755 += " ${localstatedir}/volatile/mqueue"

volatiles += "mqueue"

SRC_URI += "file://root-profile"

CONFFILES_${PN} += "/home/root/.profile"

do_install_append() {

install -m 0755 ${WORKDIR}/root-profile ${D}/home/root/.profile

}

Page 24: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 24

www.cioinfoindus.fr

Les principales tâches d'une recette

Fetch : téléchargement des sources (http, ftp, svn, git ...)

Unpack : extraction des sources

Patch : application de patches additionnels fournis par la recette

Configure : configuration

Compile : compilation

Stage : installation dans le SDK

Install : installation dans un tampon local

Package : création du (des) paquet(s) binaire

Page 25: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 25

www.cioinfoindus.fr

Anatomie d'une classe (qt4e)

QT4EDEPENDS ?= "qt4-embedded "DEPENDS_prepend = "${QT4EDEPENDS}"

inherit qmake2

QT_BASE_NAME = "qt4-embedded"QT_DIR_NAME = "qtopia"QT_LIBINFIX = "E"# override variables set by qmake-base to compile Qt/Embedded apps#export QMAKESPEC = "${STAGING_DATADIR}/${QT_DIR_NAME}/mkspecs/${TARGET_OS}-oe-g++"export OE_QMAKE_INCDIR_QT = "${STAGING_INCDIR}/${QT_DIR_NAME}"export OE_QMAKE_LIBDIR_QT = "${STAGING_LIBDIR}"export OE_QMAKE_LIBS_QT = "qt"export OE_QMAKE_LIBS_X11 = ""export OE_QMAKE_EXTRA_MODULES = "network"EXTRA_QMAKEVARS_PRE += " QT_LIBINFIX=${QT_LIBINFIX} "

# Qt4 uses atomic instructions not supported in thumb modeARM_INSTRUCTION_SET = "arm"

Page 26: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 26

www.cioinfoindus.fr

Anatomie d'un package-group (packagegroup-core-tools-debug)

## Copyright (C) 2008 OpenedHand Ltd.#

SUMMARY = "Debugging tools"LICENSE = "MIT"

inherit packagegroup

PR = "r2"

PACKAGE_ARCH = "${MACHINE_ARCH}"

# For backwards compatibility after renameRPROVIDES_${PN} = "task-core-tools-debug"RREPLACES_${PN} = "task-core-tools-debug"RCONFLICTS_${PN} = "task-core-tools-debug"

MTRACE = ""MTRACE_libc-glibc = "libc-mtrace"

RDEPENDS_${PN} = "\ gdb \ gdbserver \ tcf-agent \ openssh-sftp-server \ rsync \ strace \ ${MTRACE} \ "

Page 27: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 27

www.cioinfoindus.fr

Gestion du versionning hôte

2 niveaux de versionning :

Version du logiciel (gérée par l'équipe projet qui développe ce logiciel upstream)

Version de la recette (gérée par la communauté yocto)

Plusieurs recettes possibles pour un même logiciel (différentes versions du logiciel + svn/git)

Par défaut version la + élevée retenue – peut être contré par paramétrage au niveau distribution

Page 28: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 28

www.cioinfoindus.fr

Gestion du versionning cible

Gestionnaire de paquets sur la cible :

Installation

Suppression

Upgrade

Gère les dépendances à l'installation - suppression

Gère les versions du logiciel + version de la recette :

Refus des downgrade sauf forçage

Page 29: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 29

www.cioinfoindus.fr

Bon à savoir

Outil historiquement en mode console :

Mais apparition de version graphique : Hob

Plugin Eclipse : ADT

Prévoir beaucoup de disque et de temps CPU :

Génération de la toolchain + libc par yocto (temps CPU)

Conservation des étapes intermédiaires – optionnel mais utile – très gourmand en disque

Connaissance de Python : non obligatoire mais un + pour comprendre / développer des recettes

Connaissance des standards tels que autotools, pkgconfig etc... conseillée :

Plus du fait des logiciels gérés que de yocto lui même

Page 30: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 30

www.cioinfoindus.fr

Bon à savoir

Ne pas négliger qu'il n'y a pas d'outil miracle :

Temps de prise en main initial

Courbe d'apprentissage pour passer par les stades :J'utilise

Je comprends

Je modifie / je crée

La documentation s'est professionnalisée (sur le site Web yocto et distribuée avec le code).

Se faire accompagner par un spécialiste : réduction du Time To Market

Page 31: Yocto une solution robuste pour construire des applications à fort contenu applicatif

Yocto une solution robuste pour construire des applications à fort contenu applicatif. - 10 Avril 2013 31

www.cioinfoindus.frPour aller plus loin

Pour toute information complémentaire :

Visitez notre site Web http://www.cioinfoindus.fr

Contactez nous :

Tél : 04 95 05 19 41

Mail : mailto:[email protected]

Possibilité d'envoi des slides de la présentation sur demande