MokoMakefile/de
From Openmoko
![]() |
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
Contents |
MokoMakefile
Das MokoMakefile ist ein wertvolles Tool um neuen Entwicklern möglichst schnell eine einheitliche Entwicklungsumgebung an die Hand zu geben. Es garantiert die einfache Reproduzierbarkeit und Wartung der Entwicklungsumbgebung ähnlich wie OpenEmbedded eine generelle Plattform zur Entwicklung von Embedded-Distributionen darstellt.
Hinweis:
- Das MokoMakefile ist kein Ersatz für bitbake, SVN, monotone, OpenEmbedded, qmake und dergleichen. Es dient vielmehr als Rahmen für die einfache Wartung und Instandhaltung einer Entwicklungsumgebung die den Regeln des Openmoko-Projekts entspricht.
- Die Entwicklungsumgebung benötigt ca. 7GB Festplattenspeicher
- MokoMakefile wird von Rod Whitby entwickelt und ist kein offizielles Produkt von Openmoko. Sollte es Widersprüche bzw. Probleme zwischen der offiziellen Build Openmoko Anleitung (eng) und der MokoMakefile selbst geben gilt die offizielle Anleitung als Standard.
Vor dem Start
Stelle sicher dass der Befehl /bin/sh (ls -l /bin/sh) nicht mit dash sondern bash verlinkt ist. Mit dash wird's keinen Spass machen!
Falls du bereits mit dash (als /bin/sh) gearbeitet haben solltes ist die Perl-Komponente vermutlich defekt. Indizien dafür sind:
- Das Build-System wirft wegen einem 'Unterminated quote string' eine Fehlermeldung aus
- Die Fehlermeldung 'You haven't done a "make depend" yet!'
Sollte eine dieser Fehlermeldung auftreten sind folgende Schritte notwendig: make clean-package-perl make clean-package-perl-native mit anschließendem Rebuild.
Sollte alles nichts helfen dann bleibt nur noch ein 'rm -rf' auf das Perl-Verzeichnis und die Perl-Projektstempel loszulassen. Hier ein Beispiel für einen i686-Rechner: rm -rf build/tmp/work/i686-linux/perl-native-5.8.7-r3 rm -f build/tmp/stamps/i686-linux/perl*
Installation
So läufts:
1 - Überprüfe ob dein Rechner den folgenden Anforderungen entspricht:
http://wiki.openembedded.net/index.php/OEandYourDistro
2 - Erstelle das $OMDIR Verzeichnis:
mkdir /home/moko ; cd /home/moko
3 - Hole das MokoMakefile:
wget http://www.rwhitby.net/files/openmoko/Makefile
4 - Die Entwicklungsumgebung erstellen:
make setup
5 - Mit dem kompilieren anfangen (bevor du mit dem langen Kompilierprozess anfängst solltest du dich in der Tips-Sektion darüber schlau machen wie man Multicore aktiviert):
make openmoko-devel-image
Das Makefile erstellt die Ordnerstruktur wie sie in Openmoko2007.2 vorgegeben ist, lädt die benötigten Programme (von den richtigen Quellen und in der richtigen Version) herunter und fängt sofort an das Image zu bauen.
Danach kannst du das MokoMakefile dazu verwenden nachträgliche Builds laufen zu lassen oder im build-Verzeichnis mit bitbake die einzelnen Schritte durchführen.
Entwicklungsumgebung updaten
Zur einfachen Wartung der Entwicklungsumgebung stehen folgende Befehle zur Verfügung:
1 - Um das MokoMakfile auf die neuste Version zu bringen: make update-makefile
2 - Um den Paket-Pool zu aktualisieren und die entsprechenden Patches herunterzuladen: make update
3 - Um sicherzustellen dass kürzlich vorgenommene Änderungen an der Build-Verzeichnisstruktur übernommen wurden: make setup
Eine Möglichkeit ein neues Image mit den aktuellen Updates zu bauen: make update-makefile && make update && make setup && make openmoko-devel-image
Fehler melden
Überprüfe, ob der Fehler wiederholt auftritt und reproduzierbar ist: make update-makefile ; make update ; make setup
danach: make clean-package-<foo>
(<foo> ist der Name des defekten Pakets)
danach: make all
Wenn der Fehler nach dem diese Sequenz zum dritten Mal in Folge durchlaufen wurde auftritt, bitte bei rwhitby in #openmoko IRC melden.
Work-arounds
Work-arounds für vorübergehende oder isolierte Probleme können auf der Diskussions-Seite gefunden bzw hinzugefügt werden. Wenn das Problem behoben wurde wird das entsprechende Work-around entfernt.
Tips
- Die Menge an benötigten Festplattenspeicher kann durch hinzufügen folgender Zeile in der 'local.conf' (idR /home/moko/build/conf/local.conf) erheblich verringert werden:
INHERIT += "rm_work" Diese Einstellung bewirkt dass der Inhalt jedes build/tmp/work/*/<package>-Verzeichnisses gelöscht wird wenn das Packet erfolgreich erstellt wurde.
- Sollte ein Fehler im Zusammenhang mit Monotone auftreten der in etwa so aussieht:
mtn: misuse: database /home/moko/OE.mtn is laid out according to an old schema Muss OE.mtn mit dem folgendem Befehl, ausgeführt in /home/moko geupdated werden: mtn --db OE.mtn db migrate
- Sollte ein Paket wegen eines kaputten Downloads etc nicht kompiliert werden können hilft es normalerweise wenn man die Quellen löscht und es per Hand versucht:
rm sources/<package>* cd build . ../setup-env bitbake -crebuild <package> danach sollte der Build-Vorgang wieder normal ablaufen
- Für Maschinen mit mehreren Prozessoren (bzw Dual-Core) sollten diese zwei Zeilen in der local.conf das ganze etwas beschleunigen:
PARALLEL_MAKE = "-j 4" BB_NUMBER_THREADS = "4"
Sollte der Rechner das nicht verkraften kann man die Werte auch verringern.
- AMD64-Maschinen benötigen den Patch von http://bugs.openembedded.org/show_bug.cgi?id=1765 für das Paket db3-native
QEMU
Das MokoMakefile unterstützt jetzt auch das automatische Kompilieren, Flashen und Starten des neuen Neo1973 Emulators (eng - basierend auf QEMU).
make qemu
kompiliert qemu-neo1973, lädt die neusten offiziellen Openmoko-Images herunter, brennt sie in den virtuellen NAND-Speicher und startet den Emulator. Die Makefiles müssen trotzdem wie oben beschrieben installiert werden
Weitere make-Ziele sind:
- Lädt die aktuellen Official-Images herunter:
make download-images
- Images in den virtuellen Speicher flahen:
make flash-qemu-official
- Die lokal erzeugten Images in den Emulator-Speicher flashen:
make flash-qemu-local
- Den Emulator starten
make run-qemu bzw make run-qemu-snapshot
Hinweis: Die Pakete "lynx" und "netpbm" müssen auf dem Build-Rechner installiert sein bevor der Emulator gestartet werden kann.
Weitere Informationen über QEMU gibt es in der Sektion Openmoko unter QEMU (eng)
Entwickeln mit MokoMakefile
Um im Pakete-Pool Veränderungen zu übernehmen, kompiliern und in QEMU einzuspielen benötigt man folgende Befehle:
- Übernehmen
cd /home/moko/openmoko quilt new beschreibender-name.patch quilt add trunk/src/Name-der-zu-ändernden-Datei (Schritte für jede geänderte Datei wiederholen) ...Änderungen JETZT machen... quilt refresh (Erstellt eine neue Datei in /home/moko/patches/openmoko-HEAD/ und aktualisiert die quilt-Serien)
- Kompilieren und in QEMU einspielen:
make build-qemu make flash-qemu-local make run-qemu
Anhang
Project page: http://mokomakefile.projects.openmoko.org/