2016-05-10 29 views
3

Ich bin Anfänger für 'BitBake'. Ich muss Quellcode ändern und es bauen. Ich fand die Quellen bei Build/tmp/work/in einem Verzeichnis, das git commit id als Namen hat. Ich wollte die Quelle neu erstellen. Also gab ich bitbake -c clean <package_name>, gefolgt von bitbake <package_name>. Das Bild wurde gebaut. Aber als ich zurückging, um die Quelle zu ändern, scheint das Git-Repository an seinem Ort zu fehlen.Bitbake -c sauber entfernte Quelle

1) Wie bekomme ich die Quelle zurück?

2) Was ist der sichere Weg, die Quelle nach Änderungen wieder aufzubauen?

Vielen Dank im Voraus.

Antwort

4

1) Wie bekomme ich die Quelle zurück?

bitbake -ccleansstate <package_name> 
bitbake <package_name> 

Dies wird sicher bitbake machen und werden alle nicht freigegebenen Zustand verwenden, um während des zweiten Befehl, um die Aufgaben tatsächlich tun (einschließlich auspacken und Patch, die Quellen in einem Verzeichnis in $ WORKDIR bevölkern) .

2) Was ist der sichere Weg, die Quelle nach Änderungen wieder aufzubauen?

Wenn Sie Quellen in $ WORKDIR als schneller Hack ändern mögen, dann

bitbake -f -ccompile <package_name> 
bitbake <package_name> 

wird die Kompilierung Aufgabe markieren, wie schmutzig und wenn der nächste Befehl das Rezept erstellt, wird alle Aufgaben von der Kompilierung werden ab ausgeführt werden. Beachten Sie, dass bitbake Sie vor dem schmutzigen Zustand warnt, bis Sie eine machen, und dass cleansstate den $ WORKDIR neben Ihren Änderungen löscht: Dies ist also nur für schnelle Tests nützlich.

Wenn Sie auf der Suche nach einer Möglichkeit sind, mehr Entwicklung zu machen und trotzdem schnell die Dinge mit einem YoCto/OE-Build neben der Entwicklung zu testen, werfen Sie einen Blick auf devtool. Ich erwarte Teil 4.3.1.2. (Verwenden Sie Devtool ändern, um die Arbeit an Code zu einem vorhandenen Rezept aktivieren) könnte für Sie relevant sein.

1

Neben großen JKU Antwort:

ad.1) Wie erhalte ich die Quellen zurück?

Sie können den Quellcode nur einfach holen, werden keine anderen Aufgaben ausgeführt werden:

bitbake -c fetch -f <package_name> 

Allgemeinen, indem:

bitbake -c clean <package_name> 

oder mit Kraft Option:

bitbake -c clean -f <package_name> 

Sie haben die Aufgabe do_clean aus dem für dieses Paket verantwortlichen Rezept ausgelöst. Durch Überprüfung des Vorgangscodes (direkt im Rezept oder im geerbten Rezept) wird genau was gemacht. Auch im selben Verzeichnis build/tmp/work/finden Sie eine/temp/mit Protokollen für jede ausgeführte Aufgabe. Beispiel: log.do_fetch enthält die Ausgabe der Aufgabe do_fetch() für dieses spezifische Paket.

1
bitbake -c cleansstate <package name> 

wird die Quelle nicht entfernen, daher wird der Inhalt von do_fetch so sein, wie er ist. Und das nächste Mal

bitbake <package name> 

So do_fetch wird beim nächsten Mal nicht aber der Rest der auszuführen. Wie do_patch, do_metadata, do_compile usw. Wenn Sie mit einigen Änderungen an der Quelle Ebene versuchen möchten, können Sie einen Versuch von

bitbake <package name> -c devshell 

ich devshell eine bequeme Möglichkeit, zu versuchen, mit einer Quelle gefunden haben auch oder Inpackage Level Änderungen und Tryout. Es öffnet eine neue Shell am Speicherort des Pakets. Wo können Sie die Befehle lokal geben. So einfach wie make.