<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openmoko.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Vvaidy&amp;feedformat=atom</id>
		<title>Openmoko - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Vvaidy&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Special:Contributions/Vvaidy"/>
		<updated>2013-05-25T16:04:36Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.6</generator>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-07-18T04:14:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: /* Debian / Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buiding ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko||flash these.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
  `env | grep -Ev '^SHELL=|^TERM=|^OLDPWD=|^USER=|^USERNAME=|^PATH=|^EDITOR=|^LANG=|^HOME=|^DISPLAY=|^_='  | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backtics).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;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!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-07-18T02:05:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: /* Debian / Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buiding ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko||flash these.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
  `env | grep -Ev '^SHELL=|^TERM=|^OLDPWD=|^USER=|^USERNAME=|^PATH=|^EDITOR=|^LANG=|^HOME=|^DISPLAY=|^_='  | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backtics).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;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!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-07-18T01:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito:&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Buiding ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko||flash these.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
  `env | grep -Ev '^SHELL=|^TERM=|^OLDPWD=|^USER=|^USERNAME=|^PATH=|^EDITOR=|^LANG=|^HOME=|^DISPLAY=|^_='  | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backtics).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;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!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Wiki_Maintainers</id>
		<title>Talk:Wiki Maintainers</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Wiki_Maintainers"/>
				<updated>2008-07-15T21:37:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feedback and advice is always welcome!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I won't put my name down yet, but I'll probably end up involved in Wiki editing once I get my Freerunner and start wanting to find information... Consider me an interested party. [[User:Darksatanic|Darksatanic]] 21:28, 15 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I'd love to take a crack at a better Getting Started for Brand New OpenMoko Developers - from after you have unwrapped your phone to &amp;quot;Hello World&amp;quot;. The confusion over which Distro to use, and the constant references in the Wiki to the Neo 1973 sure dont help :-) - [[User:Vvaidy|Vijay]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Talk:Wiki_Maintainers</id>
		<title>Talk:Wiki Maintainers</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Talk:Wiki_Maintainers"/>
				<updated>2008-07-15T21:37:00Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Feedback and advice is always welcome!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* I won't put my name down yet, but I'll probably end up involved in Wiki editing once I get my Freerunner and start wanting to find information... Consider me an interested party. [[User:Darksatanic|Darksatanic]] 21:28, 15 July 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I'd love to take a crack at a better Getting Started for Brand New OpenMoko Developers - from after you have unwrapped your phone to &amp;quot;Hello World&amp;quot;. The confusion over which Distro to use, and the constant references in the Wiki to the Neo 1973 sure dont help :-) - [[User: Vvaidy]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Wiki_Maintainers</id>
		<title>Wiki Maintainers</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Wiki_Maintainers"/>
				<updated>2008-07-15T21:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: /* Members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goals ==&lt;br /&gt;
&lt;br /&gt;
* Maintain integrity and correctness of information&lt;br /&gt;
* Organize and maintain page content and layout&lt;br /&gt;
* Clean up and consolidate pages and categories&lt;br /&gt;
* Reduce clutter and confusion for users&lt;br /&gt;
&lt;br /&gt;
== Members ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Nuclear_Eclipse|John Reese (Nuclear_Eclipse)]]&lt;br /&gt;
* Torfinn Ingolfsen&lt;br /&gt;
* Ian Douglas&lt;br /&gt;
* Jay Vaughan&lt;br /&gt;
* Ken Young&lt;br /&gt;
* [[User:Vvaidy|Vijay Vaidyanathan]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SFBayAreaGetStarted</id>
		<title>SFBayAreaGetStarted</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SFBayAreaGetStarted"/>
				<updated>2008-07-11T23:18:21Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi ...&lt;br /&gt;
&lt;br /&gt;
If you are interested in attending a meeting to talk about Getting started with the FreeRunner in the San Francisco Bay Area (probably somewhere in the Peninsula/Milpitas/Fremont/San Jose areas) some time between July 15 and July 30, please indicate interest below:&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Preferred Dates&lt;br /&gt;
!Acceptable Locations (in order of preference)&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Vvaidy|Vijay Vaidy]]&lt;br /&gt;
|Programming&lt;br /&gt;
|I want a fast, flexible Command-Line phone!&lt;br /&gt;
|July 15-30&lt;br /&gt;
|Peninsula, San Jose, Fremont, Milpitas, San Francisco&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Elektrolott|Lothar]]&lt;br /&gt;
|Programming&lt;br /&gt;
|I don't have a Freerunner yet (waiting for the 900MHz model)&lt;br /&gt;
|I'll join if I can make it&lt;br /&gt;
|San Jose&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Vvaidy</id>
		<title>User:Vvaidy</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Vvaidy"/>
				<updated>2008-07-11T22:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is info on a proposed San Francisco Bay area meeting:&lt;br /&gt;
&lt;br /&gt;
[[SFBayAreaGetStarted]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SFBayAreaGetStarted</id>
		<title>SFBayAreaGetStarted</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SFBayAreaGetStarted"/>
				<updated>2008-07-11T22:48:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi ...&lt;br /&gt;
&lt;br /&gt;
If you are interested in attending a meeting to talk about Getting started with the FreeRunner in the San Francisco Bay Area (probably somewhere in the Peninsula/Milpitas/Fremont/San Jose areas) some time between July 15 and July 30, please indicate interest below:&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Preferred Dates&lt;br /&gt;
!Acceptable Locations (in order of preference)&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Vvaidy|Vijay Vaidyanathan]]&lt;br /&gt;
|Programming&lt;br /&gt;
|I want a fast, flexible Command-Line phone!&lt;br /&gt;
|July 15-30&lt;br /&gt;
|Peninsula, San Jose, Fremont, Milpitas, San Francisco&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SFBayAreaGetStarted</id>
		<title>SFBayAreaGetStarted</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SFBayAreaGetStarted"/>
				<updated>2008-07-11T22:46:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: New page: Hi ...  If you are interested in attending a meeting to talk about Getting started with the FreeRunner in the San Francisco Bay Area (probably somewhere in the Peninsula/Milpitas/Fremont/S...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi ...&lt;br /&gt;
&lt;br /&gt;
If you are interested in attending a meeting to talk about Getting started with the FreeRunner in the San Francisco Bay Area (probably somewhere in the Peninsula/Milpitas/Fremont/San Jose areas) some time between July 15 and July 30, please indicate interest below:&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Preferred Dates&lt;br /&gt;
!Acceptable Locations (in order of preference)&lt;br /&gt;
|-&lt;br /&gt;
|Vijay Vaidy&lt;br /&gt;
|Programming&lt;br /&gt;
|I want a fast, flexible Command-Line phone!&lt;br /&gt;
|July 15-30&lt;br /&gt;
|Peninsula, San Jose, Fremont, Milpitas, San Francisco&lt;br /&gt;
|-&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco</id>
		<title>Openmoko Local Groups: San Francisco</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco"/>
				<updated>2008-07-11T22:40:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are there any other OpenMoko community members here?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
!Has Device&lt;br /&gt;
!Has Debug Board&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.asheesh.org/ Asheesh Laroia]&lt;br /&gt;
|Programming, sysadminning&lt;br /&gt;
|Whatever it takes to enjoy using it every day ;-)&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:captain_morgan|Morgan]]&lt;br /&gt;
|programming/some hardware&lt;br /&gt;
|Hardware development&lt;br /&gt;
|Mountain View/Oakland, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:codyl|J.Cody]]&lt;br /&gt;
|programming&lt;br /&gt;
|Application development&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:csnellman|Carl Snellman]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Application development/Location based services&lt;br /&gt;
|Palo Alto, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:krid|Dirk Bergstrom]]&lt;br /&gt;
|programming&lt;br /&gt;
|&amp;quot;Procmail&amp;quot; for incoming calls/messages; GPS tracking&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:samhiatt|Sam Hiatt]]&lt;br /&gt;
|Application Development&lt;br /&gt;
|FOSS, GIS/Navigation, Cartography&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:xyphus|Marco Barreno]]&lt;br /&gt;
|programming&lt;br /&gt;
|Power user/app development&lt;br /&gt;
|Berkeley, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Elektrolott|Lothar]]&lt;br /&gt;
|programming&lt;br /&gt;
|Waiting for GTA02&lt;br /&gt;
|Morgan Hill, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rabble|Rabble]]&lt;br /&gt;
|programming&lt;br /&gt;
|App Development &amp;amp; Geowanking&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rtyler|R. Tyler Ballance]]&lt;br /&gt;
|Development&lt;br /&gt;
|Mobile Mono Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:cfl|Cfl]]&lt;br /&gt;
|Software/Architecture&lt;br /&gt;
|Mobile Applications&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Pdesai|Pranav]]&lt;br /&gt;
|programming, linux, sysadmin.&lt;br /&gt;
|Applications, GPS, bluetooth&lt;br /&gt;
|Sunnyvale, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Michaelshiloh|Michael Shiloh]]&lt;br /&gt;
|Programmer, teacher&lt;br /&gt;
|Developer Relations and Evangelist for OpenMoko&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Maratgothix|Omar Green]]&lt;br /&gt;
|Architect/Technologist&lt;br /&gt;
|H/W, S/W, Intelligent services&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:mgoff|Michael Goff]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wisp|Joshua Layne]]&lt;br /&gt;
|Programming&lt;br /&gt;
|GPS/mapping/location aware apps, intelligent time/date mgmt&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:GrecoJava|David Pearson]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|Petaluma, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Rjt|Oldman]]&lt;br /&gt;
|Computer/Network Engineer&lt;br /&gt;
|System/Network Programming&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:raels|raels]]&lt;br /&gt;
|Programming, Management, Technologist&lt;br /&gt;
|Applications, Linux compatible apps -- waiting for next HW release&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jonathan.tsai|Jonathan Tsai]]&lt;br /&gt;
|Software Engineering Grad Student [http://west.cmu.edu/ Carnegie Mellon West]&amp;lt;br&amp;gt;Participant of class project MobileAdvisor.org [http://www.mobileadvisor.org/ Join]&lt;br /&gt;
|OpenMoko Evaluator &lt;br /&gt;
|San Jose, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wolfmanjm|Jim Morris]]&lt;br /&gt;
|Programming,Networks&lt;br /&gt;
|Ruby,remote access&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
|On Order&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Vvaidy|Vijay Vaidyanathan]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Command Line Phone!&lt;br /&gt;
|Los Altos, CA&lt;br /&gt;
|Y, FreeRunner&lt;br /&gt;
|N&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco</id>
		<title>Openmoko Local Groups: San Francisco</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco"/>
				<updated>2008-07-11T22:35:44Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are there any other OpenMoko community members here?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
!Has Device&lt;br /&gt;
!Has Debug Board&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.asheesh.org/ Asheesh Laroia]&lt;br /&gt;
|Programming, sysadminning&lt;br /&gt;
|Whatever it takes to enjoy using it every day ;-)&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:captain_morgan|Morgan]]&lt;br /&gt;
|programming/some hardware&lt;br /&gt;
|Hardware development&lt;br /&gt;
|Mountain View/Oakland, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:codyl|J.Cody]]&lt;br /&gt;
|programming&lt;br /&gt;
|Application development&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:csnellman|Carl Snellman]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Application development/Location based services&lt;br /&gt;
|Palo Alto, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:krid|Dirk Bergstrom]]&lt;br /&gt;
|programming&lt;br /&gt;
|&amp;quot;Procmail&amp;quot; for incoming calls/messages; GPS tracking&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:samhiatt|Sam Hiatt]]&lt;br /&gt;
|Application Development&lt;br /&gt;
|FOSS, GIS/Navigation, Cartography&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:xyphus|Marco Barreno]]&lt;br /&gt;
|programming&lt;br /&gt;
|Power user/app development&lt;br /&gt;
|Berkeley, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Elektrolott|Lothar]]&lt;br /&gt;
|programming&lt;br /&gt;
|Waiting for GTA02&lt;br /&gt;
|Morgan Hill, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rabble|Rabble]]&lt;br /&gt;
|programming&lt;br /&gt;
|App Development &amp;amp; Geowanking&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rtyler|R. Tyler Ballance]]&lt;br /&gt;
|Development&lt;br /&gt;
|Mobile Mono Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:cfl|Cfl]]&lt;br /&gt;
|Software/Architecture&lt;br /&gt;
|Mobile Applications&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Pdesai|Pranav]]&lt;br /&gt;
|programming, linux, sysadmin.&lt;br /&gt;
|Applications, GPS, bluetooth&lt;br /&gt;
|Sunnyvale, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Michaelshiloh|Michael Shiloh]]&lt;br /&gt;
|Programmer, teacher&lt;br /&gt;
|Developer Relations and Evangelist for OpenMoko&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Maratgothix|Omar Green]]&lt;br /&gt;
|Architect/Technologist&lt;br /&gt;
|H/W, S/W, Intelligent services&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:mgoff|Michael Goff]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wisp|Joshua Layne]]&lt;br /&gt;
|Programming&lt;br /&gt;
|GPS/mapping/location aware apps, intelligent time/date mgmt&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:GrecoJava|David Pearson]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|Petaluma, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Rjt|Oldman]]&lt;br /&gt;
|Computer/Network Engineer&lt;br /&gt;
|System/Network Programming&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:raels|raels]]&lt;br /&gt;
|Programming, Management, Technologist&lt;br /&gt;
|Applications, Linux compatible apps -- waiting for next HW release&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jonathan.tsai|Jonathan Tsai]]&lt;br /&gt;
|Software Engineering Grad Student [http://west.cmu.edu/ Carnegie Mellon West]&amp;lt;br&amp;gt;Participant of class project MobileAdvisor.org [http://www.mobileadvisor.org/ Join]&lt;br /&gt;
|OpenMoko Evaluator &lt;br /&gt;
|San Jose, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wolfmanjm|Jim Morris]]&lt;br /&gt;
|Programming,Networks&lt;br /&gt;
|Ruby,remote access&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
|On Order&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Vvaidy|Vijay Vaidyanathan]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Command Line Phone!&lt;br /&gt;
|Los Altos, CA&lt;br /&gt;
|FreeRunner&lt;br /&gt;
|&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Vvaidy</id>
		<title>User:Vvaidy</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Vvaidy"/>
				<updated>2008-07-11T22:25:09Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: New page: Here is info on a proposed San Francisco Bay area meeting:  (TBD)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is info on a proposed San Francisco Bay area meeting:&lt;br /&gt;
&lt;br /&gt;
(TBD)&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Where_is_my_Freerunner%3F</id>
		<title>Where is my Freerunner?</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Where_is_my_Freerunner%3F"/>
				<updated>2008-07-10T17:17:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vvaidy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Where is my FreeRunner?  In order to give you an idea of when your FreeRunner will be shipped, this is a list of order numbers against shipping confirmation email dates.  These numbers have been taken from the community mailing list and the #openmoko IRC channel.   &lt;br /&gt;
&lt;br /&gt;
Note that there may be gaps in the order numbers, and the assumption here is that lower order numbers ship first.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;6&amp;quot; width=100% border=1&lt;br /&gt;
!Order Number&lt;br /&gt;
!Confirmation/Shipping Date&lt;br /&gt;
!Bulk Order?&lt;br /&gt;
|-&lt;br /&gt;
|1087&lt;br /&gt;
|2008-07-08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1210&lt;br /&gt;
|Not Sure&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1220&lt;br /&gt;
|2008-07-09&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1326&lt;br /&gt;
|2008-07-09&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|1345&lt;br /&gt;
|Not Yet&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|1669&lt;br /&gt;
|Not Yet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1843&lt;br /&gt;
|Not Yet&lt;br /&gt;
|Yes&lt;br /&gt;
|-&lt;br /&gt;
|2267&lt;br /&gt;
|Not Yet&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2340&lt;br /&gt;
|Not Yet/NA (Picked up in Fremont)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vvaidy</name></author>	</entry>

	</feed>