Puritan/Configuration
From OLPC
Puritan's compilations are highly and easily configurable by means of small modifications to files and directories.
Contents |
[edit] Choosing stages and products
Current compilations' main.py file contain a section like
tasks = dict(
build = [
'bootstrap',
['make_chroot', 'install_pkgs', 'install_hacks'],
'final_install',
'produce_tree',
'produce_jffs2',
'produce_tar',
'publish',
],
download = ['make_chroot', 'download_pkgs'],
run = ['run'],
)
By adding and removing entries to this datastructure, builders may customize which compilation stages will be performed in response to a request to 'build' or to 'download' or to 'run' the compiler. (New subcommands can be added in the obvious fashion.)
[edit] Choosing package repos
Current compilations' bootstrap.py contains lines like
smart(['channel', '-y', '--add', '8.2-fedora', 'type=rpm-md', 'baseurl=http://mock.laptop.org/repos/koji.dist-olpc3-testing/'])
which direct the smart package manager to pull packages from one of the several yum-format RPM repository located at mock.laptop.org/repos.
(The smart package manager is package- and repository-format agnostic and can process many common formats including apt-dpkg and yum-rpm.)
[edit] Choosing packages
Current compilations' package manifests are configured by means of the contents of the config/packages directory. In order to add or remove packages from the manifest, simply touch or remove the appropriately named files in this directory.
[edit] Caching
Puritan uses technologies which can be easily configured to use caches of data. Three ways to improve puritan's caching behavior include:
- Using mock buildroot caching to conserve bandwidth when preparing buildroots.
- Configuring smart to use an http caching proxy in the compilation's bootstrap.py file.
- Configuring smart to pull packages from a (manually generated) local package repository (rather than from the internet), also via bootstrap.py.
NB: The most recent puritan compilation automatically caches packages it downloads in a directory named 'smart/packages' in the compilation.

