Bookmark and Share
Document Actions

Estendere i buildout
medio

Utilizzare l'opzione extend che ci permette maggiore flessibilità nella creazione dei nostri buildout.

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
by Maurizio Lupo last modified 2008-12-30 18:27
 

Supporto

Ottieni un
aiuto veloce e mirato sul forum, gratis!

partecipa al forum

 

Segui le icone

 

Livelli di difficoltà

livello guruSolo per i "guru"!
livello avanzatoPer configuratori e sviluppatori
livello medioPer chi ha già familiarità
livello basePer tutti!

 

I video

video

Il documento è supportato da un video!