1

有没有一种简单的方法可以使用 zc.buildout 将 SCons 安装为鸡蛋?我最初的想法是,由于它使用了 distutils,我可以使用 zc.recipe.egg 安装它,并认为可以将鸡蛋设置为 SCons 脚本转到 ${buildout:directory}/bin 和SCons 被添加到 PYTHONPATH 中。

[buildout]
parts = 
    python

[python]
recipe = zc.recipe.egg
interpreter = mython
eggs = 
    SCons == 2.0.1

不幸的是,我不认为 SCons 的 setup.py 的编写方式与 zc.recipe.egg 配合得很好。我最终得到:

  1. ${buildout:directory}/eggs/scons-2.0.1-py2.6.egg/
  2. ${buildout:directory}/eggs/scons-2.0.1-py2.6.egg/scons-2.0.1/
  3. ${buildout:directory}/eggs/scons-2.0.1-py2.6.egg/scons-2.0.1/SCons/
  4. ${buildout:directory}/eggs/scons-2.0.1-py2.6.egg/EGG-INFO/scripts/

如果 (2) 在 PYTHONPATH 上并且 (4) 的内容被复制或链接到 bin 目录,这将起作用。

理想情况下,我想将它安装为一个鸡蛋,以利用我的全局鸡蛋目录;我不想拥有同一个构建工具的多个副本。是否可以使用现有的食谱来实现这个目标,或者我应该编写自己的食谱?


编辑:我制作了个人副本并修改了 SCons 的 setup.py 参数,以便创建一个 scons 入口点。我所做的唯一更改:删除“cmdclass”,添加“entry_points”。

arguments = {
    'name'             : "scons",
 ...
    'scripts'          : scripts,
    'entry_points'     : {
            'console_scripts':
                ['scons = SCons.Script:main']
            }
}

这种作品。它给了我 bin/scons 中的 scons 脚本,但没有 sconsign、scons-time 或 scons.bat。我将它放在 /var/www/eggs 的 tar 中,并与 apache 一起提供。

[buildout]
parts = 
    python

[python]
recipe = zc.recipe.egg:scripts
interpreter = mython
eggs = 
    scons == 2.0.1
find-links = 
    http://localhost/eggs/

不确定我是否想继续朝这个方向发展。

4

1 回答 1

3

天啊。我查看了 SCons 的 setup.py,它有点乱。它甚至顽固地只在/usr/localMac 上安装时才安装。它当然不适合与 setuptools(以及 zc.buildout)一起使用。

您可以使用zc.recipe.command运行 setup.py 脚本${buildout:executable} setup.py并将其配置为安装在parts子目录中,然后使用单独的部分将所有脚本符号链接到bin/

[buildout]
parts = scons

[scons-download]
recipe = gocept.download
url = http://prdownloads.sourceforge.net/scons/scons-2.0.1.tar.gz
md5sum = beca648b894cdbf85383fffc79516d18

[scons-install]
recipe = plone.recipe.command
command = ${buildout:executable} ${scons-download:location}/setup.py install --prefix=${buildout:parts-directory}/scons-install
location = ${buildout:parts-directory}/scons-install

[scons]
recipe = cns.recipe.symlink
symlink =
    scons
    scons-time
    sconsign
symlink_base = ${scons-install:location}/bin
symlink_target = ${buildout:bin-directory}

因此,我们完全忽略了 setuptools,不构建 egg,而只是下载 tarball,setup.py手动运行,然后符号链接有趣的部分。

于 2011-06-14T09:51:11.927 回答