XS Building Software

From OLPC
Jump to: navigation, search
  english | español HowTo [ID# 251647]  +/-  


  This page is monitored by the OLPC team.
This page refers to obsolete versions of the XS (v0.4 and earlier). Please use newer versions of the XS software.
For building XS images, see XS Builder.

This page describes how to build the School Server software. Unless you are developing or fixing bugs in the current server software, you should just download a Live CD Image instead.

Setting up a build environment

The machine you are building the live CD on will need to have the livecd-tools and kudzu packages installed. This is easy if it has Fedora 7 installed on it:

yum install livecd-tools kudzu

If building an RPM, you need a directory for building the RPMs:

mkdir -p rpmdir/BUILD rpmdir/SOURCES rpmdir/SPECS rpmdir/RPMS rpmdir/SRPMS

You also need to point RPM to that directory. Add a line, %_topdir <build directory path> to a file, .rpmmacros in your home directory. This may be done using:

echo "%_topdir /path/to/rpmdir" >> ~/.rpmmacros

These last two steps are not needed for building a livecd image.

Downloading the latest software

Only one software package, xs-livecd, needs to be downloaded to build a LiveCD. We only offer git access. Our repositories are at git://dev.laptop.org/projects/.

mkdir xs-build
cd xs-build
git-clone git://dev.laptop.org/projects/xs-livecd xs-livecd

Most changes to a server involve adding a package or changing a configuration file. Officially, these usually involve changing the following packages (unofficially, you can easily add packages by modifying the kickstart file used to build a livecd):

  • xs-conf - The configuration files overriding those specified by packages (but not anaconda...)
  • xs-pkgs - This meta-package pulls in the core system and services
git-clone git://dev.laptop.org/projects/xs-pkgs xs-pkgs
git-clone git://dev.laptop.org/projects/xs-config xs-config

Building a package

After making any necessary changes to the files in a package, you need to change the version number. This is defined in two places (free dinner to the first person to fix this), the Makefile and the spec file. You must at least increment the release number!

If contributing your change back to OLPC, don't forget to git add the Makefile and the package.spec file before commiting and pushing.

Now build the RPM (as yourself, not root). The RPMDIR should be the same as the one in your ~/.rpmmacros file.

make RPMDIR=rpmdir rpm

Copy the latest kickstart file in xs-livecd/kickstart, and edit it to make any necessary changes. In particular, you need to point the kickstart towards a repository that contains your newly-built RPMs. By default, the kickstart points towards the stable/olpc/7 repository on xs-dev.

The Fedora Wiki entry on developing using RPMs is a useful resource. If you are trying to build your own kernel, see building an OLPC kernel.

Building a Branch

If you are building a Live CD which is customized for your needs, or just testing before commiting a bug fix, you will need to create your own repository for the new RPMs, and point the Live CD kickstart script at it.

Put your RPMs into a directory, and bless it using createrepo:

mkdir repo
cp -p xs-config/*.rpm repo
cp -p xs-pkgs/*.rpm repo
createrepo repo

Then, add the following directive to the kickstart script you copy/edit for the new Live CD:

repo --name=myrepo --baseurl=file:///path/to/repo

Main Branch

If you are developing the main branch for OLPC, please make sure to git add/commit/push your changes back into our repository. You can use the testing repository to build a test image, by placing the RPMs in the testing repository at /xsrepos/testing/olpc/7/ on xs-dev. You should also edit the kickstart script to look like:

repo --name=e7 --baseurl=http://fedora.laptop.org/xs/testing/releases/7/Everything/i386/os/
repo --name=u7 --baseurl=http://fedora.laptop.org/xs/testing/updates/7/i386/
repo --name=o7 --baseurl=http://fedora.laptop.org/xs/testing/olpc/7/i386

Don't forget to manually run

createrepo /xsrepos/testing/olpc/7/i386
repoview  /xsrepos/testing/olpc/7/i386

on xs-dev when you are done, to update the repository metadata.

Building the Live CD

The only versioning of livecd is in the naming of the kickstart file. This should also be reflected in the filesystem label (and filename) assigned to the iso image.

Finally, build the livecd (as root):

sudo livecd-creator --config=kickstart/livecd-<your_version_here>.ks \
   --fslabel=OLPC_XS_<your_version_here>

This creates a live CD image in the current directory.

Testing or Stable ?

Please note that livecd images are built using the contents of the testing repository, but once installed on a system, the default behavior will be to update from the stable repository.

Once a livecd image confirms that new installs work sufficiently well, the image is released and the stable repository is updated.

Main Branch

If you are developing the main branch for OLPC, please make sure to git add/commit/push the kickstart file back into our repository, and place the iso image in /var/www/html/xs/ on xs-dev.