MokoMakefile/de
From Openmoko
(catchg) |
|||
(13 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Languages|MokoMakefile}} | ||
==MokoMakefile== | ==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 | + | 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:''' | + | '''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 | + | *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 | *Die Entwicklungsumgebung benötigt ca. 7GB Festplattenspeicher | ||
− | *MokoMakefile wird von [[User:RodWhitby|Rod Whitby]] entwickelt und ist kein offizielles Produkt von | + | *MokoMakefile wird von [[User:RodWhitby|Rod Whitby]] entwickelt und ist kein offizielles Produkt von Openmoko. Sollte es Widersprüche bzw. Probleme zwischen der [[Openmoko2007.2/de|offiziellen Build Openmoko Anleitung]] ([[Openmoko2007.2|eng]]) und der MokoMakefile selbst geben gilt die offizielle Anleitung als Standard. |
=== Vor dem Start === | === 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! | + | '''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 ist die Perl-Komponente vermutlich defekt. Indizien dafür sind: | + | 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 | * Das Build-System wirft wegen einem 'Unterminated quote string' eine Fehlermeldung aus | ||
* Die Fehlermeldung 'You haven't done a "make depend" yet!' | * Die Fehlermeldung 'You haven't done a "make depend" yet!' | ||
Sollte eine dieser Fehlermeldung auftreten sind folgende Schritte notwendig: | Sollte eine dieser Fehlermeldung auftreten sind folgende Schritte notwendig: | ||
− | + | make clean-package-perl | |
− | + | make clean-package-perl-native | |
mit anschließendem Rebuild. | 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: | 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 === | === Installation === | ||
Line 28: | Line 28: | ||
1 - Überprüfe ob dein Rechner den folgenden Anforderungen entspricht: | 1 - Überprüfe ob dein Rechner den folgenden Anforderungen entspricht: | ||
− | [http:// | + | [http://wiki.openembedded.net/index.php/OEandYourDistro http://wiki.openembedded.net/index.php/OEandYourDistro] |
2 - Erstelle das $OMDIR Verzeichnis: | 2 - Erstelle das $OMDIR Verzeichnis: | ||
mkdir /home/moko ; cd /home/moko | mkdir /home/moko ; cd /home/moko | ||
Line 38: | Line 38: | ||
make openmoko-devel-image | make openmoko-devel-image | ||
− | |||
− | + | Das Makefile erstellt die Ordnerstruktur wie sie in [[Openmoko2007.2/de|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=== | + | ===Entwicklungsumgebung updaten=== |
Zur einfachen Wartung der Entwicklungsumgebung stehen folgende Befehle zur Verfügung: | Zur einfachen Wartung der Entwicklungsumgebung stehen folgende Befehle zur Verfügung: | ||
1 - Um das MokoMakfile auf die neuste Version zu bringen: | 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: | 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: | 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: | Eine Möglichkeit ein neues Image mit den aktuellen Updates zu bauen: | ||
− | + | make update-makefile && make update && make setup && make openmoko-devel-image | |
Line 62: | Line 62: | ||
Überprüfe, ob der Fehler wiederholt auftritt und reproduzierbar ist: | Überprüfe, ob der Fehler wiederholt auftritt und reproduzierbar ist: | ||
− | + | make update-makefile ; make update ; make setup | |
danach: | danach: | ||
− | + | make clean-package-<foo> | |
(<foo> ist der Name des defekten Pakets) | (<foo> ist der Name des defekten Pakets) | ||
danach: | danach: | ||
− | + | make all | |
Wenn der Fehler nach dem diese Sequenz zum dritten Mal '''in Folge''' durchlaufen wurde auftritt, bitte bei rwhitby in #openmoko [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC] melden. | Wenn der Fehler nach dem diese Sequenz zum dritten Mal '''in Folge''' durchlaufen wurde auftritt, bitte bei rwhitby in #openmoko [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC] melden. | ||
Line 79: | Line 79: | ||
− | ===Tips=== | + | ===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: | + | * 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. | 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: | * 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: | 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: | * 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 | 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: | * 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.'' | ''Sollte der Rechner das nicht verkraften kann man die Werte auch verringern.'' | ||
Line 106: | Line 106: | ||
===QEMU=== | ===QEMU=== | ||
− | Das MokoMakefile unterstützt jetzt auch das automatische Kompilieren, Flashen und Starten des neuen [[ | + | Das MokoMakefile unterstützt jetzt auch das automatische Kompilieren, Flashen und Starten des neuen [[Openmoko under QEMU/de|Neo1973 Emulators]] ([[Openmoko under QEMU|eng]] - basierend auf QEMU). |
− | + | make qemu | |
− | kompiliert qemu-neo1973, lädt die neusten offiziellen | + | 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'' | ''Die Makefiles müssen trotzdem wie oben beschrieben installiert werden'' | ||
Line 116: | Line 116: | ||
Weitere make-Ziele sind: | Weitere make-Ziele sind: | ||
* Lädt die aktuellen Official-Images herunter: | * Lädt die aktuellen Official-Images herunter: | ||
− | + | make download-images | |
* Images in den virtuellen Speicher flahen: | * Images in den virtuellen Speicher flahen: | ||
− | + | make flash-qemu-official | |
* Die lokal erzeugten Images in den Emulator-Speicher flashen: | * Die lokal erzeugten Images in den Emulator-Speicher flashen: | ||
make flash-qemu-local | make flash-qemu-local | ||
* Den Emulator starten | * Den Emulator starten | ||
− | + | make run-qemu | |
bzw | bzw | ||
− | + | make run-qemu-snapshot | |
'''Hinweis''': | '''Hinweis''': | ||
Die Pakete "lynx" und "netpbm" müssen auf dem Build-Rechner installiert sein bevor der Emulator gestartet werden kann. | 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 [[ | + | Weitere Informationen über QEMU gibt es in der Sektion [[Openmoko under QEMU/de|Openmoko unter QEMU]] ([[Openmoko under QEMU|eng]]) |
− | + | ||
===Entwickeln mit MokoMakefile=== | ===Entwickeln mit MokoMakefile=== | ||
Line 137: | Line 136: | ||
*Übernehmen | *Ü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: | *Kompilieren und in QEMU einspielen: | ||
− | + | make build-qemu | |
− | + | make flash-qemu-local | |
− | + | make run-qemu | |
− | ===Anhang=== | + | ===Anhang=== |
Project page: | Project page: | ||
− | http://mokomakefile.projects.openmoko.org/ | + | *http://mokomakefile.projects.openmoko.org/ |
− | + | ||
− | + | ||
− | [[Category: | + | [[Category:Developer resources]] |
Latest revision as of 13:14, 19 July 2009
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 |
[edit] 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.
[edit] 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*
[edit] 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.
[edit] 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
[edit] 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.
[edit] 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.
[edit] 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
[edit] 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)
[edit] 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
[edit] Anhang
Project page: