SHR Development

From Openmoko

Revision as of 10:11, 12 September 2008 by Aleix (Talk | contribs)

Jump to: navigation, search

Template:SHR

Contents

New way (using FSO/SHR Makefile)

There is a new (much simpler) way to build SHR that is under construction right now.

Before beginning

  • Download the FSO/SHR Makefile from Bearstech (see README for details):
$ wget http://shr.bearstech.com/Makefile
  • Run:
$ make setup

make setup will download FSO, bitbake and SHR in the shr directory (SHR root directory from now on).

  • Change this line in common/setup-env:
export BBPATH="${TOPDIR}:${TOPDIR}/openembedded:${TOPDIR}/bitbake"

for:

export BBPATH="${TOPDIR}:${TOPDIR}/shr/openembedded:${TOPDIR}/openembedded:${TOPDIR}/bitbake"

Set up your local.conf

Before building the image, you might want to update shr-unstable/conf/local.conf to tweak your build.

Speed up the building process

If your machine has multiple CPU's (or dual-core) this will help:

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

Disable/Minimize locales generation

To avoid multiple locales generation, add:

GLIBC_GENERATE_LOCALES = "en_US.UTF-8"

or to disable locale generation at all:

ENABLE_BINARY_LOCALE_GENERATION = "0"

this will also speed up the whole build.

First build

  • You are now ready to build the SHR image:
$ cd shr-unstable
$ make image

By default, this will build the image for OM-GTA02. If you want to build the image for OM-GTA01:

$ cd shr-unstable
$ make setup-machine-om-gta01
$ make image

you can change it back to OM-GTA02 with make setup-machine-om-gta02.

Making changes

Make changes to an SHR project (e.g. openmoko-dialer3, under the SHR root directory), then under the top directory:

$ cd shr-unstable
$ . setup-env  (only once per session)
$ bitbake -c clean openmoko-dialer3
$ bitbake -c build openmoko-dialer3

There is no need to check-in the changes to the repo as the system now looks for SHR packages in the local filesystem. The problem is that it is necessary to always clean the packages so bitbake gets the new changes next time you compile.

Also, note that we are using bitbake -c build, this is because bitbake needs to do all the necessary steps before compiling (i.e. fetch, unpack, configure...).

When you are satisfied with your changes and want to create a new SHR image:

$ make image

Updating from other people's changes

Under the top directory:

$ make update-shr

Or under the SHR root directory:

$ svn update

If you want to update everything (FSO, bitbake and SHR), from the top directory:

 $ make update

Old way

Building openmoko-dialer3

Currently this is the only package of any size being developed for SHR, and it's the only one with any instructions. If you start another SHR project (please check with Bobby before starting one), put instructions for working on the project here!

Before beginning

You must build openembedded before you can build SHR packages. The easiest way is to go to http://wiki.openmoko.org/wiki/Mokomakefile and build using the instructions for FSO.

* Note: if building FSO fails using MokoMakefile (zhone! or no dbus show up on the top of the newly booted image), try using this
  method: http://wiki.openmoko.org/wiki/FSO

The rest of these instructions are written assuming that you used Mokomakefile and that the directory you downloaded the base Makefile into (using wget) is $MOKO.

You must also download the SHR code using subversion. See http://projects.openmoko.org/projects/shr. We will refer to the directory to which you downloaded the project as $SHRSVN. (This directory should contain $SHRSVN/packages/openmoko-dialer3.bb)

Set up your BBPATH

 export BBPATH=.:$MOKO/openembedded/:$MOKO/bitbake/:$MOKO/:$SHRSVN/trunk/packages/

Set up the CACHE

 export CACHE=tmp/cache

Set up your local.conf

Edit $MOKO/build/conf/local.conf and append the following lines:

 BBFILES += "$SHRSVN/trunk/packages/*.bb $MOKO/openembedded/packages/*/*.bb"
 SELECTED_OPTIMIZATION = "-Os -g"

Note: Spaces are important in your bitbake conf files! You must have spaces before & after the = or +=

(Environment variables, $SHRSVN and $MOKO, can not be used inside local.conf, so absolute paths must be used instead)

Set up your openmoko.conf (if using 2007.2)

Edit $MOKO/openembedded/conf/distro/openmoko.conf

and make sure that these Gtk+ options are set:

# Select package versions we want to use.
PREFERRED_PROVIDER_gtk+ = "gtk+-fastscaling"
PREFERRED_VERSION_gtk+-fastscaling = "2.10.14"


Add your cross-compiler to your PATH

 export PATH=$MOKO/build/tmp/cross/bin/:$MOKO/build/tmp/staging/x86_64-linux/usr/bin:$PATH

Run bitbake

(Don't forget to source the setup-env file in the shell before running bitbake)

 bitbake openmoko-dialer3

After the first time you build successfully, you can build with

 bitbake -b openmoko-dialog3_svn

which is much faster.

To recompile, and only recompile

  bitbake -c compile -b $SHRSVN/trunk/packages/openmoko-dialer3.bb

Troubleshooting

General

One thing to try is to unset all environment variables not listed in this page. LIBPATH and INCLUDE can be particularly troublesome.

Personal tools

Template:SHR

New way (using FSO/SHR Makefile)

There is a new (much simpler) way to build SHR that is under construction right now.

Before beginning

  • Download the FSO/SHR Makefile from Bearstech (see README for details):
$ wget http://shr.bearstech.com/Makefile
  • Run:
$ make setup

make setup will download FSO, bitbake and SHR in the shr directory (SHR root directory from now on).

  • Change this line in common/setup-env:
export BBPATH="${TOPDIR}:${TOPDIR}/openembedded:${TOPDIR}/bitbake"

for:

export BBPATH="${TOPDIR}:${TOPDIR}/shr/openembedded:${TOPDIR}/openembedded:${TOPDIR}/bitbake"

Set up your local.conf

Before building the image, you might want to update shr-unstable/conf/local.conf to tweak your build.

Speed up the building process

If your machine has multiple CPU's (or dual-core) this will help:

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

Disable/Minimize locales generation

To avoid multiple locales generation, add:

GLIBC_GENERATE_LOCALES = "en_US.UTF-8"

or to disable locale generation at all:

ENABLE_BINARY_LOCALE_GENERATION = "0"

this will also speed up the whole build.

First build

  • You are now ready to build the SHR image:
$ cd shr-unstable
$ make image

By default, this will build the image for OM-GTA02. If you want to build the image for OM-GTA01:

$ cd shr-unstable
$ make setup-machine-om-gta01
$ make image

you can change it back to OM-GTA02 with make setup-machine-om-gta02.

Making changes

Make changes to an SHR project (e.g. openmoko-dialer3, under the SHR root directory), then under the top directory:

$ cd shr-unstable
$ . setup-env  (only once per session)
$ bitbake -c clean openmoko-dialer3
$ bitbake -c build openmoko-dialer3

There is no need to check-in the changes to the repo as the system now looks for SHR packages in the local filesystem. The problem is that it is necessary to always clean the packages so bitbake gets the new changes next time you compile.

Also, note that we are using bitbake -c build, this is because bitbake needs to do all the necessary steps before compiling (i.e. fetch, unpack, configure...).

When you are satisfied with your changes and want to create a new SHR image:

$ make image

Updating from other people's changes

Under the top directory:

$ make update-shr

Or under the SHR root directory:

$ svn update

If you want to update everything (FSO, bitbake and SHR), from the top directory:

 $ make update

Old way

Building openmoko-dialer3

Currently this is the only package of any size being developed for SHR, and it's the only one with any instructions. If you start another SHR project (please check with Bobby before starting one), put instructions for working on the project here!

Before beginning

You must build openembedded before you can build SHR packages. The easiest way is to go to http://wiki.openmoko.org/wiki/Mokomakefile and build using the instructions for FSO.

* Note: if building FSO fails using MokoMakefile (zhone! or no dbus show up on the top of the newly booted image), try using this
  method: http://wiki.openmoko.org/wiki/FSO

The rest of these instructions are written assuming that you used Mokomakefile and that the directory you downloaded the base Makefile into (using wget) is $MOKO.

You must also download the SHR code using subversion. See http://projects.openmoko.org/projects/shr. We will refer to the directory to which you downloaded the project as $SHRSVN. (This directory should contain $SHRSVN/packages/openmoko-dialer3.bb)

Set up your BBPATH

 export BBPATH=.:$MOKO/openembedded/:$MOKO/bitbake/:$MOKO/:$SHRSVN/trunk/packages/

Set up the CACHE

 export CACHE=tmp/cache

Set up your local.conf

Edit $MOKO/build/conf/local.conf and append the following lines:

 BBFILES += "$SHRSVN/trunk/packages/*.bb $MOKO/openembedded/packages/*/*.bb"
 SELECTED_OPTIMIZATION = "-Os -g"

Note: Spaces are important in your bitbake conf files! You must have spaces before & after the = or +=

(Environment variables, $SHRSVN and $MOKO, can not be used inside local.conf, so absolute paths must be used instead)

Set up your openmoko.conf (if using 2007.2)

Edit $MOKO/openembedded/conf/distro/openmoko.conf

and make sure that these Gtk+ options are set:

# Select package versions we want to use.
PREFERRED_PROVIDER_gtk+ = "gtk+-fastscaling"
PREFERRED_VERSION_gtk+-fastscaling = "2.10.14"


Add your cross-compiler to your PATH

 export PATH=$MOKO/build/tmp/cross/bin/:$MOKO/build/tmp/staging/x86_64-linux/usr/bin:$PATH

Run bitbake

(Don't forget to source the setup-env file in the shell before running bitbake)

 bitbake openmoko-dialer3

After the first time you build successfully, you can build with

 bitbake -b openmoko-dialog3_svn

which is much faster.

To recompile, and only recompile

  bitbake -c compile -b $SHRSVN/trunk/packages/openmoko-dialer3.bb

Troubleshooting

General

One thing to try is to unset all environment variables not listed in this page. LIBPATH and INCLUDE can be particularly troublesome.