2013-01-23 17 views
6

Haben Sie eine Idee, wie man ein OE-Projekt mit verteilter Bitbake kompilieren? Ich habe über Distcc gedacht.Distributed kompilieren mit bitbake

make wird linux-gcc von meinem Pfad aufrufen, der auf distcc zeigt.
distcc plant die Aufgaben für alle bekannten Hosts.
-jn erstellt n6 Instanzen von make.
Es funktioniert gut.
Aber jetzt möchte ich distcc mit bitbake verwenden.
Ich weiß, wie man -jn mit bitbake verwendet.
Verwenden Sie einfach export PARALLEL_MAKE=-jn

Aber wie Export PATH=~/distcc/bin:$PATH mit bitbake zu verwenden.
Die distcc/bin MUSS vor der $PATH stehen.
Aber bitbake wird die $PATH_prepend (platziert in org.openembedded.dev/conf/bitbake.conf) vor der $PATH platzieren.

Oder hat jemand ein anderes Werkzeug für bessere Art des verteilten Gebäudes mit Bitbake?

+0

Exportbefehl wird den angegebenen Pfad zu $ ​​PATH-Variable hinzufügen und wird in dieser Sitzung aktiv sein . Aber ich bin mir nicht sicher über dein Problem. Könnten Sie bitte Ihr Problem erklären –

+0

Das Problem ist, ich weiß nur, wie man PARALLEL_MAKE verwendet, aber wenn es um bitbake geht, wer ruft endlich machen, ich habe keine Ahnung wie man es als PARALLEL_MAKE Weg zu konfigurieren. – butter

Antwort

1

Eine etwas mehr BitBake-ähnliche Methode zum Aufrufen von Builds mit Parallelität besteht darin, die Datei local.conf zu bearbeiten und die Kommentare BB_NUMBER_THREADS und PARALLEL_MAKE zu entfernen und ihre Werte auf die doppelte Anzahl an Kernen festzulegen. Wenn Sie jetzt BitBake aufrufen, verwendet es diese Werte.

+0

Ich habe versucht, BB_NUMBER_THREADS Möglichkeiten, aber es ist nicht eine große Verbesserung in einzelnen Maschine.Scheinen Sie, dass das Betriebssystem hat die make threads – butter

11

Try Icecream: https://github.com/icecc/icecream/blob/master/README.md

Wie distcc, nimmt Icecream Aufträge von einem Build kompilieren und verteilt sie unter den Remote-Rechnern einen parallelen Build ermöglicht. Im Gegensatz zu distcc verwendet Icecream einen zentralen Server, der die Kompilierungsjobs dynamisch auf den schnellsten freien Server plant.

Sowohl OpenEmbedded als auch Yocto Project unterstützen Icecream. Siehe https://git.yoctoproject.org/cgit.cgi/poky/plain/meta/classes/icecc.bbclass

installieren Icecream, dann fügen Sie den folgenden Code zu Ihrem site.conf oder local.conf

INHERIT += "icecc" 

# This value overrides PARALLEL_MAKE when ICECC is enabled 
# This would enable icecc for local and cross 
ICECC_PARALLEL_MAKE = "-j 24"