Estendere i buildout
medio
La funzione extend ci permette di importare la configurazione di un buildout all'interno di un altro.
Ad esempio:
[buildout] extends = base.cfg devel_tools.cfg . . .
Questo file di buildout eredita tutte le opzioni dei file base.cfg e devel_tools.cfg
E' possibile aggiungere, rimuovere o sostituire delle opzioni.
- Rimuovo le opzioni b1 e b2:
. . . option -= b1 b2 . . .
- Aggiungo l'opzione b3:
. . . option += b3 . . .
- Sostituisco l'opzione b4:
. . . option = b4 . . .
Non è obbligatorio specificare le varie "ricette" nella sezione parts in quanto quelle non presenti saranno eseguite prima delle altre:
[buildout] parts = ricetta1 . . . [ricetta1] . . . [ricetta2] . . .
In questo caso verrà eseguita prima la ricetta2 e poi la ricetta1.
E' possibile inoltre estendere dei buildout a loro volta estesi da altri buildout.
Tanto per fare un esempio concreto si può partire da buildout di default ed estenderlo con common.cfg che raccoglie gli strumenti comuni:
[buildout] extends = buildout.cfg extensions = buildout.eggtractor newest = false # Aggiungo linguaplone eggs += Products.LinguaPlone [plone] #sostituisco la versione di plone recipe = plone.recipe.plone==3.1.6 [instance] zcml += Products.LinguaPlone
A sua volta posso estendere questo template con devel.cfg che contiene alcuni strumenti per lo sviluppo:
[buildout]
extends =
common.cfg
newest = true
eggs +=
plone.reload
[instance]
zcml +=
plone.reload
[enablesettrace]
recipe = plone.recipe.bundlecheckout
url = svn://svn.zope.org/repos/main/Products.enablesettrace/trunk
subfolder = enablesettrace
[zopeprofiler]
recipe = plone.recipe.distros
urls = http://www.dieter.handshake.de/pyprojects/zope/ZopeProfiler.tgz
[deadlockdebugger]
recipe = plone.recipe.bundlecheckout
url = http://svn.nuxeo.org/pub/Zope2/DeadlockDebugger/trunk
subfolder = DeadlockDebugger
[ipzope]
recipe = zc.recipe.egg
eggs =
ipython
${instance:eggs}
initialization =
import sys, os
os.environ["SOFTWARE_HOME"] = "${zope2:location}/lib/python"
os.environ["INSTANCE_HOME"] = "${instance:location}"
sys.argv[1:1] = "-p zope".split()
extra-paths = ${zope2:location}/lib/python
scripts = ipython=ipzope
Infine posso creare un buildout con tutto il necessario per il deploy che estenda common.cfg
[buildout]
extends =
common.cfg
[deploymentproducts]
recipe = plone.recipe.distros
urls =
http://plone.org/products/cachefu/releases/1.1/CacheFu-1.1.tgz
nested-packages =
CacheFu-1.1.tgz
version-suffix-packages =
[zeoserver]
recipe = plone.recipe.zope2zeoserver
zope2-location = ${zope2:location}
zeo-address = 8100
[primary]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
zeo-client = true
zeo-address = 8100
zodb-cache-size = 5000
zeo-client-cache-size = 300MB
user = admin:admin
http-address = 8080
debug-mode = off
verbose-security = off
eggs =
${plone:eggs}
${buildout:eggs}
zcml =
products =
${buildout:directory}/products
${productdistros:location}
${deploymentproducts:location}
${plone:products}
[secondary]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
zeo-client = true
zeo-address = 8100
zodb-cache-size = 5000
zeo-client-cache-size = 300MB
user = ${primary:user}
http-address = 8081
debug-mode = on
verbose-security = on
eggs = ${primary:eggs}
zcml = ${primary:zcml}
products = ${primary:products}
zope-conf-additional =
zserver-threads 1
[varnish-build]
recipe = plone.recipe.varnish:build
url = http://puzzle.dl.sourceforge.net/sourceforge/varnish/varnish-1.0.4.tar.gz
[varnish-instance]
recipe = plone.recipe.varnish:instance
bind = 127.0.0.1:8082
backends = 127.0.0.1:8080
cache-size = 1G
[backup]
recipe = collective.recipe.backup
