Puritan

From OLPC
Revision as of 17:08, 15 December 2008 by Mstone (talk | contribs)
Jump to: navigation, search

Puritan

Source code. README. Latest version: 0.4.

Puritan is a disk-image compiler which converts source material including packages, activities, and hacks into installable disk images. It consists of two pieces: a UI and a family of compilations (example). The compilations are simple Python programs which populate a filesystem with the materials you supply, then format it for distribution. The UI runs the compilations in a controlled environment created by Mock and configured according to the compilation's bootstrap and dependencies files.

Puritan was developed as a replacement for Pilgrim but was never officially adopted by OLPC. For details on the active OLPC build system, see Build system.

Principles

Puritan is based on several fundamental principles.

  1. Tools should be usable for both decentralized and centralized patterns of development.
  2. People **will** want to make unpackaged changes to their builds.
  3. Caching matters.
  4. Interactive development matters.
  5. Build reproducibility matters.
  6. Error-detection, handling, and cleanup matter.
  7. People working on the OLPC build system will become accustomed to git and python.


Fedora Instructions

NB: These instructions refer to out-of-date code; for the newest code, check out the 'ui', '767', and 'dev' branches of puritan (anon. clone)

The Puritan UI is invoked by yum-installing puritan, then by checking out a 'puritan compilation' to be run by /usr/bin/puritan

 $(git clone git://dev.laptop.org/users/mstone/puritan compilation; cd compilation; git checkout origin/devel_jffs2)
 puritan     # read help
 sudo puritan -v ./compilation HEAD ./results build

Some puritan compilations now feature both 'download' operations:

 sudo puritan -v ./compilation HEAD ./results download

and 'interactive' error-handling:

 sudo puritan -v ./compilation HEAD ./results build -- -i
Debian Instructions

Note: yum seems to be broken on Debian at the moment, which is preventing this recipe from working. :( --Michael Stone 03:02, 7 March 2008 (EST)

 sudo apt-get install mock git-core
 sudo usermod -a -G mock $USERNAME
 git clone git://dev.laptop.org/users/mstone/puritan ui
 (git clone git://dev.laptop.org/users/mstone/puritan compilation; cd compilation; git checkout origin/devel_jffs2)
 /usr/bin/python2.5 ui/puritan/main.py ./compilation HEAD ./results build

Note: the last step fails because /etc/mock/fedora-9-i386.cfg is not present in Debian's mock package 0.9.7-2, workaround is to create it from http://teach.laptop.org/~mstone/fedora-9-i386.cfg

Help Out

Finally, please help improve puritan by:

  • Making puritan work on your platform - it's only dependencies are python2.5, git-core, and mock!
  • Maintaining the devel_ext3 compilation
  • Adding some reasonable package or buildroot caching system so that it runs faster without impairing build repeatability
  • Improving the UI with commands for manipulating compilations, or for diffing builds, or for profiling compilations, or ...