Buildout gives you a way to manage, build and deploy your Python project with ease. Large Python projects such as Plone use it to distribute repeatable development environments. Buildout allows you to easily get up and running with your project versus the traditional method of installing all the dependancies and manually configuring your applications instance for each environment. The buildout community is rapidly growing with a large repository of recipes that allow you to extend it's functionality. This talk will show you the basics of using buildout and how to make it a vital part of your project's life cycle.
9. Syntax
[buildout]
parts = zope2 instance
# copied from dist.plone.org/release
extends = plone-versions.cfg
versions = versions
[zope2]
recipe = plone.recipe.zope2install
url = ${versions:zope2-url}
fake-zope-eggs = True
additional-fake-eggs = ZODB3 ZConfig
[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
eggs = Plone
s ixf eet up. c om/ i mme r se
10. Advanced Syntax
Variable Substitution
${part:option}
${zope2:location}
${buildout:directory}
option = ${buildout:directory}/somefolder
Option Addition and Removal
options = foo bar
options += baz
options -= foo
s ixf eet up. c om/ i mme r se
15. [plonesite]
recipe = collective.recipe.plonesite
instance = instance
zeoserver = zeoserver
site-id = Plone
admin-user = admin
products =
profiles-initial = my.package:initial
profiles = my.package:default
s ixf eet up. c om/ i mme r se
16. [omelette]
recipe = collective.recipe.omelette
eggs = ${instance:eggs}
ignore-develop = True
ignores = setuptools
# uncomment the line below to have the whole
# zope stack available in the omelette
packages =
${zope2:location}/lib/python zope2
s ixf eet up. c om/ i mme r se
17. # add the /opt path for local dev so that the egg
# can find mysql_config
[sql-env]
PATH = %(PATH)s:/opt/local/lib/mysql5/bin/:/opt/local/lib/mysql/bin/
[MySQL-python]
recipe = zc.recipe.egg:custom
egg = MySQL-python
environment = sql-env
s ixf eet up. c om/ i mme r se
18. Roll Your Own
$ easy_install ZopeSkel
$ paster create --list-templates
Available templates:
...
recipe: A recipe project for zc.buildout
...
$ paster create -t recipe my.recipe.name
s ixf eet up. c om/ i mme r se
20. Baby Steps
$ cd path/to/mybuildout
$ python2.4 bootstrap.py
Creating directory 'mybuildout/bin'.
Creating directory 'mybuildout/parts'.
Creating directory 'mybuildout/develop-eggs'.
Generated script 'mybuildout/bin/buildout'.
$ bin/buildout
s ixf eet up. c om/ i mme r se
21. Options
• -v and -q
• increase and decrease verbosity
• -n and -N
• Newest and non-newest modes
• -O and -o
• online and offline mode
• -t
• socket timeout
s ixf eet up. c om/ i mme r se
22. Update your buildout
$ bin/buildout -v
$ bin/buildout -Nvvv
$ bin/buildout -No
$ bin/buildout -t 10
s ixf eet up. c om/ i mme r se
23. Assignments
$ bin/buildout instance:debug-mode=on
$ bin/buildout buildout:log-level=70
$ bin/buildout -N instance:debug-mode=on -v
$ bin/buildout -Nv plonesite:enabled=false
$ bin/buildout plonesite:site-replace=true
s ixf eet up. c om/ i mme r se
24. Commands
$ bin/buildout install
$ bin/buildout -Nv install zope2 instance
$ bin/buildout -nv install instance
s ixf eet up. c om/ i mme r se
25. Default Settings
~/.buildout/default.cfg
[buildout]
eggs-directory = /Users/clayton/.buildout/eggs
download-cache = /Users/clayton/.buildout/downloads
zope-directory = /Users/clayton/.buildout/zope
s ixf eet up. c om/ i mme r se
26. Helpful Tools
• http://pypi.python.org/pypi/collective.eggproxy
• http://pypi.python.org/pypi/collective.dist
• Fabric or Paver
s ixf eet up. c om/ i mme r se
27. What did we learn?
• What is buildout?
• Who is using it?
• Syntax
• Pinning
• Recipes
• Command line usage
s ixf eet up. c om/ i mme r se
28. Links
• http://buildout.org
• http://pypi.python.org/pypi/zc.buildout
• http://www.sixfeetup.com/swag/buildout-quick-reference-card
• http://pypi.python.org
• Plone Specific:
• https://svn.sixfeetup.com/svn/public/examples/PyOhio09
• http://plone.org/documentation/tutorial/buildout
• https://svn.sixfeetup.com/svn/public/buildout/debug.cfg
s ixf eet up. c om/ i mme r se
29. Learn Plone by building a website from A to Z
1 non-profit project • 10 workshops • 14 mentors • 3 days
s ixf eetup.com/im merse
30. Photo Credits
• http://flickr.com/photos/monsieurlam/2645956083/
• http://flickr.com/photos/_boris/2796908072/
• http://flickr.com/photos/b-tal/163450213/
• http://flickr.com/photos/bullish1974/2648544508/
• http://flickr.com/photos/haydnseek/87432002/
• http://flickr.com/photos/disowned/1158260369/
• http://flickr.com/photos/7603557@N08/2662531345/
• http://flickr.com/photos/julishannon/2151986631/
• http://flickr.com/photos/julishannon/2152778524/
• http://flickr.com/photos/lollyknit/1155225799/
• http://flickr.com/photos/binary_koala/86227485/
• http://flickr.com/photos/marcoveringa/2951042391
s ixf eet up. c om/ i mme r se