Sugar with sugar-jhbuild

From OLPC
Revision as of 09:30, 19 February 2009 by Aa (talk | contribs) (Mention rpath bug workaround)
Jump to: navigation, search
  english | 日本語 HowTo [ID# 195933]  +/-  

Sugar-jhbuild is a tool to automatically install and build a bleeding-edge version of Sugar, with all the latest fixes. It is mostly useful for people who are developing Sugar (Glucose) itself; for users or application developers, it is probably better to get the packages for your distro, or to emulate a specific build which is common among your users.

It builds a "native" Sugar environment on various Linux distros. This is an alternative to running an OS image of the XO software by emulating the XO.

Sugar-jhbuild will automatically download the latest of Sugar's dependencies as well as Sugar itself directly from their source repositories, rather than relying on source packages that may have become stale. Below are generic instructions on how to use sugar-jhbuild to get up and running with Sugar.

Compatible Platforms

sugar-jhbuild is quite demanding with regard to the packages and setup for the host Linux distribution. As a result there are only a few Linux Distributions which are known to work with it.

Please make sure that you have satisfied the prerequisites of your platform...

Note that Debian Unstable and derived distros (e.g. Ubuntu Intrepid) contain a bug in python-gnome that impedes running jhbuild

To work around this use chrpath to remove the rpath setting from your system's gconf.so:

 sudo aptitude install chrpath
 sudo chrpath -d /usr/lib/python-support/python-gnome2/python2.5/gtk-2.0/gconf.so

Checkout sugar-jhbuild

In a suitable directory, execute

git-clone git://git.sugarlabs.org/sugar-jhbuild/mainline.git sugar-jhbuild

(Note: use of the repository git://dev.laptop.org/sugar-jhbuild is not recommended as it is not kept up to date.)

Build sugar base system and its dependencies

Change directory and start the build.

cd sugar-jhbuild
git-pull
./sugar-jhbuild update
./sugar-jhbuild build

Dealing with dependencies

At some point during running sugar-jhbuild update or sugar-jhbuild build you may be interrupted by an error listing some dependencies you don't have. Here are some notes that may help you deal with this so you can build correctly.

  • In addition to the dependencies listed, you may want to install the gtk-doc-tools package (this allowed me to build hippocanvas on Ubuntu Hardy). Mchua 22:01, 15 May 2008 (EDT)
  • Ubuntu:

for update:

sudo apt-get install patch subversion git

for build (requires Ubuntu 8.10):

sudo apt-get install intltool libtool python-dev g++ libgtk2.0-dev python-gtk2-dev python-cairo-dev libcroco3-dev libgsf-1-dev libenchant-dev libfribidi-dev libboost-dev libxt-dev libexpat1-dev gettext libwv-dev zlib1g-dev gnome-common python-numpy libwnck-dev xserver-xephyr librsvg2-dev python-cjson automake1.9 gtk-doc-tools libglade2-dev libidl-dev libgconf2-dev libgnomevfs2-dev libpoppler-glib-dev icon-naming-utils icon-slicer libasound2-dev python-xapian libxapian15 libdbus-1-dev libdbus-glib-1-dev libloudmouth1-dev libavahi-gobject-dev python-avahi libpoppler-dev xulrunner-dev
  • If you're given a list of packages that aren't installed, simply install them according to your distribution's package manager (yum, apt-get, etc.) and then try re-running the sugar-jhbuild command again.
  • For the base packages, you may be able to use the binary packages from your GNU distribution instead of building them from scratch. Check the Installing or Linux categories for specific distro info.
  • If you run into an error during sugar-jhbuild build that looks something like "aclocal: macro `AM_PATH_PYTHON' required but not defined" try installing or updating your packages for autoconf and automake and running sugar-jhbuild build again. (worked for me on Ubuntu Hardy) Mchua 17:10, 15 May 2008 (EDT)
  • You may have some issues with penguintv on ubuntu, just interrupt the pull with a CTRL+C, open a shell, repeat the command manually, and accept the certificate permanently.
  • One other fix that I had to do was to export GTK2_RC_FILES=~/src/olpc/sugar-jhbuild/build/share/themes/sugar/gtk-2.0/gtkrc

and also symlink build/share/icons/sugar to build/share/icons/hicolor. These two steps may not be necessary, but they made things work on my Ubuntu installation as of March 31, 2008. Blaketh 03:08, 31 March 2008 (EDT)

Run Sugar

This command launches the Sugar emulator:

./sugar-jhbuild run

To exit the emulator, press Alt-Q.

If you want to run it from your login .Xsession, then use:

./sugar-jhbuild run sugar-shell

And, make sure the install/bin directory is in your PATH.

Running multiple instances

To run multiple instances of sugar you can start it in the following way:

SUGAR_PROFILE=2 ./sugar-jhbuild run

This will create a new profile in ~/.sugar/, i.e. ~/.sugar/2/. You will find logs and configuration for this instance here. The default profile is ~/.sugar/default/

Run an individual activity

Within sugar, e.g. in Terminal, this command launches an individual activity for testing:

sugar-launch [bundle name]

You will see debug output appearing in Terminal.

Configure the mode and resolution of Sugar

You can make Sugar run in a window as well as specify a resolution. Within the sugar-jhbuild/install/bin directory, backup, then edit the python program file sugar-emulator:

cd sugar-jhbuild
cp install/bin/sugar-emulator install/bin/sugar-emulator.backup
nano install/bin/sugar-emulator

Find this piece of code:

    cmd = [ 'Xephyr' ]
    cmd.append(':%d' % display)
    cmd.append('-ac')

     if dimensions is not None:
         cmd.append('-screen')
         cmd.append(dimensions) 
     elif gtk.gdk.screen_width() < 1200 or gtk.gdk.screen_height() < 900:
         cmd.append('-fullscreen')
     else:
         cmd.append('-screen')
         cmd.append('%dx%d' % (1200, 900))

Comment out the if , elif and else instructions, and specify the screen resolution and mode you want (it's important to delete 4 spaces before the "cmd.append" lines):

    cmd = [ 'Xephyr' ]
    cmd.append(':%d' % display)
    cmd.append('-ac')

#    if dimensions is not None:
#        cmd.append('-screen')
#        cmd.append(dimensions) 
#    elif gtk.gdk.screen_width() < 1200 or gtk.gdk.screen_height() < 900:
#        cmd.append('-fullscreen')
#    else:
    cmd.append('-screen')
    cmd.append('%dx%d' % (800, 600))

Sugar will now run on a 800x600 window. This file may be replaced next time you update sugar-jhbuild, and you'll have to do this again. Also note that 800x600 is not an optimal resolution for the window, because the activity circle will be vertically off center. 1024x768 is a more usable resolution.

Other commands

JHBuild has several other commands that can be useful for development. You can get an overview with:

./sugar-jhbuild --help-commands

A useful sequence of commands for building Sugar, from the Sugar mailing list: (Note that build will update first anyway, so run update separately if you want to see what changed more easily.)

./sugar-jhbuild update
./sugar-jhbuild build
./sugar-jhbuild run

If update and build don't work

In May 2008 there were some changes that broke updates on sugar-jhbuild. A version from before this date cannot update or build after this date; the symptoms are various, but generally include errors which mention the "build-scripts" directory. You need to rebuild from scratch in a new jhbuild directory. Something like the following:

cd ..
mv sugar-jhbuild sugar-jhbuild.old
git-clone git://dev.laptop.org/sugar-jhbuild

then, to save bandwidth, move the tar files from your old version:

mkdir sugar-jhbuild/source
mv sugar-jhbuild.old/source/*.tar* sugar-jhbuild/source

then build:

cd sugar-jhbuild
./sugar-jhbuild build

You may then also see some new dependencies; see the relevant instructions above.

From Within Sugar

Once you have Sugar running, here are some useful commands:

  • Alt+F makes the frame appear and disappear
  • Ctrl-Q quits an activity
  • Alt+Q quits Sugar
  • Alt+N and Alt+P switch applications within sugar (like alt-tab on the device)

Customize

To customize the build create a configuration file, named .olpc.jhbuildrc .sugar.jhbuildrc in your home directory.

Write access to the repositories

If you have write access to the repositories you can add this (if your login name happens to be marco):

repos['gnome.org'] = ':ext:marco@cvs.gnome.org:/cvs/gnome'
repos['mozilla.org'] = ':ext:marco%gnome.org@cvs.mozilla.org:/cvsroot'
repos['dev.laptop.org'] = 'git+ssh://marco@dev.laptop.org/git/'
repos['dev.laptop.org/projects'] = 'git+ssh://marco@dev.laptop.org/git/projects/'

Useful Internal Links

External links