Sphinxの実行環境をつくる

シンプルに環境を作る

buildout.cfg:

[buildout]
parts = app docutils

versions = versions

[app]
recipe = z3c.recipe.scripts
eggs =
	sphinx
	sphinxcontrib-docxbuilder
	sphinxcontrib-blockdiag
	seqdiag
	sphinxjp.themes.s6
	sphinxjp.themes.htmlslide
	sphinxjp.themes.sphinxjp
interpreter = sphinx-py

[docutils]
recipe = zc.recipe.egg:scripts
eggs =
	docutils

[versions]
#lxml = 2.2.8

実行すると以下のようになります:

$ python bootstrap.py -d init
$ bin/buildout

$ ls bin
bin/buildout          bin/sphinx-build
bin/seqdiag           bin/sphinx-py
bin/sphinx-autogen    bin/sphinx-quickstart

$ bin/sphinx-quickstart
Welcome to the Sphinx 1.0.7 quickstart utility.

バージョンが勝手に上がらないように制御する

buildoutで使用するeggのバージョンを指定する方法として、 version= オプションがあります。 [buildout] セクションに versions=セクション名 という風に、セクション名を指定して、そのセクションに eggパッケージ名とバージョンを列挙します。たとえば以下のように書きます:

buildout.cfg:

[buildout]
parts = ....
versions = versions

[versions]
spam = 1.0
ham = 0.9

しかし多くの依存パッケージがある場合にこれを手動で書いていくのは大変なので、 buildout拡張 buildout.dumppickedversions を使用します。buildout拡張は extensions= オプションを使って以下のように書きます:

[buildout]
parts = app docutils
versions = versions

extensions = buildout.dumppickedversions
dump-picked-versions-file = versions.cfg

extends = versions.cfg

これは、extensions=でdumppickedversionsを使うことを指定し、さらに dumppickedversionsが参照するオプション dump-picked-versions-file= にファイル名を指定しています。これでbuiltoutを実行したときにversions.cfg に各eggのバージョンを書き出してくれるようになります。

書き出されたversions.cfgを extends= に指定することで、内容を読み込んで 利用しているので、これ以降はbuildout実行時に勝手に利用パッケージのバージョンが 更新されることは無くなります。

最終的にbuildout.cfgは以下のようになります。

buildout.cfg:

[buildout]
parts = app docutils
versions = versions

extensions = buildout.dumppickedversions
dump-picked-versions-file = versions.cfg

extends = versions.cfg


[app]
recipe = z3c.recipe.scripts
eggs =
	sphinx
	sphinxcontrib-docxbuilder
	sphinxcontrib-blockdiag
	seqdiag
	sphinxjp.themes.s6
	sphinxjp.themes.htmlslide
	sphinxjp.themes.sphinxjp
interpreter = sphinx-py

[docutils]
recipe = zc.recipe.egg:scripts
eggs =
	docutils

[versions]
#lxml = 2.2.8

実行すると以下のようになります:

$ touch version.cfg
$ bin/buildout
Updating app.
Updating docutils.
*********************************************
Overwriting versions.cfg
*********************************************

$ cat versions.cfg
[versions]
jinja2 = 2.5.5
pil = 1.1.7
pygments = 1.4
sphinx = 1.0.7

Sphinxのtrunk版を利用する

buildout.cfg:

[buildout]
parts = app docutils
versions = versions

extensions = buildout.dumppickedversions
dump-picked-versions-file = versions.cfg

extends = versions.cfg


[app]
recipe = z3c.recipe.scripts
eggs =
	sphinx
	sphinxcontrib-docxbuilder
	sphinxcontrib-blockdiag
	seqdiag
	sphinxjp.themes.s6
	sphinxjp.themes.htmlslide
	sphinxjp.themes.sphinxjp
interpreter = sphinx-py

[docutils]
recipe = zc.recipe.egg:scripts
eggs =
	docutils

[versions]
#lxml = 2.2.8

trunk.cfg

[buildout]
extends = buildout.cfg

extensions += gp.vcsdevelop
vcs-extend-develop = hg+http://bitbucket.org/birkenfeld/sphinx/@tip#egg=sphinx

実行すると以下のようになります:

$ bin/buildout -c trunk.cfg
$ bin/sphinx-quickstart
Welcome to the Sphinx 1.1pre/ce4bb37a1409 quickstart utility.