Puritan

From OLPC
Revision as of 19:24, 26 May 2008 by Mstone (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Puritan

Source code. README. Latest version: 0.4.

Puritan is a disk-image compiler which converts 'source code': packages, activities, and 'hacks' into installable disk images. It consists of two pieces: a UI and a family of compilations. The compilations are simple Python programs which populate a filesystem with the materials you supply, then wrap it up with a bow-tie. The UI runs the compilations in a controlled environment. A convenient side effect of this architecture is that puritan's only installation dependencies are

 git-core python-2.5 mock

(Mock is used to construct a build root with packages described by the compilation's [1] and [2] files).


On Fedora

The Puritan UI is invoked by installing a puritan rpm (built from the ui branch)

 wget -O puritan.rpm http://dev.laptop.org/~mstone/releases/RPMS/puritan-0.4-1.olpc2.noarch.rpm
 sudo rpm -Uvh puritan.rpm

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 -v ./compilation HEAD ./results build

If you want to download a set of RPMs for post-processing (for example, because you want to layer a risky feature on top of them), you can also run

 puritan -v ./compilation HEAD ./results download

Your results should appear in ./results.


On Debian

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


Help Out

Finally, please help improve puritan by

  • making puritan work on your platform
  • 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 ...