Difference between revisions of "Dextrose/Building"

From Sugar Labs
Jump to navigation Jump to search
Line 5: Line 5:
 
== Build host requirements ==
 
== Build host requirements ==
  
The Dextrose build system runs on '''Fedora 11 i386''' through '''Fedora 13 x86_64'''. The host system runs '''shouldn't''' matter, because the build runs in a chroot environment. olpc-os-builder does not yet run on Ubuntu due to a missing dependency.
+
The Dextrose build system runs on '''Fedora 11 i386''' through '''Fedora 13 x86_64''' ('''Fedora 14 beta''' can be used also). The host system runs '''shouldn't''' matter, because the build runs in a chroot environment. olpc-os-builder does not yet run on Ubuntu due to a missing dependency.
  
 
The initial build requires about '''700MB''' of rpm packages and Sugar activity bundles. The packages and bundles are cached for futures builds.
 
The initial build requires about '''700MB''' of rpm packages and Sugar activity bundles. The packages and bundles are cached for futures builds.
  
 
== Initial setup ==
 
== Initial setup ==
 +
 +
* Install dependencies (you need to be root to do this)
 +
 +
  yum upgrade
 +
  yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip zlib-devel
  
 
* Checkout Dextrose build system
 
* Checkout Dextrose build system
  
 
   git clone git://git.sugarlabs.org/dextrose/mainline.git dextrose
 
   git clone git://git.sugarlabs.org/dextrose/mainline.git dextrose
 
* Install dependencies
 
 
  yum upgrade
 
  yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip zlib-devel
 
  
 
* Compile build helper programs
 
* Compile build helper programs
  
 +
  cd dextrose
 
   make
 
   make
  
* Generate initial sequence number for the builds
+
* Generate initial sequence number for the builds (42 is just for an example)
  
 
   echo 42 >buildnr-dx
 
   echo 42 >buildnr-dx
Line 30: Line 31:
 
== Creating a build ==
 
== Creating a build ==
  
* Run the Build
+
* Run the Build (again you need to be root to able to do this)
 +
 
 +
  time ./osbuilder.py examples/dextrose2-xo1.ini
 +
 
 +
obviusly you can use sudo if your user is configured to do this, and the you can use this
  
   time sudo ./osbuilder.py examples/dextrose2-xo1.ini
+
   time ./osbuilder.py examples/dextrose2-xo1.ini
  
 
The initial build may take several hours depending on available bandwith.  Subsequent builds will take about 15-20 minutes
 
The initial build may take several hours depending on available bandwith.  Subsequent builds will take about 15-20 minutes

Revision as of 06:28, 27 October 2010

Build system

Dextrose uses olpc-os-builder, a tool create by OLPC to build official and customized system images. The Dextrose git repository contains, olpc-os-builder, local customizations specific to Dextrose, and fixes and enhancements waiting to be pushed upstream.

Build host requirements

The Dextrose build system runs on Fedora 11 i386 through Fedora 13 x86_64 (Fedora 14 beta can be used also). The host system runs shouldn't matter, because the build runs in a chroot environment. olpc-os-builder does not yet run on Ubuntu due to a missing dependency.

The initial build requires about 700MB of rpm packages and Sugar activity bundles. The packages and bundles are cached for futures builds.

Initial setup

  • Install dependencies (you need to be root to do this)
 yum upgrade
 yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip zlib-devel
  • Checkout Dextrose build system
 git clone git://git.sugarlabs.org/dextrose/mainline.git dextrose
  • Compile build helper programs
 cd dextrose
 make
  • Generate initial sequence number for the builds (42 is just for an example)
 echo 42 >buildnr-dx

Creating a build

  • Run the Build (again you need to be root to able to do this)
 time ./osbuilder.py examples/dextrose2-xo1.ini

obviusly you can use sudo if your user is configured to do this, and the you can use this

 time ./osbuilder.py examples/dextrose2-xo1.ini

The initial build may take several hours depending on available bandwith. Subsequent builds will take about 15-20 minutes

Upon completion the new image is available at build/output.

Because several build tools, olpc-os-builder, imgcreate and yum, are nested, error output could be misleading or obscure. Before digging into code, you please ask on IRC in case someone has already seen the same problem.

Publishing the images

Please do not publish signed builds unless they implement the OLPC anti-theft system.

Customizing your build

olpc-os-builder is documented at README in the olpc-os-builder tree. The modules are documented in README files in the modules directory.

Upstream Code

Dextrose is based on upstream olpc code located at dev.laptop.org.

git remote add olpc git://dev.laptop.org/projects/olpc-os-builder
git fetch olpc
git log olpc/master

Customizing the core RPMs

  • Go to the rpms/PACKAGENAME in the dextrose tree
  • Edit the spec file. Typically this involves adding a new patch, which is done by adding a PatchNN: tag and a corresponding %patchNN rule in %setup. Some of the intricacies of RPM spec files are unveiled in the Fedora Packaging Guidelines.
  • Increase the release number after each change.

building the Custom RPM

If you have a Fedora 11 i386 system, just type:

 make i586

Otherwise, you need to build in a mock chroot:

 make srpm
 sudo mock -r fedora-11-i386 --resultdir=. --rebuild mypackage.src.rpm

Uploading the Custom RPM

  • Upload rpm to a yum repository and add it to the ini file used by the OLPC OS builder.
  • To automate this step, we have a rule make uploadrpm which points at the Dextrose repository. Edit rpms/common/Makefile.common or rpms/common/uploadrpm to retarget this rule to your repository.

Building custom kernels

$ git clone http://dev.laptop.org/git/olpc-2.6/
$ cd olpc-2.6
$ setarch i386 make ARCH=i386 xo_1-kernel-rpm

Resources

  • Rpm - The Redhat package manager.
  • [1] - The yum package repositories builder.
  • [2] - The Sugar Labs activities library.
  • General understanding of the Linux system plumbing infrastructure: kernel,

udev, dbus, DeviceKit, NetworkManager, Xorg...

  • Flashing laptops and debugging any problems
  • Interaction with the Sugar and OLPC community to solve issues and minimize our divergence from the official builds.