[buildout]
extensions =
  slapos.rebootstrap
  slapos.zcbworkarounds
  buildout-versions
  mr.developer

find-links =
    http://www.nexedi.org/static/packages/source/slapos.buildout/
    http://www.nexedi.org/static/packages/source/hexagonit.recipe.download/
    http://dist.repoze.org
    http://www.nexedi.org/static/packages/source/
    http://www.owlfish.com/software/wsgiutils/download.html

# Separate from site eggs
allowed-eggs-from-site-packages =
include-site-packages = false
exec-sitecustomize = false

# Use only quite well working sites.
allow-hosts =
  *.nexedi.org
  *.python.org
  *.sourceforge.net
  alastairs-place.net
  dist.repoze.org
  effbot.org
  github.com
  peak.telecommunity.com
  psutil.googlecode.com
  www.dabeaz.com
  www.owlfish.com
  launchpad.net
  bitbucket.org

extends =
# Exact version of Zope
  http://svn.zope.org/repos/main/Zope/tags/2.12.23/versions.cfg
  ../component/logrotate/buildout.cfg
  ../component/dcron/buildout.cfg
  ../component/file/buildout.cfg
  ../component/fonts/buildout.cfg
  ../component/ghostscript/buildout.cfg
  ../component/git/buildout.cfg
  ../component/graphviz/buildout.cfg
  ../component/gzip/buildout.cfg
  ../component/haproxy/buildout.cfg
  ../component/hookbox/buildout.cfg
  ../component/librsvg/buildout.cfg
  ../component/imagemagick/buildout.cfg
  ../component/kumo/buildout.cfg
  ../component/libdmtx/buildout.cfg
  ../component/libpng/buildout.cfg
  ../component/libreoffice-bin/buildout.cfg
  ../component/lxml-python/buildout.cfg
  ../component/percona-toolkit/buildout.cfg
  ../component/mariadb/buildout.cfg
  ../component/memcached/buildout.cfg
  ../component/mysql-python/buildout.cfg
  ../component/pdftk/buildout.cfg
  ../component/pil-python/buildout.cfg
  ../component/pycrypto-python/buildout.cfg
  ../component/pysvn-python/buildout.cfg
  ../component/python-2.6/buildout.cfg
  ../component/python-2.7/buildout.cfg
  ../component/python-ldap-python/buildout.cfg
  ../component/rdiff-backup/buildout.cfg
  ../component/sphinx/buildout.cfg
  ../component/stunnel/buildout.cfg
  ../component/subversion/buildout.cfg
  ../component/tesseract/buildout.cfg
  ../component/varnish/buildout.cfg
  ../component/w3-validator/buildout.cfg
  ../component/w3m/buildout.cfg
  ../component/6tunnel/buildout.cfg
  ../component/xorg/buildout.cfg
  ../component/poppler/buildout.cfg
  ../component/xtrabackup/buildout.cfg
  ../component/zabbix/buildout.cfg
  ../component/sed/buildout.cfg
  ../component/coreutils/buildout.cfg
  ../component/grep/buildout.cfg
  ../component/dash/buildout.cfg
  ../component/wget/buildout.cfg
  ../component/aspell/buildout.cfg
  ../component/cloudooo/buildout.cfg
  ../component/squid/buildout.cfg

versions = versions

parts =
  rdiff-backup
  aspell
  aspell-en-dictionary
  apache
  apache-antiloris
  file
  graphviz
  memcached
  haproxy
  varnish-3.0
  stunnel
  w3m
  poppler
  libpng
  ghostscript
  mariadb
  mroonga-mariadb
  sphinx
  imagemagick
  libdmtx
  dmtx-utils
  kumo
  libreoffice-bin
  w3-validator
  6tunnel
  tesseract
  hookbox
  bootstrap2.6
  perl-DBD-mariadb
  perl-DBI
  percona-toolkit
  zabbix-agent
  pdftk
  dcron
  dash
  wget

# Buildoutish
  eggs
  testrunner
  test_suite_runner

# basic Xorg
  libXdmcp
  libXext
  libXau
  libSM
  libXrender

# fonts
  liberation-fonts
  ipaex-fonts

# Cloudooo specific part
  cloudooo

# get git repositories
  erp5
  genbt5list

# fix products path (Zeo needs ERP5 Products to be available for
# conflict resolution)
  fix-products-paths
  vifib-fix-products-paths
# some additional utils
  slapos-toolbox
  squid

[bt5-repository]
# Format:
#   <url or path> [...]
#
# Use absolute paths for local repositories, and URLs for non-local otherwise.
#
list = ${local-bt5-repository:list}

[local-bt5-repository]
# Same as bt5-repository, but only local repository.
# Used to generate bt5lists.
list = ${erp5:location}/bt5 ${erp5:location}/product/ERP5/bootstrap ${vifib:location}/master/bt5

[genbt5list]
recipe = plone.recipe.command
stop-on-error = true
genbt5list = ${erp5:location}/product/ERP5/bin/genbt5list
command =
  ${buildout:executable} ${:genbt5list} ${local-bt5-repository:list}
update-command = ${:command}

[bootstrap2.6]
python = python2.6

[rebootstrap]
version = 3
section = python2.7
eggs = slapos.libnetworkcache

[erp5_repository_list]
repository_id_list = erp5 vifib/master

[erp5]
# Recipe zerokspot.recipe.git is disabled, as is not possible to change its
# environment to use localy delivered git.
# plone.recipe.command can do same job, but it is controllable which binary
# will be used
recipe = plone.recipe.command
location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true
repository = http://git.erp5.org/repos/erp5.git
branch = interaction-drop
revision =
command = "${git:location}/bin/git" clone --quiet --branch "${:branch}" "${:repository}" "${:location}" && if [ -n "${:revision}" ]; then cd "${:location}" && "${git:location}/bin/git" reset --quiet --hard "${:revision}" ; fi
update-command = cd "${:location}" && "${git:location}/bin/git" fetch && if [ -n "${:revision}" ]; then "${git:location}/bin/git" reset --hard "${:revision}"; else "${git:location}/bin/git" reset --hard @{upstream} ; fi

[vifib]
<= erp5
branch = master
repository = http://git.erp5.org/repos/slapos.core.git
revision =

[fix-products-paths]
recipe = plone.recipe.command
stop-on-error = true
command =
  for DIR in "${erp5:location}"; do cd "$DIR"; rm -f Products ; ln -s product Products; touch product/__init__.py; done
update-command = ${:command}

[vifib-fix-products-paths]
<= fix-products-paths
command =
  for DIR in "${vifib:location}/master"; do cd "$DIR"; rm -f Products ; ln -s product Products; touch product/__init__.py; done
update-command = ${:command}

[testrunner]
# XXX: Workaround for fact ERP5Type is not an distribution and does not
#      expose entry point for test runner
recipe = zc.recipe.egg
python = python2.6
eggs = ${eggs:eggs}
extra-paths = ${eggs:extra-paths}
entry-points =
  runUnitTest=runUnitTest:main
scripts = runUnitTest
initialization =
  import glob, imp, os, sys
  import App # prevent Testing from importing Zope2.App instead of App
  import Products
  Products.__path__[:0] = filter(None,
    os.getenv('INSERT_PRODUCTS_PATH', '').split(os.pathsep))
  os.environ['SOFTWARE_HOME'] = os.path.abspath(imp.find_module('Zope2')[1])
  os.environ['ZOPE_SCRIPTS'] = ''
  parts_directory = '''${buildout:parts-directory}'''
  repository_id_list = \
    '''${erp5_repository_list:repository_id_list}'''.split()[::-1]
  os.environ['erp5_tests_bt5_path'] = ','.join(sum((
    [bt5_path, os.path.join(bt5_path, '*')]
    for bt5_path in (os.path.join(parts_directory, x, 'bt5')
                     for x in repository_id_list)), []))
  extra_path_list = '''${:extra-paths}'''.split()
  sys.path[:0] = sum((
    glob.glob(os.path.join(x, 'tests'))
    for x in extra_path_list), [])
  sys.path[:0] = sum((
    glob.glob(os.path.join(x, 'Products', '*', 'tests'))
    for x in extra_path_list), [])

[test_suite_runner]
# XXX: Workaround for fact ERP5Type is not an distribution and does not
#      expose entry point for test runner
recipe = zc.recipe.egg
python = python2.6
eggs = ${eggs:eggs}
extra-paths = ${eggs:extra-paths}
entry-points =
  runTestSuite=Products.ERP5Type.tests.runTestSuite:main
scripts = runTestSuite
initialization =
  import os
  import sys
  import Products
  [Products.__path__.insert(0, p) for p in reversed(os.environ.get('INSERT_PRODUCTS_PATH', '').split(':')) if p]
  import Zope2
  os.environ['SOFTWARE_HOME'] = os.path.abspath(os.path.dirname(os.path.dirname(Zope2.__file__)))
  os.environ['ZOPE_SCRIPTS'] = ''
  repository_id_list = list(reversed('''${erp5_repository_list:repository_id_list}'''.split()))
  sys.path[0:0] = ['/'.join(['''${buildout:parts-directory}''', x]) for x in repository_id_list]

[eggs]
recipe = zc.recipe.egg
python = python2.6
dummy =
  ${vifib:location}
eggs =
  ${mysql-python:egg}
  ${lxml-python:egg}
  ${pil-python:egg}
  ${python-ldap-python:egg}
  ${pysvn-python:egg}
  ${pycrypto-python:egg}
  PyXML
  SOAPpy
  cElementTree
  chardet
  coverage
  elementtree
  erp5diff
  inotifyx
  ipdb
  mechanize
  numpy
  ordereddict
  paramiko
  ply
  python-magic
  python-memcached
  pytz
  requests
  threadframe
  timerserver
  urlnorm
  uuid
  xml_marshaller
  xupdate_processor
  feedparser
  argparse
  validictory
  erp5.util
  huBarcode
  qrcode

# Zope 2.12 with patched acquisition
  ZODB3
  Zope2
  Acquisition

# Other Zope 2 packages
  Products.PluggableAuthService
  Products.PluginRegistry

# CMF 2.2
  Products.CMFActionIcons
  Products.CMFCalendar
  Products.CMFCore
  Products.CMFDefault
  Products.CMFTopic
  Products.CMFUid
  Products.DCWorkflow
  Products.GenericSetup
  five.localsitemanager

# Other products
  Products.DCWorkflowGraph
  Products.MimetypesRegistry
  Products.ExternalEditor
  Products.TIDStorage

# Currently forked in our repository
#    Products.PortalTransforms
# Dependency for our fork of PortalTransforms
  StructuredText
  suds
  facebook-sdk
  google-api-python-client
  spyne
  slapos.core

# Needed for parsing .po files from our Localizer subset
  polib

# parameterizing the version of the generated python interpreter name by the
# python section version causes dependency between this egg section and the
# installation of python, which we don't want on an instance
interpreter = python2.6
scripts =
  repozo
  runzope
  runzeo
  tidstoraged
  tidstorage_repozo
  web_checker_utility = erp5.util.webchecker:web_checker_utility

extra-paths =
  ${erp5:location}
  ${vifib:location}/master

[cloudooo-repository]
branch = master
revision = 4cdfffb3f81a0fdbb7b372d92de664e716f12d4b

[mysql-python]
python = python2.6

[lxml-python]
python = python2.6

[pil-python]
python = python2.6

[python-ldap-python]
python = python2.6

[pysvn-python]
python = python2.6

[slapos-toolbox]
recipe = zc.recipe.egg
python = ${eggs:python}
eggs =
  ${lxml-python:egg}
  slapos.toolbox
  slapos.toolbox[zodbpack]

scripts =
  killpidfromfile
  onetimedownload
  zodbpack

[versions]
# Use SlapOS patched zc.buildout
zc.buildout = 1.6.0-dev-SlapOS-006

# stick to Zope 2.12.22 because Zope 2.12.23's
# ObjectManager.__getitem__ is much slower for a module having lots of
# sub objects.
Zope2 = 2.12.22

# pin Acquisition and Products.DCWorkflow to Nexedi flavour of eggs
Acquisition = 2.13.7nxd001
Products.DCWorkflow = 2.2.3nxd002

# Known version with works
numpy = 1.3.0
# Patched version which support python 2.6
PyXML = 0.8.4nxd001
# modified version that works fine for buildout installation
SOAPpy = 0.12.0nxd001
# we are still using this old stable version.
rdiff-backup = 1.0.5

# official pysvn egg does not supports --include-dirs and
# --library-dirs, so we use our modified version
pysvn = 1.7.4nxd006

# CMF 2.3 requries Zope 2.13.
Products.CMFCalendar = 2.2.2
Products.CMFCore = 2.2.5
Products.CMFDefault = 2.2.2
Products.CMFTopic = 2.2.1
Products.CMFUid = 2.2.1

# Unpined locally developed egg
slapos.cookbook =

# Pinned versions
Flask = 0.8
GitPython = 0.3.2.RC1
MySQL-python = 1.2.3
PIL = 1.1.7
Paste = 1.7.5.1
PasteDeploy = 1.5.0
PasteScript = 1.7.5
Products.CMFActionIcons = 2.1.3
Products.CMFCalendar = 2.2.2
Products.CMFCore = 2.2.5
Products.CMFDefault = 2.2.2
Products.CMFTopic = 2.2.1
Products.CMFUid = 2.2.1
Products.DCWorkflowGraph = 0.4.1
Products.ExternalEditor = 1.1.0
Products.GenericSetup = 1.7.1
Products.MimetypesRegistry = 2.0.3
Products.PluggableAuthService = 1.7.7
Products.PluginRegistry = 1.3b1
Products.TIDStorage = 5.4.7.dev-r45842
Products.Zelenium = 1.0.3
StructuredText = 2.11.1
WSGIUtils = 0.7
Werkzeug = 0.8.3
apache-libcloud = 0.9.1
argparse = 1.1
async = 0.6.1
atomize = 0.1.1
buildout-versions = 1.7
cElementTree = 1.0.5-20051216
chardet = 1.0.1
coverage = 3.5.1
csp-eventlet = 0.7.0
elementtree = 1.2.7-20070827-preview
erp5.recipe.cmmiforcei686 = 0.1.3
erp5.util = 0.4.1
erp5diff = 0.8.1.5
eventlet = 0.9.16
feedparser = 5.1.1
five.localsitemanager = 2.0.5
fpconst = 0.7.2
gitdb = 0.5.4
greenlet = 0.3.4
hexagonit.recipe.cmmi = 1.5.0
# Use patched hexagonit.recipe.download from
# https://github.com/SlapOS/hexagonit.recipe.download
hexagonit.recipe.download = 1.5.1-dev-slapos-001
http-parser = 0.7.5
huBarcode = 0.63
inotifyx = 0.2.0
ipdb = 0.6.1
ipython = 0.12
meld3 = 0.6.8
netaddr = 0.7.6
netifaces = 0.8
ordereddict = 1.1
paramiko = 1.7.7.1
plone.recipe.command = 1.1
ply = 3.4
polib = 1.0.0
psutil = 0.4.1
python-ldap = 2.4.9
python-magic = 0.4.2
python-memcached = 1.47
restkit = 4.1.2
rtjp-eventlet = 0.3.2
setuptools = 0.6c12dev-r88846
slapos.core = 
slapos.recipe.build = 0.7
slapos.recipe.template = 2.4
slapos.toolbox = 0.23
smmap = 0.8.2
socketpool = 0.3.0
supervisor = 3.0a12
threadframe = 0.2
timerserver = 2.0.2
urlnorm = 1.1.2
uuid = 1.30
validictory = 0.8.3
xml-marshaller = 0.9.7
xupdate-processor = 0.4
suds = 0.4
facebook-sdk = 0.3.1
google-api-python-client = 1.0c2
httplib2 = 0.7.4
qrcode = 2.4.1
python-gflags = 2.0
mr.developer = 1.21
requests = 0.13.5
spyne = 2.8.0-rc
lxml = 2.3.5