2016-08-09 22 views
0

Ich habe ein Yocto-Projekt, das einige Zeit braucht, um zu kompilieren. Das endgültige Bild soll meine Anwendung ausführen und daher habe ich ein benutzerdefiniertes Rezept in meiner eigenen Ebene.Kann mit dem SDK ein Yocto-Rezept erstellt werden?

Da das Erstellen des gesamten Yocto-Images einige von uns erfordert, baue ich ein SDK, damit ich meine Anwendung kompilieren und die Binärdatei zum Testen auf das laufende Gerät übertragen kann.

Anstatt die Binärdatei zu kompilieren und sie manuell auf das Gerät zu übertragen, kann ich das Yocto-Rezept verwenden, das ich für meine Anwendung mit dem SDK geschrieben habe, so dass ich seine do_package() "anrufen" kann? Wenn andere Entwickler die .deb (unter der Annahme PACKAGE_CLASSES = "package_deb" in) einfach aus dem SDK erstellen könnten, die unseren Workflow erheblich vereinfachen könnte.

Danke!

+0

Soweit ich weiß, ist das nicht möglich, aber stattdessen könnten Sie eine YoCto-Umgebung auf einem Build-Server einrichten und die anderen Entwickler laufen lassen "bitbake " – g0hl1n

+0

Der erste Build-Prozess wird mehrere Stunden dauern Das erste Mal, wenn Sie es ausführen. Nachfolgende Builds werden viel schneller ausgeführt (weniger als eine Minute), da ein Großteil des Builds zwischengespeichert wird. – aebudak

+0

Das Ziel ist es, _not_ muss alles neu zu erstellen. Einige Entwickler arbeiten innerhalb einer VM, so dass yocto neu erstellt werden kann, obwohl sie manchmal unseren Code erstellen möchten. Was den Shared-Build-Server betrifft, haben wir das zwar, skalieren aber nicht. Nur ein Bitbake (pro Git-Klon des Projekts) kann jederzeit ausgeführt werden, oder mehrere Klone haben doppelten Speicherplatz und Zeit. Ich möchte nur unseren eigenen Code zusammenstellen, nicht die ganze yocto Distro ... –

Antwort

3

Huh, bluelightning schlug mich bis zum Schlag. Das bringt mir bei, dass ich nicht auffrischen muss. Anyhoo, hier ist mein 2 ¢:

Ja, schauen Sie sich devtool. Ziel des devtool-Skripts ist es, die Entwicklung von Software für Zielgeräte zu verbessern und zu vereinfachen.

Erstens haben Ihre Entwickler das erweiterbare SDK (eSDK) installieren, die diesen Befehl gebaut verwendet:

bitbake -c populate_sdk_ext my-image-name 

Sobald Sie diese SDK beziehen, diese Befehle ausführen:

devtool modify my-recipe-name 
...make your changes to [sdk]/workspace/source/my-recipe-name... 
devtool build my-recipe-name 
devtool package my-recipe-name 

Dies sollte Erstellen Sie ein Paket Ihrer App unter [sdk]/tmp/deploy/rpm/[arch]/mein-rezeptname, das dann auf dem Zielcomputer bereitgestellt werden kann.

Sehen Sie sich auch devtool deploy-target an, wenn Ihr Zielgerät über eine Netzwerkverbindung verfügt.

Wenn Sie mir weitere Details zu Ihrem Setup geben, kann ich vielleicht mehr helfen. Hoffentlich bringt dich das wenigstens in die richtige Richtung.

+0

Danke! Das war genau das, was ich brauchte. Ich habe bereits mein Rezept geschrieben, ich brauche hauptsächlich einen Weg, es zu bauen, ohne vorher das ganze Bild gebaut zu haben. 'devtool build my-recipe-name' scheint genau das zu sein, was ich brauche. Leider habe ich Probleme, es zum Laufen zu bringen. Ich bekomme 'kann nicht berühren [...]/qt.conf'. Wenn ich das Verzeichnis in "meta-qt5/classes/populate_sdk_qt5_base.bbclass" erstelle, baut das sdk auf, kann aber nicht mit 'SDK preparation failed' installiert werden. Das Protokoll zeigt Fehler bei Python + CMake, "mehrdeutiger Weiterleitung" und einem "apt-native" Konfigurationsfehler. Könnte sein, weil ich auf Jethro und altem 'meta-qt5' bin ... –

2

Das Extensible SDK wurde entwickelt, um eine vorgefertigte und vorkonfigurierte Umgebung zu bieten und Ihnen zu ermöglichen, Anwendungen und andere Komponenten so zu erstellen, wie sie mit dem vollständigen Buildsystem erstellt wurden. Sie können Ausgabedateien sogar problemlos auf das Zielgerät übertragen, wenn auf dem Ziel ein SSH-Server ausgeführt wird.

Sie können die erweiterbare SDK mit dem folgenden Befehl erstellen:

bitbake -c populate_sdk_ext <imagename> 

Weitere Informationen Sie die neue SDK manual lesen möchten können.