[buildout] extensions = slapos.rebootstrap slapos.zcbworkarounds buildout-versions find-links = http://www.nexedi.org/static/packages/source/slapos.buildout/ 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 extends = # Exact version of Zope http://svn.zope.org/repos/main/Zope/tags/2.12.20/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/glib/buildout.cfg ../component/graphviz/buildout.cfg ../component/gzip/buildout.cfg ../component/haproxy/buildout.cfg ../component/hookbox/buildout.cfg ../component/imagemagick/buildout.cfg ../component/kumo/buildout.cfg ../component/libreoffice-bin/buildout.cfg ../component/lxml-python/buildout.cfg ../component/maatkit/buildout.cfg ../component/mariadb/buildout.cfg ../component/memcached/buildout.cfg ../component/mysql-python/buildout.cfg ../component/pdftk/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/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 versions = versions parts = itools-build rdiff-backup apache apache-antiloris file graphviz memcached haproxy varnish-2.1 stunnel w3m poppler libpng ghostscript mariadb sphinx 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 libXinerama libSM # fonts liberation-fonts ipaex-fonts # Zope products products-deps # 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 # some additional utils slapos-toolbox [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 [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 [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-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 -r 98997 ${: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 && cd ${:location}/Localizer && ${git:location}/bin/git reset --quiet --hard dacb6ba0ae559cd9bdb8822812d24a12a21e9e37 [erp5_repository_list] repository_id_list = erp5 [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 = master revision = command = ${git:location}/bin/git clone --quiet -b ${: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 pull --quiet && if [ -n ${:revision} ]; then cd ${:location} && ${git:location}/bin/git reset --quiet --hard ${:revision} ; fi [products] # XXX: ERP5 related products are not defined as python distributions, so it is # required to configure them in declarative manner list = [fix-products-paths] recipe = plone.recipe.command stop-on-error = true command = for DIR in "${products-deps:location}"; do cd "$DIR"; rm -f Products ; ln -s . Products; touch __init__.py; done for DIR in "${erp5:location}"; 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)) Products.__path__.extend(reversed('''${products:list}'''.split())) 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)), [])) sys.path[:0] = [os.path.join(parts_directory, x, 'tests') for x in repository_id_list] sys.path[:0] = sum(( glob.glob(os.path.join(parts_directory, x, 'product', '*', 'tests')) for x in repository_id_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] 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'] = '' 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] [instance-recipe-egg] recipe = zc.recipe.egg python = python2.6 eggs = # instantiation egg ${instance-recipe:egg} [eggs] recipe = zc.recipe.egg python = python2.6 eggs = ${mysql-python:egg} ${lxml-python:egg} ${python-ldap-python:egg} ${pysvn-python:egg} pycrypto 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 validictory # 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 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 tidstoraged tidstorage_repozo extra-paths = ${itools:location}/lib ${products-deps:location} ${erp5:location} [mysql-python] python = python2.6 [lxml-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 scripts = killpidfromfile = slapos.systool:killpidfromfile [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-010 # 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