跨多个扩建重用相同的部分

时间:2011-05-24 16:34:54

标签: buildout

有没有办法在多个buldouts中重复使用部件?我有几个工具,我想添加到buildout中,不会在buildouts中改变。以下是一个示例案例:

  • 配置全局构建选项,例如download-cache =〜/ .buildout / downloads
  • 构建A需要cmake 2.8.4
  • 构建B需要cmake 2.8.4

执行此操作的一种方法是在每个配置中添加以下内容

[cmake]
recipe = zc.recipe.cmmi
url = http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

由于这不会在两个扩展中发生变化,因此如果可以设置类似于缓存鸡蛋的方式,则会节省更多磁盘空间。但是,我无法找到一个很好的方法来做到这一点。我不认为buildout的设计考虑到了这一点。


思路:

  • 是否可以将cmake tarball重新分发为python egg?也许为不同的平台编译tarball并在bin中重新分配二进制文件?

  • 另一个想法是有一个可以处理这种行为的食谱。也许是一个包装其他配方和检查的配方,以查看该部件是否全局安装。也许它看起来像这样:

 
[cmake]
recipe = my.recipe.reusuableparts
real-recipe = zc.recipe.cmmi
url = http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

1 个答案:

答案 0 :(得分:1)

zc.recipe.cmmi配方直接支持用例,但它没有记录(鸡蛋确实包含full documentation)。只需将shared选项设置为您选择的目录:

[cmake]
recipe = zc.recipe.cmmi
url = http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
shared = ~/shared-buildout-cmmi-builds/cmake/

或只是将其设置为True以将其放入您的buildout下载缓存中:

[cmake]
recipe = zc.recipe.cmmi
url = http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
shared = True

由个人配方来支持这种共享行为。我不认为包装配方会很容易看到,因为buildout配方几乎可以做任何事情。