用于bdb configure/make/make install的zc构建方法
ro.bdb.cmmi的Python项目详细描述
我们有一个带有演示足球的档案:
>>> ls(distros) - foo.tgz
让我们更新一个示例构建来安装它:
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = foo ... ... [foo] ... recipe = ro.bdb.cmmi ... url = file://%s/foo.tgz ... """ % distros)
我们使用url选项指定存档的位置。
如果运行构建,则运行存档中的配置脚本。 它会创建一个make文件,该文件也会运行:
>>> 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 foo
配方还会创建零件目录:
>>> ls(sample_buildout, 'parts') d foo
如果我们再次运行buildout,将调用update方法,它 什么也不做:
>>> print system('bin/buildout'), Updating foo.
您可以提供额外的配置选项:
>>> 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 foo
配方设置了位置选项,其他人可以读取 配方,到安装部件的位置:
>>> 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 ...
有时在构建包之前需要修补源代码。 您可以指定要应用的修补程序的名称和(可选)修补程序选项:
首先,让我们编写一个补丁文件:
>>> 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)
现在我们创建一个buildout.cfg文件。注意:如果没有补丁选项 默认情况下,将追加-p0。
>>> 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 patched
下载缓存
配方支持以同样的方式使用下载缓存 作为zc.buildout。有关详细信息,请参见downloadcache.txt