1

zc.buildoutを使用してSConsをeggとしてインストールする簡単な方法はありますか?私の最初の考えは、distutilsを使用しているので、zc.recipe.eggを使用してインストールでき、SConsスクリプトが$ {buildout:directory}/binに移動するようにeggが設定されると考えていました。 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ディレクトリにコピーまたはリンクされている場合に機能します。

理想的には、これをeggとしてインストールして、グローバルなeggs-directoryを利用したいと思います。同じビルドツールのコピーをいくつか持ちたくありません。既存のレシピを使用してこの目標を達成することは可能ですか、それとも独自のレシピを作成する必要がありますか?


編集:sconsエントリポイントが作成されるように、個人用コピーを作成し、SConsのsetup.py引数を変更しました。私が行った唯一の変更:「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 に答える