Host-based development with Xoo and Xephyr

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(correct package name for xephyr added)
(Part II (building from source))
 
(29 intermediate revisions by 13 users not shown)
Line 1: Line 1:
This page introduces you to the most efficient way to create new software for the OpenMoko platform. Note that there is a VMware image where this environment has been prebuilt for you.
+
This page introduces you to the most efficient way to create new software for the Openmoko platform. Note that there is a VMware image where this environment has been prebuilt for you.
 +
''Does anyone know where to find this VMWare image??''
  
 
==Host-based development==
 
==Host-based development==
Line 8: Line 9:
 
[http://projects.o-hand.com/xoo/ Xoo] is a GTK2 based graphical wrapper around a ‘Windowed’ X Server.  The X server is typically '''Xnest''', the nested X server, or [http://projects.o-hand.com/xephyr Xephyr].  It is intended for embedded developers that want to simulate a target device (with an '''accurate''' display size, working hardware buttons, etc) on a desktop machine.  
 
[http://projects.o-hand.com/xoo/ Xoo] is a GTK2 based graphical wrapper around a ‘Windowed’ X Server.  The X server is typically '''Xnest''', the nested X server, or [http://projects.o-hand.com/xephyr Xephyr].  It is intended for embedded developers that want to simulate a target device (with an '''accurate''' display size, working hardware buttons, etc) on a desktop machine.  
  
Note that Xoo is not required to simulate OpenMoko hardware - it just improves the presentation.
+
Note that Xoo is not required to simulate Openmoko hardware - it just improves the presentation.
  
 
==Prerequisites==
 
==Prerequisites==
Line 19: Line 20:
 
* libstartup-notification0-dev
 
* libstartup-notification0-dev
 
* libapm-dev
 
* libapm-dev
 +
* libgpgme11-dev
 
* libgtk2.0-dev
 
* libgtk2.0-dev
 
* libebook1.2-dev
 
* libebook1.2-dev
Line 24: Line 26:
 
* libnotify-dev
 
* libnotify-dev
 
* libpulse-dev
 
* libpulse-dev
 +
* libcurl4-openssl-dev (or libcurl4-gnutls-dev)
 
* matchbox-window-manager
 
* matchbox-window-manager
 
* matchbox-keyboard
 
* matchbox-keyboard
 
* pulseaudio
 
* pulseaudio
* xephyr ( package ist called xserver-xephyr on ubuntu and debian )
+
* xephyr ( package is called xserver-xephyr on ubuntu and debian )
 
* xoo
 
* xoo
 +
 +
 +
Ubuntu-Specific Packages
 +
* gnome-common (does this belong above?)
 +
* ubuntu-mobile-dev (this depends on many other development packages; some are necessary, others optional)
 +
 +
 +
Other Useful Packages
 +
* libasound2-dev (needed to compile openmoko-dialer2 ([[User:Tomjoad]]))
 +
  
 
Gentoo users run just
 
Gentoo users run just
 
  # emerge <package>
 
  # emerge <package>
 +
 +
''note'': To get the Xephyr package installed Gentoo users have to rebuild the x11-base/xorg-server package with the "kdrive" use flag enabled ([http://gentoo-wiki.com/Scratchbox#Xephyr_support link])
 +
 +
 
Debian/Ubuntu
 
Debian/Ubuntu
 
  $ sudo apt-get install <package>
 
  $ sudo apt-get install <package>
Line 58: Line 75:
 
  cd matchbox/matchbox-panel-2
 
  cd matchbox/matchbox-panel-2
 
  ./autogen.sh
 
  ./autogen.sh
  make install
+
  make
 +
sudo make install
  
 
To compile and install libjana:
 
To compile and install libjana:
Line 67: Line 85:
 
  cd jana
 
  cd jana
 
  ./autogen.sh
 
  ./autogen.sh
  make install
+
  make
 +
sudo make install
  
 
To compile and install libipkg:
 
To compile and install libipkg:
Line 73: Line 92:
 
  mkdir -f /local/pkg/handhelds.org
 
  mkdir -f /local/pkg/handhelds.org
 
  cd /local/pkg/handhelds.org
 
  cd /local/pkg/handhelds.org
  wget http://downloads.openmoko.org/sources/ipkg-0.99.163.tar.gz
+
  wget http://downloads.openmoko.org/developer/sources/ipkg-0.99.163.tar.gz
 
  tar xzf ipkg-0.99.163.tar.gz
 
  tar xzf ipkg-0.99.163.tar.gz
 
  cd ipkg-0.99.163
 
  cd ipkg-0.99.163
 
  ./configure
 
  ./configure
  make install
+
  make
 +
sudo make install
  
==Building the OpenMoko core==
+
==Building the Openmoko core==
  
First we download the OpenMoko subversion repository:
+
First we download the Openmoko subversion repository:
  
 
   mkdir -f /local/pkg/openmoko
 
   mkdir -f /local/pkg/openmoko
Line 91: Line 111:
 
In directory src/target/:
 
In directory src/target/:
 
* [http://svnweb.openmoko.org/trunk/src/target/gsm/ gsmd]
 
* [http://svnweb.openmoko.org/trunk/src/target/gsm/ gsmd]
 +
* [http://svnweb.openmoko.org/trunk/src/target/opkg/ opkg]
  
 
In directory src/target/OM-2007.2/artwork:
 
In directory src/target/OM-2007.2/artwork:
Line 125: Line 146:
 
==Data files==
 
==Data files==
  
Some of the data files are not yet installed. We will create links so that OpenMoko finds the data files and uses them directly from the svn directories that you have checked out. To create the links:
+
Some of the data files are not yet installed. We will create links so that Openmoko finds the data files and uses them directly from the svn directories that you have checked out. To create the links:
  
 +
  mkdir /usr/local/share/matchbox
 
   cd /usr/local/share/matchbox
 
   cd /usr/local/share/matchbox
   ln -s /local/pkg/openmoko/src/target/OM-2007.2/misc/openmoko-today2-vfolders vfolders
+
   sudo ln -s /local/pkg/openmoko/src/target/OM-2007.2/misc/openmoko-today2-folders vfolders
  
   cd /usr/local/share/themes
+
   cd /usr/share/themes
   ln -s /local/pkg/openmoko/src/target/OM-2007.2/artwork/themes/openmoko-standard-2
+
   sudo ln -s /local/pkg/openmoko/src/target/OM-2007.2/artwork/themes/openmoko-standard-2
  
==Starting the nested OpenMoko==
+
==Starting the nested Openmoko==
  
 
We have prepared a script for you that starts Xoo and all the necessary X clients in one run. The script is online at  
 
We have prepared a script for you that starts Xoo and all the necessary X clients in one run. The script is online at  
 
* [http://svnweb.openmoko.org/trunk/src/host/xoo/om-launch om-launch]
 
* [http://svnweb.openmoko.org/trunk/src/host/xoo/om-launch om-launch]
 
[[Category:Developer software]]
 
[[Category:Guides]]
 
  
 
==Creating a new application==
 
==Creating a new application==
Line 154: Line 173:
  
 
{{Languages|Host-based development with Xoo and Xephyr}}
 
{{Languages|Host-based development with Xoo and Xephyr}}
 +
[[Category:Emulation]]

Latest revision as of 10:45, 17 February 2009

This page introduces you to the most efficient way to create new software for the Openmoko platform. Note that there is a VMware image where this environment has been prebuilt for you. Does anyone know where to find this VMWare image??

Contents

[edit] Host-based development

This term means you develop most of your application in your standard desktop environment until it's almost finished. Then you can use a Toolchain to cross-compile your application for the Neo1973. Host-based development is incredibly more efficient since you can use your (typically) fast computer, large monitor, ... Compiling for your host also means that your edit-run-debug turnaround cycles are much faster, because you can skip the uploading-to-neo step.

[edit] Xoo and Xephyr

Xoo is a GTK2 based graphical wrapper around a ‘Windowed’ X Server. The X server is typically Xnest, the nested X server, or Xephyr. It is intended for embedded developers that want to simulate a target device (with an accurate display size, working hardware buttons, etc) on a desktop machine.

Note that Xoo is not required to simulate Openmoko hardware - it just improves the presentation.

[edit] Prerequisites

[edit] Part I (precompiled software)

You need to install some software that is usually not present on a desktop system, but used on the Neo1973. Some of this software has already been precompiled by your friendly distribution packager, so you don't need to compile it yourself. Most likely you can install the following packages from your distribution repository:

  • gtk-doc-tools
  • libstartup-notification0-dev
  • libapm-dev
  • libgpgme11-dev
  • libgtk2.0-dev
  • libebook1.2-dev
  • libecal1.2-dev
  • libnotify-dev
  • libpulse-dev
  • libcurl4-openssl-dev (or libcurl4-gnutls-dev)
  • matchbox-window-manager
  • matchbox-keyboard
  • pulseaudio
  • xephyr ( package is called xserver-xephyr on ubuntu and debian )
  • xoo


Ubuntu-Specific Packages

  • gnome-common (does this belong above?)
  • ubuntu-mobile-dev (this depends on many other development packages; some are necessary, others optional)


Other Useful Packages

  • libasound2-dev (needed to compile openmoko-dialer2 (User:Tomjoad))


Gentoo users run just

# emerge <package>

note: To get the Xephyr package installed Gentoo users have to rebuild the x11-base/xorg-server package with the "kdrive" use flag enabled (link)


Debian/Ubuntu

$ sudo apt-get install <package>

For Fedora, you can use

# yum install <package>

For Mandriva, you may try

# urpmi <package>

for any other find a way how to do it in your distro.

[edit] Part II (building from source)

You also need some software that is typically not found in your distribution repository, either because it's too new, too specific, or unheard of.

Most likely you will need to compile the following packages for your distribution:

  • matchbox-panel-2
  • libjana
  • libipkg

To compile and install matchbox-panel-2:

mkdir -f /local/pkg/ohand
cd /local/pkg/ohand
svn co http://svn.o-hand.com/repos/matchbox/trunk matchbox
cd matchbox/matchbox-panel-2
./autogen.sh
make
sudo make install

To compile and install libjana:

mkdir -f /local/pkg/ohand
cd /local/pkg/ohand
svn co http://svn.o-hand.com/repos/jana/trunk jana
cd jana
./autogen.sh
make
sudo make install

To compile and install libipkg:

mkdir -f /local/pkg/handhelds.org
cd /local/pkg/handhelds.org
wget http://downloads.openmoko.org/developer/sources/ipkg-0.99.163.tar.gz
tar xzf ipkg-0.99.163.tar.gz
cd ipkg-0.99.163
./configure
make
sudo make install

[edit] Building the Openmoko core

First we download the Openmoko subversion repository:

 mkdir -f /local/pkg/openmoko
 cd /local/pkg/openmoko
 svn co http://svn.openmoko.org/trunk/src src

Then you compile the software contained there, e.g. you will definitely want to compile at least:

In directory src/target/:

In directory src/target/OM-2007.2/artwork:

In directory src/target/OM-2007.2/libraries/:

In directory src/target/OM-2007.2/daemons/:

In directory src/target/OM-2007.2/panel-plugins/:

In directory src/target/OM-2007.2/applications:

Each of these packages can be compiled with the well-known-triple of:

./configure (or ./autogen.sh, if it's the first time)
make
make install

[edit] Data files

Some of the data files are not yet installed. We will create links so that Openmoko finds the data files and uses them directly from the svn directories that you have checked out. To create the links:

 mkdir /usr/local/share/matchbox
 cd /usr/local/share/matchbox
 sudo ln -s /local/pkg/openmoko/src/target/OM-2007.2/misc/openmoko-today2-folders vfolders
 cd /usr/share/themes
 sudo ln -s /local/pkg/openmoko/src/target/OM-2007.2/artwork/themes/openmoko-standard-2

[edit] Starting the nested Openmoko

We have prepared a script for you that starts Xoo and all the necessary X clients in one run. The script is online at

[edit] Creating a new application

TODO: ... (See: To-Do List)

[edit] Using a Neo1973 as external GSM modem

TODO: ... (See: To-Do List)

[edit] Using an external GPS device

TODO: ... (See: To-Do List)
Personal tools

This page introduces you to the most efficient way to create new software for the OpenMoko platform. Note that there is a VMware image where this environment has been prebuilt for you.

Host-based development

This term means you develop most of your application in your standard desktop environment until it's almost finished. Then you can use a Toolchain to cross-compile your application for the Neo1973. Host-based development is incredibly more efficient since you can use your (typically) fast computer, large monitor, ... Compiling for your host also means that your edit-run-debug turnaround cycles are much faster, because you can skip the uploading-to-neo step.

Xoo and Xephyr

Xoo is a GTK2 based graphical wrapper around a ‘Windowed’ X Server. The X server is typically Xnest, the nested X server, or Xephyr. It is intended for embedded developers that want to simulate a target device (with an accurate display size, working hardware buttons, etc) on a desktop machine.

Note that Xoo is not required to simulate OpenMoko hardware - it just improves the presentation.

Prerequisites

Part I (precompiled software)

You need to install some software that is usually not present on a desktop system, but used on the Neo1973. Some of this software has already been precompiled by your friendly distribution packager, so you don't need to compile it yourself. Most likely you can install the following packages from your distribution repository:

  • gtk-doc-tools
  • libstartup-notification0-dev
  • libapm-dev
  • libgtk2.0-dev
  • libebook1.2-dev
  • libecal1.2-dev
  • libnotify-dev
  • libpulse-dev
  • matchbox-window-manager
  • matchbox-keyboard
  • pulseaudio
  • xephyr ( package ist called xserver-xephyr on ubuntu and debian )
  • xoo

Gentoo users run just

# emerge <package>

Debian/Ubuntu

$ sudo apt-get install <package>

For Fedora, you can use

# yum install <package>

For Mandriva, you may try

# urpmi <package>

for any other find a way how to do it in your distro.

Part II (building from source)

You also need some software that is typically not found in your distribution repository, either because it's too new, too specific, or unheard of.

Most likely you will need to compile the following packages for your distribution:

  • matchbox-panel-2
  • libjana
  • libipkg

To compile and install matchbox-panel-2:

mkdir -f /local/pkg/ohand
cd /local/pkg/ohand
svn co http://svn.o-hand.com/repos/matchbox/trunk matchbox
cd matchbox/matchbox-panel-2
./autogen.sh
make install

To compile and install libjana:

mkdir -f /local/pkg/ohand
cd /local/pkg/ohand
svn co http://svn.o-hand.com/repos/jana/trunk jana
cd jana
./autogen.sh
make install

To compile and install libipkg:

mkdir -f /local/pkg/handhelds.org
cd /local/pkg/handhelds.org
wget http://downloads.openmoko.org/sources/ipkg-0.99.163.tar.gz
tar xzf ipkg-0.99.163.tar.gz
cd ipkg-0.99.163
./configure
make install

Building the OpenMoko core

First we download the OpenMoko subversion repository:

 mkdir -f /local/pkg/openmoko
 cd /local/pkg/openmoko
 svn co http://svn.openmoko.org/trunk/src src

Then you compile the software contained there, e.g. you will definitely want to compile at least:

In directory src/target/:

In directory src/target/OM-2007.2/artwork:

In directory src/target/OM-2007.2/libraries/:

In directory src/target/OM-2007.2/daemons/:

In directory src/target/OM-2007.2/panel-plugins/:

In directory src/target/OM-2007.2/applications:

Each of these packages can be compiled with the well-known-triple of:

./configure (or ./autogen.sh, if it's the first time)
make
make install

Data files

Some of the data files are not yet installed. We will create links so that OpenMoko finds the data files and uses them directly from the svn directories that you have checked out. To create the links:

 cd /usr/local/share/matchbox
 ln -s /local/pkg/openmoko/src/target/OM-2007.2/misc/openmoko-today2-vfolders vfolders
 cd /usr/local/share/themes
 ln -s /local/pkg/openmoko/src/target/OM-2007.2/artwork/themes/openmoko-standard-2

Starting the nested OpenMoko

We have prepared a script for you that starts Xoo and all the necessary X clients in one run. The script is online at

Creating a new application

TODO: ... (See: To-Do List)

Using a Neo1973 as external GSM modem

TODO: ... (See: To-Do List)

Using an external GPS device

TODO: ... (See: To-Do List)