2011-06-13 34 views
1

有沒有一種使用zc.buildout將SCons安裝成雞蛋的簡單方法?我最初的想法是,因爲它使用distutils,我將能夠使用zc.recipe.egg來安裝它,並且認爲該egg將以SCons腳本轉到$ {buildout:directory}/bin的方式進行設置, SCons被添加到PYTHONPATH中。SCONS作爲zc.buildout中的一個雞蛋

[buildout] 
parts = 
    python 

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

不幸的是,我不認爲SCons的setup.py是這樣寫的,它可以和zc.recipe.egg一起使用。我結束了:

  1. $ {擴建:目錄} /eggs/scons-2.0.1-py2.6.egg/
  2. $ {擴建:目錄} /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 :目錄} /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/ 

不確定是否要繼續這個方向。

回答

3

哦,我的。我查看了SCons的setup.py,這有點混亂。它甚至固定在Mac上安裝時只安裝在/usr/local。它當然不適合用於setuptools(因此也適用於zc.buildout)。

您可以使用zc.recipe.command${buildout:executable} setup.py運行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,不要創建一個雞蛋,而只需下載tarball,手動運行setup.py,然後符號鏈接有趣的部分。

+0

這對於我需要做的事已經足夠了。謝謝! – Doran 2011-06-14 14:05:56