Puritan: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{Software}} |
{{Software}} |
||
=== Puritan === |
=== Puritan === |
||
[http://dev.laptop.org/git/users/mstone/puritan Source code]. [http://dev.laptop.org/git?p=users/mstone/puritan;f=README;hb=ui README]. |
[http://dev.laptop.org/git/users/mstone/puritan Source code]. [http://dev.laptop.org/git?p=users/mstone/puritan;f=README;hb=ui 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 |
|||
Puritan is an MIT-licensed disk-image compiler for constructing OLPC disk images from sources including RPM repositories and build-stream descriptions. It is loosely derived from a similar tool, [[Pilgrim]], written by David Zeuthen, John Palmieri, C. Scott Ananian, Dennis Gilmore, and Michael Stone and is being considered to replace [[Pilgrim]], along with [[livecd-tools]]. |
|||
==== Design ==== |
|||
In the puritan framework, each and every compilation (build configuration) is described by a git commit and can be authoritatively identified by a git tag pointing to that commit. Relationships between compilations are recorded in the git version graph. |
|||
In the present layout, changes that are suitable for all builds should be included in the 'compiler' puritan branch. Build-specific configuration and instructions should go in other branches and these other branches should be regularly rebased on top of 'compiler' in order to produce highly readable history graphs. |
|||
If desired, the RPM and activity sources for each build can be archived in a separate git repository and can be strongly versioned along with the compilation that used them by including the sources as a git submodule in the compilation commit. |
|||
==== Use ==== |
|||
The raw dependencies of puritan consist of: |
|||
git-core python-2.5 mock |
git-core python-2.5 mock |
||
Mock is used to construct a build root with packages described by the compilation's |
(Mock is used to construct a build root with packages described by the compilation's [http://dev.laptop.org/git?p=users/mstone/puritan;f=bootstrap;hb=devel_jffs2|bootstrap] and [http://dev.laptop.org/git?p=users/mstone/puritan;f=dependencies;hb=devel_jffs2|dependencies] files). |
||
Line 63: | Line 47: | ||
Finally, please help improve puritan by |
Finally, please help improve puritan by |
||
* making |
* 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 |
* 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 ... |
* improving the UI with commands for manipulating compilations, or for diffing builds, or for profiling compilations, or ... |
Revision as of 19:24, 26 May 2008
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 ...