Difference between revisions of "Dextrose/Building"

From Sugar Labs
Jump to navigation Jump to search
m (remove signing instruction)
Line 6: Line 6:
 
== Build host requirements ==
 
== Build host requirements ==
  
The olpc-os-builder machinery has been used successfully with systems running Fedora 11 i386 through Fedora 13 x86_64.
+
The olpc-os-builder machinery has been used successfully with systems running '''Fedora 11 i386''' through '''Fedora 13 x86_64'''. What the host system runs shouldn't matter much, because all the work is being done in a chroot environment, but olpc-os-builder is known to fail on Ubuntu due to a missing dependency.
  
What the host system runs shouldn't matter much, because all the work is being done in a chroot environment, but olpc-os-builder is known to fail on Ubuntu due to a missing dependency.
+
You will also need a lot of bandwidth to download about '''700MB''' of rpm packages and Sugar activity bundles.
  
  
Line 17: Line 17:
 
   git clone git://git.sugarlabs.org/dextrose/mainline.git
 
   git clone git://git.sugarlabs.org/dextrose/mainline.git
  
* One time preparation
+
* One time preparation:
  
 
   yum upgrade
 
   yum upgrade
   yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate
+
   yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip
 
   make
 
   make
  
 
* Build:
 
* Build:
  
   time sudo ./osbuilder.py examples/f11-0.88-xo1-py.ini
+
   time sudo ./osbuilder.py examples/dextrose2-xo1.ini
  
 
* Wait 15 minutes
 
* Wait 15 minutes
Line 70: Line 70:
 
  git fetch olpc
 
  git fetch olpc
 
  git log olpc/master
 
  git log olpc/master
 +
 +
== Building custom RPMs ==
 +
 +
* Go to the <tt>rpms/PACKAGENAME</tt> in the dextrose tree
 +
 +
* Edit the spec file (remember to bump the revision)
 +
 +
* <tt>make i586</tt>
 +
 +
* Wait for rpmbuild to do its job
 +
 +
* Now upload this 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 <tt>make uploadrpm</tt> which points at the Dextrose repository.
 +
Edit <tt>rpms/common/Makefile.common</tt> or <tt>rpms/common/uploadrpm</tt> to retarget this rule to your
 +
repository.
 +
  
 
== Building custom OLPC kernels ==
 
== Building custom OLPC kernels ==

Revision as of 18:37, 23 August 2010

Build system

We use olpc-os-builder, a tool used by OLPC to create official and customized system images. Our version contains local customizations specific to Dextrose and some patches that should be upstreamed.

Build host requirements

The olpc-os-builder machinery has been used successfully with systems running Fedora 11 i386 through Fedora 13 x86_64. What the host system runs shouldn't matter much, because all the work is being done in a chroot environment, but olpc-os-builder is known to fail on Ubuntu due to a missing dependency.

You will also need a lot of bandwidth to download about 700MB of rpm packages and Sugar activity bundles.


How to create a build

  • Checkout our local tree:
 git clone git://git.sugarlabs.org/dextrose/mainline.git
  • One time preparation:
 yum upgrade
 yum install libtomcrypt-devel bitfrost make gcc mtd-utils python-imgcreate zip unzip
 make
  • Build:
 time sudo ./osbuilder.py examples/dextrose2-xo1.ini
  • Wait 15 minutes
  • Serve hot

Publishing the images

Signed builds should be published only if they correctly implement the OLPC anti-theft system). Signing does not have anything to do with quality or endorsement (i.e. signed builds are not necessarily bug-free or supported).


Customizing the build

The topic of is too vast to discuss in detail here. Start by reading README in the olpc-os-builder tree. Then, as needed, read the various README files contained in the modules directory.

Being a Build Master involves knowledge of many workflows, including:

  • Dealing with yum and rpm.
  • Creating yum package repositories with [1].
  • Uploading activities to [2].
  • 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.

Upstream

Our upstream code comes from dev.laptop.org:

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

Building custom RPMs

  • Go to the rpms/PACKAGENAME in the dextrose tree
  • Edit the spec file (remember to bump the revision)
  • make i586
  • Wait for rpmbuild to do its job
  • Now upload this 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 OLPC kernels

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