Puritan: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 4: | Line 4: | ||
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]]. |
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 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. |
||
Line 10: | Line 12: | ||
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. |
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: |
The raw dependencies of puritan consist of: |
||
Line 16: | Line 20: | ||
Mock is used to construct a build root with packages described by the compilation's <tt>bootstrap</tt> and <tt>dependencies</tt> files. |
Mock is used to construct a build root with packages described by the compilation's <tt>bootstrap</tt> and <tt>dependencies</tt> files. |
||
=== On Fedora === |
|||
The Puritan UI is invoked by installing a [http://dev.laptop.org/~mstone/releases/RPMS/noarch/ puritan rpm] (built from the [http://dev.laptop.org/git?p=users/mstone/puritan;a=shortlog;h=ui ui branch]) |
The Puritan UI is invoked by installing a [http://dev.laptop.org/~mstone/releases/RPMS/noarch/ puritan rpm] (built from the [http://dev.laptop.org/git?p=users/mstone/puritan;a=shortlog;h=ui ui branch]) |
||
Line 24: | Line 30: | ||
then by checking out a 'puritan compilation' to be run by <tt>/usr/bin/puritan</tt> |
then by checking out a 'puritan compilation' to be run by <tt>/usr/bin/puritan</tt> |
||
$(git clone git://dev.laptop.org/users/mstone/puritan compilation; cd compilation; git checkout devel_jffs2) |
$(git clone git://dev.laptop.org/users/mstone/puritan compilation; cd compilation; git checkout origin/devel_jffs2) |
||
puritan ./compilation HEAD ./results |
puritan ./compilation HEAD ./results |
||
=== On Debian === |
|||
sudo apt-get install mock git-core |
|||
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 puritan ./compilation HEAD ./results |
|||
== Help Out == |
|||
Finally, please help improve puritan by |
Finally, please help improve puritan by |
||
Revision as of 06:23, 7 March 2008
Template:Build system Source code. README.
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
Mock is used to construct a build root with packages described by the compilation's bootstrap and dependencies files.
On Fedora
The Puritan UI is invoked by installing a puritan rpm (built from the ui branch)
wget -O puritan.rpm http://teach.laptop.org/~mstone/releases/RPMS/noarch/puritan-0.2-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 ./compilation HEAD ./results
On Debian
sudo apt-get install mock git-core 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 puritan ./compilation HEAD ./results
Help Out
Finally, please help improve puritan by
- making it work on your platform
- fixing 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 ...