zc.recipe.cmmi 1.0.2
ZC Buildout recipe for configure/make/make install
Latest Version: 1.3.1
The configure-make-make-install recipe automates installation of configure-based source distribution into buildouts.
Release History
1.0.1 (2006-11-22)
Bugs Fixed
Added missing zip_safe flag.
1.0 (2006-11-22)
Initial release.
Detailed Documentation
We have an archive with a demo foo tar ball:
>>> ls(distros) - foo.tgz
Let's update a sample buildout to installs it:
>>> write('buildout.cfg',
... """
... [buildout]
... parts = foo
...
... [foo]
... recipe = zc.recipe.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.
configuring foo --prefix=/sample-buildout/parts/foo
echo building foo
building foo
echo installing foo
installing foo
The recipe also creates the parts directory:
>>> ls(sample_buildout, 'parts') d foo
If 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 = zc.recipe.cmmi ... url = file://%s/foo.tgz ... extra_options = -a -b c ... """ % distros)>>> print system('bin/buildout'), Uninstalling foo. Installing foo. configuring foo --prefix=/sample-buildout/parts/foo -a -b c echo building foo building foo echo installing foo installing foo
The 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 = zc.recipe.cmmi ... url = file://%s/foo.tgz ... patch = ${buildout:directory}/patches/config.patch ... patch_options = -p0 ... """ % distros)>>> print system('bin/buildout'), Uninstalling foo. Installing foo. patching file configure configuring foo patched --prefix=/sample_buildout/parts/foo echo building foo patched building foo patched echo installing foo patched installing foo patched
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| zc.recipe.cmmi-1.0.2-py2.4.egg (md5) | Python Egg | 2.4 | 2007-06-03 17:10:50 | 9KB | 722 |
- Author: Jim Fulton <jim at zope com>
- Home Page: http://www.python.org/pypi/zc.recipe.cmmi
- Keywords: zope3
- License: ZPL 2.1
- Package Index Owner: J1m, batlogg, fdrake, tarek, jrush, tseaver, wosc, tlotze
- Package Index Maintainer: batlogg, fdrake
- DOAP record: zc.recipe.cmmi-1.0.2.xml
Log in to rate this package.
