MokoMakefile/it

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(QEMU)
(Developing with MokoMakefile)
Line 123: Line 123:
 
===Developing with MokoMakefile===
 
===Developing with MokoMakefile===
  
To make in-tree changes and have them built and used by qemu:
+
Per compilare ed eseguire su qemu dei sorgenti modificati:
  
 
   cd /home/moko/openmoko
 
   cd /home/moko/openmoko
 
   quilt new descriptive-patch-name.patch
 
   quilt new descriptive-patch-name.patch
   quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify
+
   quilt add trunk/src/name-of-file-to-change # per ogni file che è stato modificato
 
   ...make the changes...
 
   ...make the changes...
   quilt refresh # this creates a file in /home/moko/patches/openmoko-HEAD/ and updates the quilt series file there
+
   quilt refresh # questo crea un file in /home/moko/patches/openmoko-HEAD/ e aggiorna i files quilt
  
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!
+
Nota: '''NON''' utilizzare percorsi assoluti, quilt potrebbe provare a ottenere un file diff di /dev/null!
  
To build the changes and have them used by qemu:
+
Per compilare le modifiche e utilizzare il risultato con qemu:
  
 
   make build-qemu
 
   make build-qemu
Line 139: Line 139:
 
   make run-qemu
 
   make run-qemu
  
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):
+
Se le modifiche vengono apportate alle applicazioni e non a OpenMoko, questo è quello che va fatto (esempio: openmoko-messages):
  
 
   /usr/src/openmoko# . ./setup-env
 
   /usr/src/openmoko# . ./setup-env
Line 152: Line 152:
 
   /usr/src/openmoko/openmoko# bitbake openmoko-messages
 
   /usr/src/openmoko/openmoko# bitbake openmoko-messages
  
Then continue with MokoMakefile usage.
+
Poi continuare con MokoMakefile.
  
If you want to add an application to your openmoko distribution, do this:
+
Se vuoi aggiungere una applicazione alla tua distribuzione OpenMoko:
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.
+
Tutte le modifiche ai files dovrebbero essere fatte utilizzando quilt, come descritto sopra. In questo modo una modifica può essere facilmente inviata a OpenMoko project.
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:
+
Prima di tutto, creare una directory che corrisponderà al package e modificare un file '''.bb''':
 
   /usr/src/openmoko# cd openmoko/
 
   /usr/src/openmoko# cd openmoko/
 
   /usr/src/openmoko/openmoko# quilt new mycoolpackage.patch
 
   /usr/src/openmoko/openmoko# quilt new mycoolpackage.patch
Line 163: Line 163:
 
   /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb
 
   /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb
  
The file should have the following content:
+
Il file dovrebbe avere il seguente contenuto:
 
   DESCRIPTION = "This is a cool package"
 
   DESCRIPTION = "This is a cool package"
 
   SECTION = "username/mycoolpackage"
 
   SECTION = "username/mycoolpackage"
Line 172: Line 172:
 
   SRC_URI = "http://www.example.com/download/mycoolpackage-1.tar.gz"
 
   SRC_URI = "http://www.example.com/download/mycoolpackage-1.tar.gz"
  
Explanation:
+
Spiegazione:
* DESCRIPTION - Just a short text explaining the package
+
* DESCRIPTION - Una corta descrizione del pacchetto
* SECTION - I have no clue, but I'll use username/mycoolpackage for now
+
* SECTION - Non ne ho idea, but I'll use username/mycoolpackage for now
 
* PV - Package Version
 
* PV - Package Version
 
* inherit autotools - The package can be compiled by './configure && make && make install' so we tell MokoMakefile to do it this way.
 
* inherit autotools - The package can be compiled by './configure && make && make install' so we tell MokoMakefile to do it this way.

Revision as of 13:48, 24 July 2007

Contents

MokoMakefile

MokoMakefile è un metodo completamente automatizzato per la configurazione dell'ambiente di sviluppo OpenMoko, uno strumento inestimabile che aiuta i nuovi sviluppatori ad ottenere un ambiente con le stesse configurazioni di quelli già presenti. Permette di ottenere la stessa ripetibilità nella compilazione e manutenzione dell'ambiente che OpenEmbedded introduce nell'attuale software embedded.

Nota che MokoMakefile *non* sostituisce bitbake, svn, monotone, openembedded, qmake e null'altro. Costituisce un wrapper attorno ad essi che facilita la configurazione e la manutenzione di un ambiente di sviluppo che rispecchia le istruzioni pubblicate da OpenMoko. MokoMakefile necessita circa 7 GB di spazio disponibile.

MokoMakefile è sviluppato da Rod Whitby - non è un prodotto ufficiale OpenMoko (anche se sarebbe una buona cosa sfruttarlo per uso interno). Se ci sono delle discrepanze tra le istruzioni ufficiali compilazione OpenMoko e le operazioni di MokoMakefile, vanno considerate corrette le istruzioni ufficiali.

Prima di iniziare

Controlla che /bin/sh (ls -l /bin/sh) sia linkato a bash. L'utilizzo di dash potrebbe causare problemi, soprattutto per le installazioni standard di Ubuntu 7.04 (almeno quando installato da Live CD). Se /bin/sh punta a /bin/dash, correggilo (da root):

ln -sf /bin/bash /bin/sh

Se hai già compilato tramite dash come shell, è probabile che la compilazione perl sia corrotta. Un sintomo è che la compilazione termina con un errore 'Unterminated quote string', oppure con 'You haven't done a "make depend" yet!'. Se si ottengono questi errori, eseguire:

make clean-package-perl
make clean-package-perl-native

e ricompilare.

Se qualcos'altro va storto, semplicemente rimuovere (rm -rf) le directory work e stamps di perl:

rm -rf build/tmp/work/i686-linux/perl-native-5.8.7-r3 
rm -f  build/tmp/stamps/i686-linux/perl*

MokoMakefile ha delle patch che potrebbero essere compilate correttamente anche con dash.

Installazione

1 - Assicurarsi che l'host su cui si vuole compilare soddisfi quanto riportato qui:

  http://www.openembedded.org/wiki/OEandYourDistro

2 - Creare la directory $OMDIR:

  mkdir /home/moko ; cd /home/moko

3 - Ottenere MokoMakefile:

  wget http://www.rwhitby.net/files/openmoko/Makefile

4 - Configurare l'ambiente:

  make setup

5 - Avviare la compilazione.

Prima di avviare una lunga compilazione, controllare nella sezione Tips come utilizzare make sui multicore. Potreste dover modificare il file build/conf/local.conf a seconda dell'ambiente destinatario (emulazione/chroot):

  make openmoko-devel-image

Questo creerà l'albero di directory descritto in Creare OpenMoko da zero, scaricherà tutto il software richiesto (dai siti giusti e le versioni aggiornate) e avvierà la compilazione dell'immagine.

Una volta fatto, potrete scegliere se continuare ad usare MokoMakefile per le compilazioni successive, oppure utilizzare manualmente bitbake all'interno della directory di compilazione. La scelta è vostra.

Aggiornare l'ambiente

I seguenti comandi sono utili per la manutenzione dell'ambiente di compilazione.

1 - Per aggiornare MokoMakefile all'utlima versione:

  make update-makefile 

2 - Per aggiornare la lista dei repository OpenMoko e le patch di MokoMakefile all'ultima versione:

  make update

3 - Per assicurarsi che le ultime modifiche alla struttura delle directory siano applicate:

  make setup 

Un metodo veloce per ricompilare una nuova immagine con gli ultimi aggiornamenti:

  make update-makefile && make update setup openmoko-devel-image

Segnalare problemi

Prima di tutto, assicurarsi che il problema sia riproducibile eseguendo

make update-makefile ; make update ; make setup

poi

make clean-package-<foo>

(dove <foo> va sostituito con il nome del pacchetto che dà errore)

poi eseguire

make all

Se ottieni l'errore per tre volte consecutive dopo l'esecuzione di questa sequenza di comandi per tre volte, allora sentiti libero di segnalare il problema a rwhitby su #openmoko IRC.

Work-arounds

I work-arounds sui problemi temporanei o isolati andrebbero aggiunti alla Discussion page associata a questa pagina. Nel momento in cui saranno risolti, verranno rimossi dalla pagina.

Tips

  • Puoi ridurre significativamente il consumo di spazio su disco aggiungendo
  INHERIT += "rm_work"

al file local.conf (e.g. /home/moko/build/conf/local.conf). Questo rimuoverà il contenuto di ogni directory build/tmp/work/*/<package> dopo la compilazione del package corrispondente.

  • Se si ottiene un errore simile al seguente:
  mtn: misuse: database /home/moko/OE.mtn is laid out according to an old schema

Allora c'è bisogno di aggiornate OE.mtn Utilizzare il seguente comando in /home/moko:

  # mtn --db OE.mtn db migrate
  • Se un determinato package non viene compilato a causa di un download corrotto o per motivi simili, prova a rimuovere i sorgenti e ricompilarlo.
rm sources/<package>*
cd build
. ../setup-env
bitbake -crebuild <package>

dopo questi comandi la compilazione dovrebbe terminare con successo.

  • Per chi ha diverse CPU (o diversi core) questa piccola modifica sarà utile per compilare più velocemente.

Modifica il file local.conf aggiungendo le seguenti righe:

PARALLEL_MAKE = "-j 4"
BB_NUMBER_THREADS = "4"

Cambia i valori PARALLEL_MAKE e BB_NUMBER_THREADS a seconda del numero di CPU della macchina.

QEMU

MokoMakefile automatizza la compilazione, il flashing e l'esecuzione del nuovo emulatore Neo1973 emulator (basato su QEMU).

Dipendenze:

  • lynx ('apt-get install lynx' in Ubuntu 7.04)
  • netpbm ('apt-get install netpbm' in Ubuntu 7.04)
  • sdl-devel ('apt-get install libsdl1.2-dev in Ubuntu .704')

Il comando “make qemu” compila qemu-neo1973, scarica le ultima immagini ufficiali OpenMoko, esegue il flash delle immagini sulla memoria virtuale ed esegue l'emulatore (c'è ancora bisogno di installare il makefile come descritto precedentemente).

Altri target sono “make download-images” (per scaricare le ultime immagini ufficiali), “make flash-qemu-official” (flash delle immagini) e “make flash-qemu-local” (flash dell'ultima immagine compilata in locale), che possono essere seguite da “make run-qemu” o “make run-qemu-snapshot” per eseguire l'emulatore.

Assicurarsi di avere “lynx” e “netpbm” installati nel sistema su cui si compila.

Potrebbe essere utile leggere altro sul funzionamento di OpenMoko sotto QEMU nella pagina dedicata.

Developing with MokoMakefile

Per compilare ed eseguire su qemu dei sorgenti modificati:

 cd /home/moko/openmoko
 quilt new descriptive-patch-name.patch
 quilt add trunk/src/name-of-file-to-change # per ogni file che è stato modificato
 ...make the changes...
 quilt refresh # questo crea un file in /home/moko/patches/openmoko-HEAD/ e aggiorna i files quilt

Nota: NON utilizzare percorsi assoluti, quilt potrebbe provare a ottenere un file diff di /dev/null!

Per compilare le modifiche e utilizzare il risultato con qemu:

 make build-qemu
 make flash-qemu-local
 make run-qemu

Se le modifiche vengono apportate alle applicazioni e non a OpenMoko, questo è quello che va fatto (esempio: openmoko-messages):

 /usr/src/openmoko# . ./setup-env
 /usr/src/openmoko# cd openmoko/
 /usr/src/openmoko/openmoko# bitbake -c unpack openmoko-messages
 /usr/src/openmoko/openmoko# cd \
 ../build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/
 /usr/src/openmoko/build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages# \
 vim src/detail-area.c
 /usr/src/openmoko/build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages# \
 cd -
 /usr/src/openmoko/openmoko# bitbake openmoko-messages

Poi continuare con MokoMakefile.

Se vuoi aggiungere una applicazione alla tua distribuzione OpenMoko: Tutte le modifiche ai files dovrebbero essere fatte utilizzando quilt, come descritto sopra. In questo modo una modifica può essere facilmente inviata a OpenMoko project. Prima di tutto, creare una directory che corrisponderà al package e modificare un file .bb:

 /usr/src/openmoko# cd openmoko/
 /usr/src/openmoko/openmoko# quilt new mycoolpackage.patch
 /usr/src/openmoko/openmoko# mkdir trunk/oe/packages/mycoolpackage
 /usr/src/openmoko/openmoko# quilt add trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb
 /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb

Il file dovrebbe avere il seguente contenuto:

 DESCRIPTION = "This is a cool package"
 SECTION = "username/mycoolpackage"
 PV = "1"
 
 inherit autotools
 
 SRC_URI = "http://www.example.com/download/mycoolpackage-1.tar.gz"

Spiegazione:

  • DESCRIPTION - Una corta descrizione del pacchetto
  • SECTION - Non ne ho idea, but I'll use username/mycoolpackage for now
  • PV - Package Version
  • inherit autotools - The package can be compiled by './configure && make && make install' so we tell MokoMakefile to do it this way.
  • SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called packagename-packageversion (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.

This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do

 /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/tasks/task-openmoko.bb

Here, increase the value PR by one and add mycoolpackage \ (with the backslash!) just before the line reading # update-alternatives \.

Now run

 /usr/src/openmoko/openmoko# quilt refresh
 /usr/src/openmoko/openmoko# cd ..
 /usr/src/openmoko# make update all

And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.

Testimonials

MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as "For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!", and "MokoMakefile rocks!".

Project page: http://mokomakefile.projects.openmoko.org/

Personal tools

MokoMakefile

MokoMakefile è un metodo completamente automatizzato per la configurazione dell'ambiente di sviluppo OpenMoko, uno strumento inestimabile che aiuta i nuovi sviluppatori ad ottenere un ambiente con le stesse configurazioni di quelli già presenti. Permette di ottenere la stessa ripetibilità nella compilazione e manutenzione dell'ambiente che OpenEmbedded introduce nell'attuale software embedded.

Nota che MokoMakefile *non* sostituisce bitbake, svn, monotone, openembedded, qmake e null'altro. Costituisce un wrapper attorno ad essi che facilita la configurazione e la manutenzione di un ambiente di sviluppo che rispecchia le istruzioni pubblicate da OpenMoko. MokoMakefile necessita circa 7 GB di spazio disponibile.

MokoMakefile è sviluppato da Rod Whitby - non è un prodotto ufficiale OpenMoko (anche se sarebbe una buona cosa sfruttarlo per uso interno). Se ci sono delle discrepanze tra le istruzioni ufficiali compilazione OpenMoko e le operazioni di MokoMakefile, vanno considerate corrette le istruzioni ufficiali.

Prima di iniziare

Controlla che /bin/sh (ls -l /bin/sh) sia linkato a bash. L'utilizzo di dash potrebbe causare problemi, soprattutto per le installazioni standard di Ubuntu 7.04 (almeno quando installato da Live CD). Se /bin/sh punta a /bin/dash, correggilo (da root):

ln -sf /bin/bash /bin/sh

Se hai già compilato tramite dash come shell, è probabile che la compilazione perl sia corrotta. Un sintomo è che la compilazione termina con un errore 'Unterminated quote string', oppure con 'You haven't done a "make depend" yet!'. Se si ottengono questi errori, eseguire:

make clean-package-perl
make clean-package-perl-native

e ricompilare.

Se qualcos'altro va storto, semplicemente rimuovere (rm -rf) le directory work e stamps di perl:

rm -rf build/tmp/work/i686-linux/perl-native-5.8.7-r3 
rm -f  build/tmp/stamps/i686-linux/perl*

MokoMakefile ha delle patch che potrebbero essere compilate correttamente anche con dash.

Installazione

1 - Assicurarsi che l'host su cui si vuole compilare soddisfi quanto riportato qui:

  http://www.openembedded.org/wiki/OEandYourDistro

2 - Creare la directory $OMDIR:

  mkdir /home/moko ; cd /home/moko

3 - Ottenere MokoMakefile:

  wget http://www.rwhitby.net/files/openmoko/Makefile

4 - Configurare l'ambiente:

  make setup

5 - Avviare la compilazione.

Prima di avviare una lunga compilazione, controllare nella sezione Tips come utilizzare make sui multicore. Potreste dover modificare il file build/conf/local.conf a seconda dell'ambiente destinatario (emulazione/chroot):

  make openmoko-devel-image

Questo creerà l'albero di directory descritto in Creare OpenMoko da zero, scaricherà tutto il software richiesto (dai siti giusti e le versioni aggiornate) e avvierà la compilazione dell'immagine.

Una volta fatto, potrete scegliere se continuare ad usare MokoMakefile per le compilazioni successive, oppure utilizzare manualmente bitbake all'interno della directory di compilazione. La scelta è vostra.

Aggiornare l'ambiente

I seguenti comandi sono utili per la manutenzione dell'ambiente di compilazione.

1 - Per aggiornare MokoMakefile all'utlima versione:

  make update-makefile 

2 - Per aggiornare la lista dei repository OpenMoko e le patch di MokoMakefile all'ultima versione:

  make update

3 - Per assicurarsi che le ultime modifiche alla struttura delle directory siano applicate:

  make setup 

Un metodo veloce per ricompilare una nuova immagine con gli ultimi aggiornamenti:

  make update-makefile && make update setup openmoko-devel-image

Segnalare problemi

Prima di tutto, assicurarsi che il problema sia riproducibile eseguendo

make update-makefile ; make update ; make setup

poi

make clean-package-<foo>

(dove <foo> va sostituito con il nome del pacchetto che dà errore)

poi eseguire

make all

Se ottieni l'errore per tre volte consecutive dopo l'esecuzione di questa sequenza di comandi per tre volte, allora sentiti libero di segnalare il problema a rwhitby su #openmoko IRC.

Work-arounds

I work-arounds sui problemi temporanei o isolati andrebbero aggiunti alla Discussion page associata a questa pagina. Nel momento in cui saranno risolti, verranno rimossi dalla pagina.

Tips

  • Puoi ridurre significativamente il consumo di spazio su disco aggiungendo
  INHERIT += "rm_work"

al file local.conf (e.g. /home/moko/build/conf/local.conf). Questo rimuoverà il contenuto di ogni directory build/tmp/work/*/<package> dopo la compilazione del package corrispondente.

  • Se si ottiene un errore simile al seguente:
  mtn: misuse: database /home/moko/OE.mtn is laid out according to an old schema

Allora c'è bisogno di aggiornate OE.mtn Utilizzare il seguente comando in /home/moko:

  # mtn --db OE.mtn db migrate
  • Se un determinato package non viene compilato a causa di un download corrotto o per motivi simili, prova a rimuovere i sorgenti e ricompilarlo.
rm sources/<package>*
cd build
. ../setup-env
bitbake -crebuild <package>

dopo questi comandi la compilazione dovrebbe terminare con successo.

  • Per chi ha diverse CPU (o diversi core) questa piccola modifica sarà utile per compilare più velocemente.

Modifica il file local.conf aggiungendo le seguenti righe:

PARALLEL_MAKE = "-j 4"
BB_NUMBER_THREADS = "4"

Cambia i valori PARALLEL_MAKE e BB_NUMBER_THREADS a seconda del numero di CPU della macchina.

QEMU

MokoMakefile automatizza la compilazione, il flashing e l'esecuzione del nuovo emulatore Neo1973 emulator (basato su QEMU).

Dipendenze:

  • lynx ('apt-get install lynx' in Ubuntu 7.04)
  • netpbm ('apt-get install netpbm' in Ubuntu 7.04)
  • sdl-devel ('apt-get install libsdl1.2-dev in Ubuntu .704')

Il comando “make qemu” compila qemu-neo1973, scarica le ultima immagini ufficiali OpenMoko, esegue il flash delle immagini sulla memoria virtuale ed esegue l'emulatore (c'è ancora bisogno di installare il makefile come descritto precedentemente).

Altri target sono “make download-images” (per scaricare le ultime immagini ufficiali), “make flash-qemu-official” (flash delle immagini) e “make flash-qemu-local” (flash dell'ultima immagine compilata in locale), che possono essere seguite da “make run-qemu” o “make run-qemu-snapshot” per eseguire l'emulatore.

Assicurarsi di avere “lynx” e “netpbm” installati nel sistema su cui si compila.

Potrebbe essere utile leggere altro sul funzionamento di OpenMoko sotto QEMU nella pagina dedicata.

Developing with MokoMakefile

To make in-tree changes and have them built and used by qemu:

 cd /home/moko/openmoko
 quilt new descriptive-patch-name.patch
 quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify
 ...make the changes...
 quilt refresh # this creates a file in /home/moko/patches/openmoko-HEAD/ and updates the quilt series file there

Note: Do NOT use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!

To build the changes and have them used by qemu:

 make build-qemu
 make flash-qemu-local
 make run-qemu

If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):

 /usr/src/openmoko# . ./setup-env
 /usr/src/openmoko# cd openmoko/
 /usr/src/openmoko/openmoko# bitbake -c unpack openmoko-messages
 /usr/src/openmoko/openmoko# cd \
 ../build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/
 /usr/src/openmoko/build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages# \
 vim src/detail-area.c
 /usr/src/openmoko/build/tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages# \
 cd -
 /usr/src/openmoko/openmoko# bitbake openmoko-messages

Then continue with MokoMakefile usage.

If you want to add an application to your openmoko distribution, do this: All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project. First, create a directory that will correspond to your package and edit a .bb file in there:

 /usr/src/openmoko# cd openmoko/
 /usr/src/openmoko/openmoko# quilt new mycoolpackage.patch
 /usr/src/openmoko/openmoko# mkdir trunk/oe/packages/mycoolpackage
 /usr/src/openmoko/openmoko# quilt add trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb
 /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb

The file should have the following content:

 DESCRIPTION = "This is a cool package"
 SECTION = "username/mycoolpackage"
 PV = "1"
 
 inherit autotools
 
 SRC_URI = "http://www.example.com/download/mycoolpackage-1.tar.gz"

Explanation:

  • DESCRIPTION - Just a short text explaining the package
  • SECTION - I have no clue, but I'll use username/mycoolpackage for now
  • PV - Package Version
  • inherit autotools - The package can be compiled by './configure && make && make install' so we tell MokoMakefile to do it this way.
  • SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called packagename-packageversion (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.

This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do

 /usr/src/openmoko/openmoko# quilt edit trunk/oe/packages/tasks/task-openmoko.bb

Here, increase the value PR by one and add mycoolpackage \ (with the backslash!) just before the line reading # update-alternatives \.

Now run

 /usr/src/openmoko/openmoko# quilt refresh
 /usr/src/openmoko/openmoko# cd ..
 /usr/src/openmoko# make update all

And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.

Testimonials

MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as "For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!", and "MokoMakefile rocks!".

Project page: http://mokomakefile.projects.openmoko.org/