OpenMoko2007.2

From Openmoko

Revision as of 11:20, 17 August 2007 by Gordonsyme (Talk | contribs)

Jump to: navigation, search

Contents

FAQ

What is 2007.2?

As of 2007-07-26 the development of the next version of the OpenMoko distribution has begun.

Goals of the new version are an improved set of PIM applications, improved theming that fixes a lot of the usability problems of the 1st generation design, more formalized UI guidelines and a number of changes in the build system. The latter should introduce more recent software by staying closer in sync with upstream org.openembedded.dev.

An official announcement is expected soon (Aug 19).

(Initially this was named OM-2008 in SVN but renamed shortly after that.)

What are differences between 2007.1 and 2007.2?

Where to get images?

Unofficial images

Where are official images?

No official images yet.

My mrxvt (terminal) fonts are huge.

Edit src/feature.h to set MIN_XFT_FONT_SIZE to lower value:

#define MIN_XFT_FONT_SIZE           (2)

and rebuild mrxvt & openmoko-devel-image.

End edit /etc/mrxvt/mrxvt.conf

Mrxvt.xftSize: 4
Mrxvt.xftHint: 1


How to build

Please note that this is no official guide on how to build OM-2007.2. I am just making my first steps getting this to compile and think it would be a waste of time of I keep problems I found for my own. Additionally it would be good if the new distro gets more exposure and testing so less things will break after the official announcement.

Follow the getting started steps of OpenEmbedded. Use Bitbake 1.8.6 not a SVN version from the stable branch (otherwise you will get problems with checking out repositories) and the org.openembedded.dev branch of OE.

Put the following in your local.conf

BBFILES = "${HOME}/oe/org.openembedded.dev/packages/*/*.bb"

MACHINE = "fic-gta01"
DISTRO = "openmoko"

ENABLE_BINARY_LOCALE_GENERATION = "1"
GLIBC_GENERATE_LOCALES = "en_GB.UTF-8"

Replace "${HOME}/oe" with the path to where your "org.openembeded.dev" folder lives. For the other entries have a look at conf/local.conf.sample about their meaning.

Run bitbake <package name> (e.g. openmoko-devel-image).

Hopefully the MokoMakeFile is soon upgraded to be used for OM-2007.2. Since OpenMoko is not using the overlay any more that makefile should be simpler then. :-)

Build issues

Wrong certificate

You may get something like this while the bitbake recipes are parsed:

Error validating server certificate for 'https://libw100.svn.sf.net:443':
 - The certificate hostname does not match.
 Certificate information:
  - Hostname: *.svn.sourceforge.net
  - Valid: from Fri, 27 Oct 2006 12:05:58 GMT until Sun, 28 Oct 2007 13:05:58 GMT
  - Issuer: Equifax Secure Certificate Authority, Equifax, US
  - Fingerprint: f2:6c:fe:bb:82:92:30:09:72:dd:1c:b3:e7:56:69:c7:7a:df:67:3e

That is an issue in a bitbake file. One should not use the short-name for sourceforge (sf.net) when certificates are only for exact host names. Accept the certificate and everything is fine for now.

openmoko-libs FTBFS

Some applications have not been fully modified to build with the new libraries of OpenMoko and still need the old-style openmoko-libs package. libmokogsm which is needed for openmoko-libs then fails to build. As a workaround you can remove the not yet ported applications that need openmoko-libs making it unneccessary itself. To do this edit packages/tasks/openmoko-taks.bb and find the following lines:

.
.
.
 openmoko-terminal \
 matchbox-panel-2 \
 matchbox-panel-2-applets \
 matchbox-applet-inputmanager \
#  openmoko-appmanager \
 matchbox-keyboard \
 matchbox-stroke \
 openmoko-keyboard \
.
.
.

Now put a hash (#) before openmoko-terminal and openmoko-keyboard. You can verify that openmoko-libs is not needed any more by issuing bitbake -g openmoko-devel-image (= creates a dependency graph). There should be no mentioning of openmoko-libs in the file task-depends.dot. Please note that the graphicall terminal and the virtual keyboard will be missing now. You can still have terminal access by following the USB Networking guide. For keyboard input in Qemu add the -usbdevice keyboard switch.


gtk+ fails building w/ gtkcombobox.c

If you get these errors:

gtkcombobox.c: In function 'gtk_combo_box_size_request':
gtkcombobox.c:1859: warning: unused variable 'font_desc'
gtkcombobox.c:1858: warning: unused variable 'metrics'
gtkcombobox.c:1857: warning: unused variable 'context'
gtkcombobox.c:1855: warning: unused variable 'arrow_size'
gtkcombobox.c:1854: warning: unused variable 'font_size'
gtkcombobox.c: In function 'gtk_combo_box_size_allocate':
gtkcombobox.c:1962: error: 'arrow_size' undeclared (first use in this function)
gtkcombobox.c:1962: error: (Each undeclared identifier is reported only once
gtkcombobox.c:1962: error: for each function it appears in.)
gtkcombobox.c:1965: error: 'font_desc' undeclared (first use in this function)
gtkcombobox.c:1966: error: 'context' undeclared (first use in this function)
gtkcombobox.c:1967: error: 'metrics' undeclared (first use in this function)
gtkcombobox.c:1969: error: 'font_size' undeclared (first use in this function) 

Go to your /build/tmp/work/fic-gta01-angstrom-linux-gnueabi/gtk+-2.10.14-r3/gtk+-2.10.14/gtk directory, and patch gtkcombobox.c with the following:

Thanks to rmoravcik in #openmoko (patch was taken from http://pastebin.ca/654717 )

--- gtkcombobox.c       2007-08-12 20:30:07.000000000 +0200
+++ gtkcombobox.c       2007-08-12 20:29:58.000000000 +0200
@@ -1948,6 +1948,12 @@
 gtk_combo_box_size_allocate (GtkWidget     *widget,
                             GtkAllocation *allocation)
 {
+  gint font_size;
+  gint arrow_size;
+  PangoContext *context;
+  PangoFontMetrics *metrics;
+  PangoFontDescription *font_desc;
+
   GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
   gint focus_width, focus_pad;
   GtkAllocation child;


Building glibc fails with a segfault in QEMU

If your build aborts and you see something like this:

NOTE: package glibc-2.5: started
NOTE: package glibc-2.5-r6: task do_package: started
NOTE: preparing tree for binary locale generation
NOTE: generating locale en_US (UTF-8)
qemu: uncaught target signal 11 (Segmentation fault) - exiting

...

NOTE: Tasks Summary: Attempted 271 tasks of which 0 didn't need to be rerun and 1 failed.
ERROR: '/home/moko/oe/org.openembedded.dev/packages/glibc/glibc_2.5.bb' failed

Try editing your local.conf file. Change:

ENABLE_BINARY_LOCALE_GENERATION = "1"

to

ENABLE_BINARY_LOCALE_GENERATION = "0"

and restart the build. This may have some effect on internationalization (you will see a warning indicating that), but at least the build will continue. Thanks to rwhitby for the tip.

Alternatively, as suggested by XorA in #openmoko, if you are running a 64-bit host distribution, try forcing a different QEMU rev, also in local.conf:

PREFERRED_VERSION_qemu-native = "0.9.0+cvs20070701"
SRCDATE_qemu-native = 20070701

libxml2-native fails with xmlCatalogPtr errors

Go to your build/tmp/work/i686-linux/libxml2-native-2.6.29-r1/libxml2-2.6.29/include/libxml/ directory and patch xmlversion.h with the following:

--- xmlversion.h        2007-08-17 10:45:42.000000000 +0100
+++ xmlversion.h        2007-08-17 10:51:36.000000000 +0100
@@ -219,7 +219,7 @@
  *
  * Whether the Catalog support is configured in
  */
-#if 0
+#if 1
 #define LIBXML_CATALOG_ENABLED
 #endif


On my system the libxml2-native-2.6.29-r1 directory is in a directory named i686-linux, yours may be different. I believe this patch to be a workaround to make libxml2-native build. I am not yet sure what the consequences of enabling XML catalogue support are.

Flashing with MokoMakefile

Since MokoMakefile has not been adjusted to use the new build layout you cannot use it. As a quick hack to make flashing local built image possible again try this:

Find the following lines in the MokoMakefile:

flash-qemu-local: stamps/qemu stamps/openmoko-devel-image
      ( cd build/qemu && openmoko/flash.sh ../tmp/deploy/images )

And replace them with:

flash-qemu-local: stamps/qemu
       ( cd build/qemu && openmoko/flash.sh <MY_NEW_BUILD_DIR>/tmp/deploy/glibc/images/fic-gta01 )

Where you should replace <MY_NEW_BUILD_DIR> with the full path to your build directory (the one where conf/local.conf lives in). Running the image should work, too. :-)

With this changes kernel and uboot image are picked up correctly. However the name of the root filesystem image has changed in OM-2007.2 and the current scripts will not pick it up any more. Just edit $OM_DIR/build/qemu/openmoko/env and change the line saying:

rootfs_wildcard="openmoko-*.rootfs.jffs2"

to

rootfs_wildcard="OpenMoko-*.rootfs.jffs2"

Now it will work correctly again.

How to build using nslu2-linux MasterMakefile (Ubuntu 7.04)

[disclaimer]

Check that your /bin/sh (ls -l /bin/sh) is not linked to dash rather than bash. Using dash will cause you pain. This is true for a standard install of Ubuntu 7.04 (at least when installing from Live CD). If your /bin/sh points to /bin/dash, correct it with (as root):

ln -sf /bin/bash /bin/sh

Note: on http://www.openembedded.org/wiki/OEandYourDistro are better instructions for Ubuntu to make sh be bash.

Create your $OMDIR directory (note that you can change ~/OM-2007.2 to any directory you like):

mkdir ~/OM-2007.2 ; cd  ~/OM-2007.2

Grab the nslu2-linux MasterMakefile:

wget http://www.nslu2-linux.org/Makefile

This will make sure you'll have all the required packages:

sudo apt-get install \
               autoconf automake automake1.9 \
               bison \
               ccache cogito \
               cvs \
               diffstat \
               docbook \
               flex \
               gcc g++ gawk gcj gettext git-core \
               help2man \
               libc6-dev libglib2.0-dev libtool libxext-dev\
               m4 make \
               patch pkg-config \
               python python-dev python2.4 python2.4-dev python-psyco \
               sed \
               sharutils \
               texinfo texi2html \
               unzip \
               subversion \
               sysutils \
               texinfo \
               bzip2

Ubuntu 7.04 comes with monotone 0.31. You could just go with that and do a mtn db migrate but this takes hours so the easier way would be to download a suitable mtn db from http://www.openembedded.org/snapshots/ and use this.

mkdir -p monotone
wget http://www.openembedded.org/snapshots/\
OE-this-is-for-mtn-<your mtn version>.mtn.bz2 -O monotone/nslu2-linux.mtn.bz2
bunzip2 monotone/nslu2-linux.mtn.bz2

If you're using MokoMakefile for building OM2007.1 you probably have fresh OE.mtn for version 0.31 already downloaded. So you can just make symlink to the OE.mtn in your OM2007.1 build directory.

(current directory(pwd) is /path/to/OM2007.2)
ln -s /path/to/OM2007.1/OE.mtn monotone/nslu2-linux.mtn

To save even more bandwith you can also use already donwloaded source files from OM2007.1. Just make a symlink to OM2007.1 sources directory. Something like this.

(current directory(pwd) is /path/to/OM2007.2)
ln -s /path/to/OM2007.1/sources downloads

Go build ;)

make openmoko-image


  • If you an encounter an error with monotone similar to the following:
 mtn: misuse: database monotone/nslu2-linux.mtn is laid out according to an old schema

Then you need to upgrade nslu2-linux.mtn Use the following command:

 # mtn --db monotone/nslu2-linux.mtn db migrate

Pre-built snapshot images

http://ipkg.nslu2-linux.org/feeds/openmoko/images/

http://people.openmoko.org/mickey/images/ (Confirmed working)

Personal tools

FAQ

What is 2007.2?

As of 2007-07-26 the development of the next version of the OpenMoko distribution has begun.

Goals of the new version are an improved set of PIM applications, improved theming that fixes a lot of the usability problems of the 1st generation design, more formalized UI guidelines and a number of changes in the build system. The latter should introduce more recent software by staying closer in sync with upstream org.openembedded.dev.

An official announcement is expected soon (Aug 19).

(Initially this was named OM-2008 in SVN but renamed shortly after that.)

What are differences between 2007.1 and 2007.2?

Where to get images?

Unofficial images

Where are official images?

No official images yet.

My mrxvt (terminal) fonts are huge.

Edit src/feature.h to set MIN_XFT_FONT_SIZE to lower value:

#define MIN_XFT_FONT_SIZE           (2)

and rebuild mrxvt & openmoko-devel-image.

End edit /etc/mrxvt/mrxvt.conf

Mrxvt.xftSize: 4
Mrxvt.xftHint: 1


How to build

Please note that this is no official guide on how to build OM-2007.2. I am just making my first steps getting this to compile and think it would be a waste of time of I keep problems I found for my own. Additionally it would be good if the new distro gets more exposure and testing so less things will break after the official announcement.

Follow the getting started steps of OpenEmbedded. Use Bitbake 1.8.6 not a SVN version from the stable branch (otherwise you will get problems with checking out repositories) and the org.openembedded.dev branch of OE.

Put the following in your local.conf

BBFILES = "${HOME}/oe/org.openembedded.dev/packages/*/*.bb"

MACHINE = "fic-gta01"
DISTRO = "openmoko"

ENABLE_BINARY_LOCALE_GENERATION = "1"
GLIBC_GENERATE_LOCALES = "en_GB.UTF-8"

Replace "${HOME}/oe" with the path to where your "org.openembeded.dev" folder lives. For the other entries have a look at conf/local.conf.sample about their meaning.

Run bitbake <package name> (e.g. openmoko-devel-image).

Hopefully the MokoMakeFile is soon upgraded to be used for OM-2007.2. Since OpenMoko is not using the overlay any more that makefile should be simpler then. :-)

Build issues

Wrong certificate

You may get something like this while the bitbake recipes are parsed:

Error validating server certificate for 'https://libw100.svn.sf.net:443':
 - The certificate hostname does not match.
 Certificate information:
  - Hostname: *.svn.sourceforge.net
  - Valid: from Fri, 27 Oct 2006 12:05:58 GMT until Sun, 28 Oct 2007 13:05:58 GMT
  - Issuer: Equifax Secure Certificate Authority, Equifax, US
  - Fingerprint: f2:6c:fe:bb:82:92:30:09:72:dd:1c:b3:e7:56:69:c7:7a:df:67:3e

That is an issue in a bitbake file. One should not use the short-name for sourceforge (sf.net) when certificates are only for exact host names. Accept the certificate and everything is fine for now.

openmoko-libs FTBFS

Some applications have not been fully modified to build with the new libraries of OpenMoko and still need the old-style openmoko-libs package. libmokogsm which is needed for openmoko-libs then fails to build. As a workaround you can remove the not yet ported applications that need openmoko-libs making it unneccessary itself. To do this edit packages/tasks/openmoko-taks.bb and find the following lines:

.
.
.
 openmoko-terminal \
 matchbox-panel-2 \
 matchbox-panel-2-applets \
 matchbox-applet-inputmanager \
#  openmoko-appmanager \
 matchbox-keyboard \
 matchbox-stroke \
 openmoko-keyboard \
.
.
.

Now put a hash (#) before openmoko-terminal and openmoko-keyboard. You can verify that openmoko-libs is not needed any more by issuing bitbake -g openmoko-devel-image (= creates a dependency graph). There should be no mentioning of openmoko-libs in the file task-depends.dot. Please note that the graphicall terminal and the virtual keyboard will be missing now. You can still have terminal access by following the USB Networking guide. For keyboard input in Qemu add the -usbdevice keyboard switch.


gtk+ fails building w/ gtkcombobox.c

If you get these errors:

gtkcombobox.c: In function 'gtk_combo_box_size_request':
gtkcombobox.c:1859: warning: unused variable 'font_desc'
gtkcombobox.c:1858: warning: unused variable 'metrics'
gtkcombobox.c:1857: warning: unused variable 'context'
gtkcombobox.c:1855: warning: unused variable 'arrow_size'
gtkcombobox.c:1854: warning: unused variable 'font_size'
gtkcombobox.c: In function 'gtk_combo_box_size_allocate':
gtkcombobox.c:1962: error: 'arrow_size' undeclared (first use in this function)
gtkcombobox.c:1962: error: (Each undeclared identifier is reported only once
gtkcombobox.c:1962: error: for each function it appears in.)
gtkcombobox.c:1965: error: 'font_desc' undeclared (first use in this function)
gtkcombobox.c:1966: error: 'context' undeclared (first use in this function)
gtkcombobox.c:1967: error: 'metrics' undeclared (first use in this function)
gtkcombobox.c:1969: error: 'font_size' undeclared (first use in this function) 

Go to your /build/tmp/work/fic-gta01-angstrom-linux-gnueabi/gtk+-2.10.14-r3/gtk+-2.10.14/gtk directory, and patch gtkcombobox.c with the following:

Thanks to rmoravcik in #openmoko (patch was taken from http://pastebin.ca/654717 )

--- gtkcombobox.c       2007-08-12 20:30:07.000000000 +0200
+++ gtkcombobox.c       2007-08-12 20:29:58.000000000 +0200
@@ -1948,6 +1948,12 @@
 gtk_combo_box_size_allocate (GtkWidget     *widget,
                             GtkAllocation *allocation)
 {
+  gint font_size;
+  gint arrow_size;
+  PangoContext *context;
+  PangoFontMetrics *metrics;
+  PangoFontDescription *font_desc;
+
   GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
   gint focus_width, focus_pad;
   GtkAllocation child;


Building glibc fails with a segfault in QEMU

If your build aborts and you see something like this:

NOTE: package glibc-2.5: started
NOTE: package glibc-2.5-r6: task do_package: started
NOTE: preparing tree for binary locale generation
NOTE: generating locale en_US (UTF-8)
qemu: uncaught target signal 11 (Segmentation fault) - exiting

...

NOTE: Tasks Summary: Attempted 271 tasks of which 0 didn't need to be rerun and 1 failed.
ERROR: '/home/moko/oe/org.openembedded.dev/packages/glibc/glibc_2.5.bb' failed

Try editing your local.conf file. Change:

ENABLE_BINARY_LOCALE_GENERATION = "1"

to

ENABLE_BINARY_LOCALE_GENERATION = "0"

and restart the build. This may have some effect on internationalization (you will see a warning indicating that), but at least the build will continue. Thanks to rwhitby for the tip.

Alternatively, as suggested by XorA in #openmoko, if you are running a 64-bit host distribution, try forcing a different QEMU rev, also in local.conf:

PREFERRED_VERSION_qemu-native = "0.9.0+cvs20070701"
SRCDATE_qemu-native = 20070701

libxml2-native fails with xmlCatalogPtr errors

Go to your build/tmp/work/i686-linux/libxml2-native-2.6.29-r1/libxml2-2.6.29/include/libxml/ directory and patch xmlversion.h with the following:

--- xmlversion.h        2007-08-17 10:45:42.000000000 +0100
+++ xmlversion.h        2007-08-17 10:51:36.000000000 +0100
@@ -219,7 +219,7 @@
  *
  * Whether the Catalog support is configured in
  */
-#if 0
+#if 1
 #define LIBXML_CATALOG_ENABLED
 #endif


On my system the libxml2-native-2.6.29-r1 directory is in a directory named i686-linux, yours may be different. I believe this patch to be a workaround to make libxml2-native build. I am not yet sure what the consequences of enabling XML catalogue support are.

Flashing with MokoMakefile

Since MokoMakefile has not been adjusted to use the new build layout you cannot use it. As a quick hack to make flashing local built image possible again try this:

Find the following lines in the MokoMakefile:

flash-qemu-local: stamps/qemu stamps/openmoko-devel-image
      ( cd build/qemu && openmoko/flash.sh ../tmp/deploy/images )

And replace them with:

flash-qemu-local: stamps/qemu
       ( cd build/qemu && openmoko/flash.sh <MY_NEW_BUILD_DIR>/tmp/deploy/glibc/images/fic-gta01 )

Where you should replace <MY_NEW_BUILD_DIR> with the full path to your build directory (the one where conf/local.conf lives in). Running the image should work, too. :-)

With this changes kernel and uboot image are picked up correctly. However the name of the root filesystem image has changed in OM-2007.2 and the current scripts will not pick it up any more. Just edit $OM_DIR/build/qemu/openmoko/env and change the line saying:

rootfs_wildcard="openmoko-*.rootfs.jffs2"

to

rootfs_wildcard="OpenMoko-*.rootfs.jffs2"

Now it will work correctly again.

How to build using nslu2-linux MasterMakefile (Ubuntu 7.04)

[disclaimer]

Check that your /bin/sh (ls -l /bin/sh) is not linked to dash rather than bash. Using dash will cause you pain. This is true for a standard install of Ubuntu 7.04 (at least when installing from Live CD). If your /bin/sh points to /bin/dash, correct it with (as root):

ln -sf /bin/bash /bin/sh

Note: on http://www.openembedded.org/wiki/OEandYourDistro are better instructions for Ubuntu to make sh be bash.

Create your $OMDIR directory (note that you can change ~/OM-2007.2 to any directory you like):

mkdir ~/OM-2007.2 ; cd  ~/OM-2007.2

Grab the nslu2-linux MasterMakefile:

wget http://www.nslu2-linux.org/Makefile

This will make sure you'll have all the required packages:

sudo apt-get install \
               autoconf automake automake1.9 \
               bison \
               ccache cogito \
               cvs \
               diffstat \
               docbook \
               flex \
               gcc g++ gawk gcj gettext git-core \
               help2man \
               libc6-dev libglib2.0-dev libtool libxext-dev\
               m4 make \
               patch pkg-config \
               python python-dev python2.4 python2.4-dev python-psyco \
               sed \
               sharutils \
               texinfo texi2html \
               unzip \
               subversion \
               sysutils \
               texinfo \
               bzip2

Ubuntu 7.04 comes with monotone 0.31. You could just go with that and do a mtn db migrate but this takes hours so the easier way would be to download a suitable mtn db from http://www.openembedded.org/snapshots/ and use this.

mkdir -p monotone
wget http://www.openembedded.org/snapshots/\
OE-this-is-for-mtn-<your mtn version>.mtn.bz2 -O monotone/nslu2-linux.mtn.bz2
bunzip2 monotone/nslu2-linux.mtn.bz2

If you're using MokoMakefile for building OM2007.1 you probably have fresh OE.mtn for version 0.31 already downloaded. So you can just make symlink to the OE.mtn in your OM2007.1 build directory.

(current directory(pwd) is /path/to/OM2007.2)
ln -s /path/to/OM2007.1/OE.mtn monotone/nslu2-linux.mtn

To save even more bandwith you can also use already donwloaded source files from OM2007.1. Just make a symlink to OM2007.1 sources directory. Something like this.

(current directory(pwd) is /path/to/OM2007.2)
ln -s /path/to/OM2007.1/sources downloads

Go build ;)

make openmoko-image


  • If you an encounter an error with monotone similar to the following:
 mtn: misuse: database monotone/nslu2-linux.mtn is laid out according to an old schema

Then you need to upgrade nslu2-linux.mtn Use the following command:

 # mtn --db monotone/nslu2-linux.mtn db migrate

Pre-built snapshot images

http://ipkg.nslu2-linux.org/feeds/openmoko/images/

http://people.openmoko.org/mickey/images/ (Confirmed working)