Sugar on Gentoo Linux: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Udated build instructions for Gentoo users...)
(Fix code sample blocks)
Line 11: Line 11:
To unmask a hard-masked package, add a line such as the following to your /etc/portage/package.unmask file:
To unmask a hard-masked package, add a line such as the following to your /etc/portage/package.unmask file:


=net-misc/networkmanager-0.6.4_pre20061028-r1
=net-misc/networkmanager-0.6.4_pre20061028-r1
=dev-libs/libnl-1.0_pre6
=dev-libs/libnl-1.0_pre6
=net-misc/dhcdbd-1.14-r1
=net-misc/dhcdbd-1.14-r1
=dev-lang/python-2.5-r1
=dev-lang/python-2.5-r1


To unmask an ~x86-masked package, add a line such as the following to your /etc/portage/package.keywords file:
To unmask an ~x86-masked package, add a line such as the following to your /etc/portage/package.keywords file:


dev-lang/python ~x86
dev-lang/python ~x86
dev-python/setuptools ~x86
dev-python/setuptools ~x86
net-libs/xulrunner ~x86
net-libs/xulrunner ~x86
net-misc/networkmanager ~x86
net-misc/networkmanager ~x86
dev-libs/libnl ~x86
dev-libs/libnl ~x86
net-misc/dhcdbd ~x86
net-misc/dhcdbd ~x86
dev-python/dbus-python ~x86
dev-python/dbus-python ~x86


Note that you can use the full format (including comparison operator and version) as specified in the package.unmask file above as well.
Note that you can use the full format (including comparison operator and version) as specified in the package.unmask file above as well.
Line 30: Line 30:
You will also likely need to specify USE flags for a number of packages. These are added to the /etc/portage/package.use file in a format like so:
You will also likely need to specify USE flags for a number of packages. These are added to the /etc/portage/package.use file in a format like so:


dev-util/subversion -apache2
dev-util/subversion -apache2
net-dns/avahi dbus python
net-dns/avahi dbus python
dev-python/gnome-python-extras firefox
dev-python/gnome-python-extras firefox
x11-base/xorg-server kdrive
x11-base/xorg-server kdrive


=== Python 2.5 is Required ===
=== Python 2.5 is Required ===
Line 39: Line 39:
You will need to upgrade your Gentoo installation to Python 2.5, then upgrade all of the packages dependent on Python (normally Python modules):
You will need to upgrade your Gentoo installation to Python 2.5, then upgrade all of the packages dependent on Python (normally Python modules):


emerge -avDt >=dev-lang/python2.5
emerge -avDt >=dev-lang/python2.5
python-updater
python-updater


Note that Python is a core component of Gentoo's portage package management system. As such it is potentially possible that you could damage your system by using an unsupported Python version. Probably not a huge risk, but be careful!
Note that Python is a core component of Gentoo's portage package management system. As such it is potentially possible that you could damage your system by using an unsupported Python version. Probably not a huge risk, but be careful!
Line 48: Line 48:
Sugar requires a large number of standard Gentoo packages, you will need to emerge all of them in order to build the package:
Sugar requires a large number of standard Gentoo packages, you will need to emerge all of them in order to build the package:


emerge -avDt \
emerge -avDt \
dev-util/git\
dev-util/git\
cvs subversion\
cvs subversion\
docbook-sgml-utils\
docbook-sgml-utils\
gtk-doc\
gtk-doc\
avahi\
avahi\
expat\
expat\
gstreamer\
gstreamer\
xulrunner\
xulrunner\
pycurl\
pycurl\
networkmanager\
networkmanager\
gnome-python-desktop\
gnome-python-desktop\
gnome-python-extras\
gnome-python-extras\
>=dev-python/dbus-python-0.80.1\
>=dev-python/dbus-python-0.80.1\
darcs
darcs


You will also likely need to compile the xorg-server module with a new USE flag "kdrive", which specifies the creation of the "nested X servers", (particularly the "Xephyr" server which Sugar uses) specified in the /etc/portage/package.use:
You will also likely need to compile the xorg-server module with a new USE flag "kdrive", which specifies the creation of the "nested X servers", (particularly the "Xephyr" server which Sugar uses) specified in the /etc/portage/package.use:


emerge -avDt --newuse xorg-server
emerge -avDt --newuse xorg-server


You will also need the "dm-crypt" module compiled into your kernel. To check for the presence of the module:
You will also need the "dm-crypt" module compiled into your kernel. To check for the presence of the module:


modprobe dm-crypt
modprobe dm-crypt


if this fails, enable the option in your kernel and rebuild the kernel with genkernel (or whatever you prefer for your kernel building pleasure):
if this fails, enable the option in your kernel and rebuild the kernel with genkernel (or whatever you prefer for your kernel building pleasure):

Revision as of 04:44, 1 March 2007

Installation

Sugar can be built on Gentoo using the sugar-jhbuild tool. These instructions are being updated on 2007-02-28 to reflect current build practice as successfully completed by the PyCon sprint. Test machine was an up-to-date x86 laptop with minimal ~x86 features added to support the Sugar environment.

Prerequisites

You will need to emerge rather a lot of software, with many of the packages being ~x86 or hard-masked. For any package which is hard-masked, you will have to add the package to your /etc/portage/package.unmask file (which you may need to create).

Please keep in mind that unmasking hard-masked files is strongly discouraged by Gentoo, and the project will generally *not* provide support for problems encountered with the software (i.e. ask on the Sugar lists before you ask on the Gentoo lists for hard-masked packages).

To unmask a hard-masked package, add a line such as the following to your /etc/portage/package.unmask file:

 =net-misc/networkmanager-0.6.4_pre20061028-r1
 =dev-libs/libnl-1.0_pre6
 =net-misc/dhcdbd-1.14-r1
 =dev-lang/python-2.5-r1

To unmask an ~x86-masked package, add a line such as the following to your /etc/portage/package.keywords file:

 dev-lang/python ~x86
 dev-python/setuptools ~x86
 net-libs/xulrunner ~x86
 net-misc/networkmanager ~x86
 dev-libs/libnl ~x86
 net-misc/dhcdbd ~x86
 dev-python/dbus-python ~x86

Note that you can use the full format (including comparison operator and version) as specified in the package.unmask file above as well.

You will also likely need to specify USE flags for a number of packages. These are added to the /etc/portage/package.use file in a format like so:

 dev-util/subversion -apache2
 net-dns/avahi dbus python
 dev-python/gnome-python-extras firefox
 x11-base/xorg-server kdrive

Python 2.5 is Required

You will need to upgrade your Gentoo installation to Python 2.5, then upgrade all of the packages dependent on Python (normally Python modules):

 emerge -avDt >=dev-lang/python2.5
 python-updater

Note that Python is a core component of Gentoo's portage package management system. As such it is potentially possible that you could damage your system by using an unsupported Python version. Probably not a huge risk, but be careful!

Emerge(1) the prerequisites

Sugar requires a large number of standard Gentoo packages, you will need to emerge all of them in order to build the package:

 emerge -avDt \
 dev-util/git\
 cvs subversion\
 docbook-sgml-utils\
 gtk-doc\
 avahi\
 expat\
 gstreamer\
 xulrunner\
 pycurl\
 networkmanager\
 gnome-python-desktop\
 gnome-python-extras\
 >=dev-python/dbus-python-0.80.1\
 darcs

You will also likely need to compile the xorg-server module with a new USE flag "kdrive", which specifies the creation of the "nested X servers", (particularly the "Xephyr" server which Sugar uses) specified in the /etc/portage/package.use:

 emerge -avDt --newuse xorg-server

You will also need the "dm-crypt" module compiled into your kernel. To check for the presence of the module:

 modprobe dm-crypt

if this fails, enable the option in your kernel and rebuild the kernel with genkernel (or whatever you prefer for your kernel building pleasure):

   Device Drivers
     Multi-Device Support
       Device mapper support
         [*] Crypt Target Support

Getting and building jhbuild

Instructions for getting and installing jhbuild can be found at: http://www.gnome.org/~jamesh/jhbuild.html#getting-started

However, note that these instructions are somewhat out of date, jhbuild is now stored in SVN instead of CVS. Check it out with:

 svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild

You do *not* need to run jhbuild directly. sugar-jhbuild just requires the package in order to function.


Using Sugar-jhbuild

Use of Sugar-jhbuild is detailed on building Sugar from sources. To summarize those instructions:

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

If you had already checked out sugar-jhbuild previously, make sure your copy is up-to-date before building:

cd sugar-jhbuild
git-pull

The sanity checks are still very basic but, often, good information can be gotten from:

 ./sugar-jhbuild sanitycheck


Troubleshooting

missing db2html

You may find that jhbuild complains about missing 'db2html' in which case you will need to create a symlink from docbook2html:

 ln -s /usr/bin/docbook2html /usr/bin/db2html


missing gconf.def

gnome-python-desktop was complaining about a missing gconf.def:

 IOError: [Errno 2] No such file or directory:
 'sugar-jhbuild/build/share/pygtk/2.0/defs/gconf.defs'

I rectified this with a:

 touch build/share/pygtk/2.0/defs/gconf.defs

and the build completed without problem.


Testing sugar

When using sugar-jhbuild, you can use:

./sugar-jhbuild run

If you want to run Sugar from the source tree enter in a jhbuild shell:

./sugar-jhbuild shell 

Then from the directory sugar-jhbuild/source/sugar), use:

shell/sugar