Aktualisierung und Versionierung
Aktualisierung
Damit Änderungen der buildout.cfg wirksam werden, müssen wir ./bin/buildout erneut aufrufen. Diese Aktualisierung kann häufig beschleunigt werden, indem buildout im non-updating-Modus aufgerufen wird, also:
$ ./bin/buildout -N
Eine Übersicht über alle für buildout verfügbaren Optionen erhalten Sie mit:
$ ./bin/buildout -h
Versionen festschreiben
Buildout verwendet üblicherweise immer die neueste Version eines Eggs. Sollen jedoch nur finale Versionen verwendet werden, kann im buildout-Abschnitt folgendes angegeben werden:
prefer-final = true
Buildout aktualisiert üblicherweise immer auf die neueste Version. Dies unterbleibt jedoch, wenn im buildout-Abschnitt folgendes angegeben wird:
newest = false
In den oben angegebenen Beispielen wurde gezeigt, wie sich die Versionen für Eggs, Recipes und Products fest vorgeben lassen.
Eine Liste der noch nicht festgeschriebenen Versionen erhalten wir mit:
$ ./bin/buildout -Nv | sed -ne 's/^Picked: //p' | sort | uniq
Für Plone 3.2.1 werden die für Plone 3.2.1 benötigten Versionen festgeschrieben indem in der buildout.cfg-Datei folgendes angegeben wurde:
[buildout] … extends = http://dist.plone.org/release/3.2.1/versions.cfg versions = versions
In der versions.cfg-Datei werden dann im [versions]-Abschnitt die von Plone benötigten Eggs in definierten Versionen angegeben:
[versions] # Buildout infrastructure buildout.eggtractor = 0.6 plone.recipe.zope2install = 2.6 plone.recipe.zope2instance = 2.7 setuptools = 0.6c9 zc.buildout = 1.1.1 zc.recipe.egg = 1.1.0 zope2-url = http://www.zope.org/Products/Zope/2.10.6/Zope-2.10.6-final.tgz # Plone release Plone = 3.2.1 Products.ATContentTypes = 1.2.7 Products.ATReferenceBrowserWidget = 2.0.3
Falls weitere Eggs festgeschrieben werden sollen, kann nicht in der buildout.cfg-Datei ein weiterer versions-Abschnitt angegeben werden, es kann jedoch in extends eine eigene versions.cfg-Datei angegeben werden, die ebenfalls wieder einen [versions]-Abschnitt enthält. So kann z.B. die buildout.cfg-Datei folgendermaßen aussehen:
[buildout]
…
extends =
versions.cfg
http://dist.plone.org/release/3.2.1/versions.cfg
versions = versions
Und in der versions.cfg-Datei werden dann weitere Versionen festgeschrieben:
[versions] elementtree = 1.2.7-20070827-preview plone.recipe.distros = 1.3 plone.reload = 0.9 python-openid = 2.2.1
Plone 3.1
Sollen spezifische, in einem Rezept angegebene Versionen überschrieben werden, wird zunächst im buildout-Abschnitt mit der Option versions auf einen Abschnitt verwiesen, der die zu verwendenden Versionen enthält:
[buildout] … versions = release1 [release1] plone.locking = 1.0.5
Anschließend muss das Egg noch im [plone]-Abschnitt angegeben werden, um die Festlegung der Version für dieses Produkt in plone.recipe.plone aufzuheben:
[plone]
recipe = plone.recipe.plone
eggs =
plone.locking
Siehe auch: Repeatable buildouts: controlling eggs used
buildout.dumppickedversions
buildout.dumppickedversions ist eine buildout-extension, die alle Eggs, deren Versionen bisher nicht festgeschrieben wurden, in einer versions.cfg-Datei festschreibt.
Subversion
Auch Versionen von Produkten aus einem Subversion-Repository lassen sich festschreiben:
[buildout]
…
productcheckouts
[productcheckouts]
recipe = infrae.subversion
urls =
https://svn.plone.org/svn/collective/eXtremeManagement/tags/1.5.2/ eXtremeManagement
http://getpaid.googlecode.com/svn/trunk/products/PloneGetPaid@1132 PloneGetPaid
[instance]
…
products =
…
${productcheckouts:location}
Darüberhinaus erlaubt infrae.subversion auch, ausgecheckte Verzeichnisse als development eggs in das Buildout-Pojekt einzubinden.
- location
- gibt das Zielverzeichnis an, sodass z.B. auch direkt in src heruntergeladen werden kann.
- as_eggs
- Mit dem Wert true werden die Eggs als development eggs installiert.
So kann die Buildout-Konfiguration z.B. so aussehen:
[buildout]
…
ourpackages
instance
…
[ourpackages]
recipe = infrae.subversion
urls =
https://dev.veit-schiele.de/svn/vs/vs.policy/trunk vs.policy
https://dev.veit-schiele.de/svn/vs/vs.theme/trunk vs.theme
location = src
as_eggs = true
[instance]
…
eggs =
${buildout:eggs}
${plone:eggs}
${ourpackages:eggs}

