[buildout]
extensions =
  slapos.tool.rebootstrap
  slapos.tool.networkcache
  slapos.zcbworkarounds
  mr.developer

find-links = http://www.nexedi.org/static/packages/source/slapos.buildout/
    http://dist.repoze.org
    http://www.nexedi.org/static/packages/source/

extends =
# Exact version of Zope
  http://svn.zope.org/repos/main/Zope/tags/2.12.17/versions.cfg
  ../../buildout/software-profiles/logrotate.cfg
  ../../buildout/software-profiles/dcron.cfg
  ../../buildout/software-profiles/file.cfg
  ../../buildout/software-profiles/fonts.cfg
  ../../buildout/software-profiles/ghostscript.cfg
  ../../buildout/software-profiles/git.cfg
  ../../buildout/software-profiles/glib.cfg
  ../../buildout/software-profiles/graphviz.cfg
  ../../buildout/software-profiles/haproxy.cfg
  ../../buildout/software-profiles/hookbox.cfg
  ../../buildout/software-profiles/imagemagick.cfg
  ../../buildout/software-profiles/kumo.cfg
  ../../buildout/software-profiles/libreoffice-bin.cfg
  ../../buildout/software-profiles/lxml-python.cfg
  ../../buildout/software-profiles/mariadb.cfg
  ../../buildout/software-profiles/memcached.cfg
  ../../buildout/software-profiles/mysql-python.cfg
  ../../buildout/software-profiles/pdftk.cfg
  ../../buildout/software-profiles/products-erp5.cfg
  ../../buildout/software-profiles/pysvn-python.cfg
  ../../buildout/software-profiles/python-2.6.cfg
  ../../buildout/software-profiles/python-2.7.cfg
  ../../buildout/software-profiles/python-ldap-python.cfg
  ../../buildout/software-profiles/rdiff-backup.cfg
  ../../buildout/software-profiles/stunnel.cfg
  ../../buildout/software-profiles/subversion.cfg
  ../../buildout/software-profiles/tesseract.cfg
  ../../buildout/software-profiles/varnish.cfg
  ../../buildout/software-profiles/w3-validator.cfg
  ../../buildout/software-profiles/w3m.cfg
  ../../buildout/software-profiles/xorg.cfg
  ../../buildout/software-profiles/xpdf.cfg
  ../../buildout/software-profiles/zabbix.cfg

versions = versions

parts =
  itools-build
  rdiff-backup
  apache
  apache-antiloris
  file
  graphviz
  memcached
  haproxy
  varnish-2.1
  stunnel
  w3m
  xpdf
  libpng12
  ghostscript
  mariadb
  imagemagick
  kumo
  libreoffice-bin
  w3-validator
  tesseract-eng-traineddata-unzip
  tesseract
  hookbox
  bootstrap2.6
  zabbix-agent
  pdftk
  dcron

# Buildoutish
  eggs
  instance-recipe-egg
  testrunner
  test_suite_runner

# basic Xorg
  libXdmcp
  libXext
  libXau
  libX11

# fonts
  liberation-fonts
  ipaex-fonts

# Zope products
  products-deps
  products-tidstorage
  products-erp5
  products-erp5-development

# Cloudooo specific part
  cloudooo

# Create instance template
  template

[instance-recipe]
# Note: In case if specific instantiation recipe is used this is the place to
# put its name
name = slapos.recipe.erp5

[products]
# XXX: ERP5 related products are not defined as python distributions, so it is
#      required to configure them in declarative manner
list = ${products-deps:location} ${products-tidstorage:location} ${products-erp5:location} ${products-erp5-development:location}

[bootstrap2.6]
python = python2.6

[rebootstrap]
# Default first version of rebootstrapped python
version = 2
section = python2.7

[template]
# Default template for erp5 instance.
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
md5sum = 856af2e58e7b2cd54a2d611b848adf64
output = ${buildout:directory}/template.cfg
mode = 0644

[itools]
pkgname = itools-0.50.8
location = ${buildout:parts-directory}/${:_buildout_section_name_}
lib = ${:location}/lib
source = ${:location}/src

# ugly itools building sections until itools and setuptools learn to get
# along:

[itools-download]
recipe = hexagonit.recipe.download
strip-top-level-dir = true
url = http://download.hforge.org/itools/0.50/${itools:pkgname}.tar.gz
md5sum = 12704cc354e2201e0921a832bf6b1556
destination = ${itools:source}

[itools-build]
recipe = plone.recipe.command
# reference itools-download:destination instead of itools:source to trigger its
# execution
# here, we unset PYTHONPATH to invoke different python than buildout one.
command =
    cd ${itools-download:destination} &&
    PYTHONPATH= ${python2.6:executable} setup.py build_ext -L ${glib:location}/lib -I ${glib:location}/include/glib-2.0:${glib:location}/lib/glib-2.0/include -R ${glib:location}/lib &&
    PYTHONPATH= ${python2.6:executable} setup.py install_lib -d ${itools:lib}

update-command = ${:command}
location = ${itools:location}
stop-on-error = true

[products-tidstorage]
# Recipe infrae.subversion is using svn command under the hood, but there is
# no way to pass --trust-server-cert --non-interactive, so in 2.12 falvour
# it is better to evaluate usage of provided subversion command
recipe = plone.recipe.command
svn_param =--trust-server-cert --non-interactive --quiet --revision ${versions:erp5_products_revision}
location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true
update-command = ${:command}
product_list = TIDStorage
command =
  for product in ${:product_list} ; do ${subversion:location}/bin/svn checkout ${:svn_param} https://svn.erp5.org/repos/public/erp5/trunk/products/$product ${:location}/$product || exit 1 ; done

[products-deps]
# Recipe minitage.recipe.fetch is disabled, as it uses PATH variable, but it
# is not possible to change its environment to use localy delivered subversion
# nor git. plone.recipe.command can do same job, but it is controllable which
# binary will be used
recipe = plone.recipe.command
svn_param =--trust-server-cert --non-interactive --quiet
location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true
command =
  ${subversion:location}/bin/svn checkout ${:svn_param} https://svn.plone.org/svn/collective/ExtFile/trunk ${:location}/ExtFile &&
  ${git:location}/bin/git clone --quiet git://git.hforge.org/Localizer.git ${:location}/Localizer
update-command =
  if ${buildout:newest}; then
    ${subversion:location}/bin/svn checkout ${:svn_param} https://svn.plone.org/svn/collective/ExtFile/trunk ${:location}/ExtFile &&
    cd ${:location}/Localizer &&
    ${git:location}/bin/git pull --quiet
  fi

[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=Products.ERP5Type.tests.runUnitTest:main
scripts = runUnitTest
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]
  Products.__path__.extend(reversed('''${products:list}'''.split()))
  import Zope2
  os.environ['SOFTWARE_HOME'] = os.path.abspath(os.path.dirname(os.path.dirname(Zope2.__file__)))
  os.environ['ZOPE_SCRIPTS'] = ''

[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]
  Products.__path__.extend(reversed('''${products:list}'''.split()))
  import Zope2
  os.environ['SOFTWARE_HOME'] = os.path.abspath(os.path.dirname(os.path.dirname(Zope2.__file__)))
  os.environ['ZOPE_SCRIPTS'] = ''

[pycrypto-python]
# This is a workaround for pkg_resources.ExtractionError: Can't extract file(s) to egg cache
# Note that currently we are stuck with develop eggs
# *Maybe* possible solution is to setup PYTHON_EGG_CACHE?
# *Why* python-MySQL workED and pycrypto DID not? Because MySQL distribution
# was unpacked, and pycrypto was packed.
recipe = zc.recipe.egg:custom
python = python2.6
egg = pycrypto

[instance-recipe-egg]
recipe = zc.recipe.egg
python = python2.6
eggs =
# instantiation egg
  ${instance-recipe:name}
  erp5.conflictresolver

[eggs]
recipe = zc.recipe.egg
python = python2.6
eggs =
  ${mysql-python:egg}
  ${lxml-python:egg}
  ${python-ldap-python:egg}
  ${pysvn-python:egg}
  ${pycrypto-python:egg}
  PyXML
  SOAPpy
  cElementTree
  chardet
  elementtree
  erp5diff
  ipdb
  mechanize
  numpy
  ordereddict
  paramiko
  ply
  python-magic
  python-memcached
  pytz
  threadframe
  timerserver
  urlnorm
  uuid
  xml_marshaller
  xupdate_processor
  feedparser
  argparse

# 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.Zelenium

# Currently forked in our repository
#    Products.PortalTransforms
# Dependency for our fork of PortalTransforms
  StructuredText

# 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

extra-paths =
  ${itools:location}/lib

[mysql-python]
python = python2.6

[lxml-python]
python = python2.6

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

[pysvn-python]
python = python2.6

[cloudooo]
recipe = zc.recipe.egg
python = python2.6
eggs =
  ${lxml-python:egg}
  cloudooo.handler.ffmpeg
  cloudooo.handler.imagemagick
  cloudooo.handler.ooo
  cloudooo.handler.pdf
  cloudooo
  PasteScript
scripts =
  paster=cloudooo_paster

[versions]
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-001

# XXX: Maybe not needed
erp5_products_revision = HEAD

# 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

# Zope Known Good Set is incompatible with buildout 1.5.0 in case of
# distribute and zc.buildout, and as ERP5 Appliance trunk wants to use
# the newest versions of buildout infrastructure clear the pin
distribute =
setuptools =

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