Package: ro.bdb.cmmi
We have an archive with a demo foo tar ball:>>> ls(distros)
-  foo.tgzLet’s update a sample buildout to installs it:>>> write('buildout.cfg',
... """
... [buildout]
... parts = foo
...
... [foo]
... recipe = ro.bdb.cmmi
... url = file://%s/foo.tgz
... """ % distros)We used the url option to specify the location of the archive.If we run the buildout, the configure script in the archive is run.
It creates a make file which is also run:>>> print system('bin/buildout'),
Installing foo.
foo: Downloading .../distros/foo.tgz
foo: Unpacking and configuring
configuring foo --prefix=/sample-buildout/parts/foo
echo building foo
building foo
echo installing foo
installing fooThe recipe also creates the parts directory:>>> ls(sample_buildout, 'parts')
d  fooIf we run the buildout again, the update method will be called, which
does nothing:>>> print system('bin/buildout'),
Updating foo.You can supply extra configure options:>>> write('buildout.cfg',
... """
... [buildout]
... parts = foo
...
... [foo]
... recipe = ro.bdb.cmmi
... url = file://%s/foo.tgz
... extra_options = -a -b c
... """ % distros)>>> print system('bin/buildout'),
Uninstalling foo.
Installing foo.
foo: Downloading .../distros/foo.tgz
foo: Unpacking and configuring
configuring foo --prefix=/sample-buildout/parts/foo -a -b c
echo building foo
building foo
echo installing foo
installing fooThe recipe sets the location option, which can be read by other
recipes, to the location where the part is installed:>>> cat('.installed.cfg')
... # doctest: +ELLIPSIS
[buildout]
installed_develop_eggs =
parts = foo
<BLANKLINE>
[foo]
__buildout_installed__ = /sample-buildout/parts/foo
...
extra_options = -a -b c
location = /sample-buildout/parts/foo
...Sometimes it’s necessary to patch the sources before building a package.
You can specify the name of the patch to apply and (optional) patch options:First of all let’s write a patchfile:>>> import sys
>>> mkdir('patches')
>>> write('patches/config.patch',
... """--- configure
... +++ /dev/null
... @@ -1,13 +1,13 @@
...  #!%s
...  import sys
... -print "configuring foo", ' '.join(sys.argv[1:])
... +print "configuring foo patched", ' '.join(sys.argv[1:])
...
...  Makefile_template = '''
...  all:
... -\techo building foo
... +\techo building foo patched
...
...  install:
... -\techo installing foo
... +\techo installing foo patched
...  '''
...
...  open('Makefile', 'w').write(Makefile_template)
...
... """ % sys.executable)Now let’s create a buildout.cfg file. Note: If no patch option is beeing
passed, -p0 is appended by default.>>> write('buildout.cfg',
... """
... [buildout]
... parts = foo
...
... [foo]
... recipe = ro.bdb.cmmi
... url = file://%s/foo.tgz
... patch = ${buildout:directory}/patches/config.patch
... patch_options = -p0
... """ % distros)>>> print system('bin/buildout'),
Uninstalling foo.
Installing foo.
foo: Downloading .../distros/foo.tgz
foo: Unpacking and configuring
patching file configure
configuring foo patched --prefix=/sample_buildout/parts/foo
echo building foo patched
building foo patched
echo installing foo patched
installing foo patchedDownload CacheThe recipe supports use of a download cache in the same way
as zc.buildout. See downloadcache.txt for detailsDownload