Commit 65a2ce4d authored by Julien Muchembled's avatar Julien Muchembled

Migrate repository from Subversion to Git

parent d150abb8
*.pyc
*.pyo
Where to report issues about ERP5 Appliance Buildout?
=====================================================
Please use erp5-users and erp5-dev mailing lists, you can find more
information here: http://www.erp5.com/support/ml
Patches are welcomed too!
Why do you compile your own python and so much other software?
==============================================================
Because of extreme portability. There is no other way to achieve it, LSB is
ignored by distributions, there is no other standard then source standard.
Sometimes some remote resources are not available, what to do?
==============================================================
We are aware of it and we are working hard to provide good solution for
everyone.
How to develop this buildout?
=============================
Please read README.Development.txt
# svn propset svn:ignore -F ./IGNORE.TXT .
.installed.cfg
bin
develop-eggs
downloads
eggs
parts
reboostrap.*
.reboostrap.*
Please see http://www.erp5.com/Howto-Install.erp5.From.Buildout
How to develop ERP5 Appliance Buildout
======================================
Normal buildout run assumes that all resources are available over the network.
And this is correct way to use buildout, but...how to develop it locally and
still be sure that it run over the network.
Lets assume that software is available in ~/erp5.buildout.
Create your working directory ~/buildout.devel:
$ mkdir ~/buildout.devel
Now checkout the buildout:
~/erp5.buildout/parts/subversion/bin/svn https://svn.erp5.org/repos/public/erp5/trunk/buildout/ ~/buildout.devel/checkout
Start simple http server there:
$ cd ~/buildout.devel/checkout
$ ~/erp5.buildout/bin/python2.6 -m SimpleHTTPServer 9000 # or any other free port
Now create directory to simulate extending over the network:
$ mkdir ~/buildout.devel/work
And create profile there:
$ cat > ~/buildout.devel/work/buildout.cfg
[buildout]
extends = http://localhost:9000/buildout-2.12.cfg
extends-cache = extends-cache
^D
Now it is time to play. Observe what and how is downloaded from your simulated
server.
Happy hacking!
Simple server idea contributed by Lucas Carvalho Teixeira
Please see http://www.erp5.com/Howto-Install.erp5.From.Buildout
bootstrap.py file is updated from time to time from:
http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py
or:
http://svn.zope.org/*checkout*/zc.buildout/tags/RELEASE/bootstrap/bootstrap.py
There is no need to fix it locally, all changes shall go upstream.
Moreover buildout has ability to autoupdate itself, so local manipulations on
that file might have side effects.
##############################################################################
#
# Copyright (c) 2006 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Bootstrap a buildout-based project
Simply run this script in a directory containing a buildout.cfg.
The script accepts buildout command-line options, so you can
use the -c option to specify an alternate configuration file.
$Id$
"""
import os, shutil, sys, tempfile, urllib2
from optparse import OptionParser
tmpeggs = tempfile.mkdtemp()
is_jython = sys.platform.startswith('java')
# parsing arguments
parser = OptionParser(
'This is a custom version of the zc.buildout %prog script. It is '
'intended to meet a temporary need if you encounter problems with '
'the zc.buildout 1.5 release.')
parser.add_option("-v", "--version", dest="version", default='1.4.4',
help='Use a specific zc.buildout version. *This '
'bootstrap script defaults to '
'1.4.4, unlike usual buildpout bootstrap scripts.*')
parser.add_option("-d", "--distribute",
action="store_true", dest="distribute", default=False,
help="Use Disribute rather than Setuptools.")
parser.add_option("-c", None, action="store", dest="config_file",
help=("Specify the path to the buildout configuration "
"file to be used."))
options, args = parser.parse_args()
# if -c was provided, we push it back into args for buildout' main function
if options.config_file is not None:
args += ['-c', options.config_file]
if options.version is not None:
VERSION = '==%s' % options.version
else:
VERSION = ''
USE_DISTRIBUTE = options.distribute
args = args + ['bootstrap']
to_reload = False
try:
import pkg_resources
if not hasattr(pkg_resources, '_distribute'):
to_reload = True
raise ImportError
except ImportError:
ez = {}
if USE_DISTRIBUTE:
exec urllib2.urlopen('http://python-distribute.org/distribute_setup.py'
).read() in ez
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0, no_fake=True)
else:
exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
).read() in ez
ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
if to_reload:
reload(pkg_resources)
else:
import pkg_resources
if sys.platform == 'win32':
def quote(c):
if ' ' in c:
return '"%s"' % c # work around spawn lamosity on windows
else:
return c
else:
def quote (c):
return c
ws = pkg_resources.working_set
if USE_DISTRIBUTE:
requirement = 'distribute'
else:
requirement = 'setuptools'
env = dict(os.environ,
PYTHONPATH=
ws.find(pkg_resources.Requirement.parse(requirement)).location
)
cmd = [quote(sys.executable),
'-c',
quote('from setuptools.command.easy_install import main; main()'),
'-mqNxd',
quote(tmpeggs)]
if 'bootstrap-testing-find-links' in os.environ:
cmd.extend(['-f', os.environ['bootstrap-testing-find-links']])
cmd.append('zc.buildout' + VERSION)
if is_jython:
import subprocess
exitcode = subprocess.Popen(cmd, env=env).wait()
else: # Windows prefers this, apparently; otherwise we would prefer subprocess
exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env]))
assert exitcode == 0
ws.add_entry(tmpeggs)
ws.require('zc.buildout' + VERSION)
import zc.buildout.buildout
zc.buildout.buildout.main(args)
shutil.rmtree(tmpeggs)
[buildout]
# Note: profiles/development-2.12.cfg is added only to fill extends cache
# for instances
extends =
profiles/development-2.12.cfg
profiles/official-2.12.cfg
unzip = true
[buildout]
# Note: profiles/development.cfg is added only to fill extends cache
# for instances
extends =
profiles/development.cfg
profiles/official.cfg
unzip = true
\ No newline at end of file
[buildout]
parts = zope-frontend
[zope-frontend]
recipe = erp5.recipe.apache
httpd_binary = ${software_definition:software_home}/parts/apache/bin/httpd
openssl_binary = ${software_definition:software_home}/parts/openssl/bin/openssl
ip = 127.0.0.1
port = 42080
server_name = localhost
backend_mapping =
127.0.0.1:18080/ /
[buildout]
extends =
../profiles/software-definition.cfg
../profiles/common.cfg
../profiles/links.cfg
supervisor.cfg
parts =
cloudooo-instance
paster
create-log-directory
supervisor-instance
[configuration]
oood_port = 8011
[paster]
recipe = zc.recipe.egg
eggs =
PasteScript
cloudooo.handler.ooo
cloudooo.handler.pdf
cloudooo.handler.ffmpeg
cloudooo.handler.imagemagick
cloudooo
[create-log-directory]
recipe = z3c.recipe.mkdir
paths =
${buildout:log-directory}
${buildout:run-directory}
[cloudooo-instance]
recipe = erp5.recipe.cloudoooinstance
depends =
${paster:eggs}
${create-log-directory:paths}
daemon = true # only true or false
conf-output = ${buildout:etc-directory}/cloudooo.conf
ctl-output = ${buildout:data-bin-directory}/cloudoooctl
log-directory = ${buildout:log-directory}
run-directory = ${buildout:run-directory}
bin-directory = ${buildout:bin-directory}
start-timeout = 20
hostname = localhost
debug-mode = True
working_path = ${buildout:run-directory}
#
## Monitor Settings
#
request-limit = 100
monitor-interval = 10
timeout-response = 40
enable-memory-monitor = True
memory-limit = 1000
#
## OpenOffice Settings
#
uno-path = ${software_definition:openoffice_software}/basis-link/program/
office-binary-path = ${software_definition:openoffice_software}/program/
openoffice-port = 4062
env-PATH = ${software_definition:software_home}/parts/xpdf/bin:${software_definition:software_home}/parts/imagemagick/bin:${software_definition:software_home}/parts/ffmpeg/bin:${software_definition:software_home}/parts/pdftk/bin
env-LD_LIBRARY_PATH = ${software_definition:software_home}/parts/file/lib:${software_definition:software_home}/parts/zlib/lib:${software_definition:software_home}/parts/freetype/lib:${software_definition:software_home}/parts/libXext/lib:${software_definition:software_home}/parts/libXau/lib:${software_definition:software_home}/parts/libX11/lib:${software_definition:software_home}/parts/libXdmcp/lib:${software_definition:software_home}/parts/libxcb/lib
server-hostname = 0.0.0.0
protocol-version = HTTP/1.1
server-library-name = http
server-egg-name = egg:Paste
server-port = ${configuration:oood_port}
supervisor-priority = 30
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} (stopsignal=HUP stopwaitsecs=20) ${buildout:bin-directory}/paster [serve ${cloudooo-instance:conf-output}]
handler-mapping =
ooo OOHandler
pdf PDFHandler
imagemagick ImageMagickHandler
ffmpeg FFMPEGHandler
mimetype-registry =
application/pdf * ooo
video/* * ffmpeg
audio/* * ffmpeg
application/x-shockwave-flash * ffmpeg
application/ogg * ffmpeg
application/ogv * ffmpeg
image/* * ooo
text/* * ooo
application/zip * ooo
application/msword * ooo
application/vnd* * ooo
application/vnd* * ooo
application/x-vnd* * ooo
application/postscript * ooo
application/wmf * ooo
application/csv * ooo
application/x-openoffice-gdimetafile * ooo
application/x-emf * ooo
application/emf * ooo
application/octet* * ooo
# this name is only for backward compatibility
[cloudooo-instance-template]
<= cloudooo-instance
[buildout]
parts =
kumo-server-instance
kumo-manager-instance
kumo-gateway-instance
kumo-volatile-server-instance
kumo-volatile-manager-instance
kumo-volatile-gateway-instance
# persistent storage configuration that works same as flare
[kumo-server-instance]
recipe =
server-address = 127.0.0.1
server-port = 19800
server-listen-port = 19900
manager-address = ${kumo-manager-instance:manager-address}
manager-port = ${kumo-manager-instance:manager-port}
# you can customise the storage (eg. bucket size etc.) by creating the
# storage file manually beforehand.
# read http://fallabs.com/tokyocabinet/spex-en.html#tcadbapi for the detail.
storage = ${buildout:var-directory}/${:_buildout_section_name_}.tch
supervisor-priority = 30
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} ${software_definition:software_home}/parts/kumo/bin/kumo-server [-l ${:server-address}:${:server-port} -L ${:server-listen-port} -m ${:manager-address}:${:manager-port} -s ${:storage}]
[kumo-manager-instance]
recipe =
manager-address = 127.0.0.1
manager-port = 19700
supervisor-priority = 31
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} ${software_definition:software_home}/parts/kumo/bin/kumo-manager [-a -l ${:manager-address}:${:manager-port}]
[kumo-gateway-instance]
recipe =
manager-address = ${kumo-manager-instance:manager-address}
manager-port = ${kumo-manager-instance:manager-port}
gateway-address = 127.0.0.1
# this gateway port is same as flare's default port
gateway-port = 12121
supervisor-priority = 32
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} ${software_definition:software_home}/parts/kumo/bin/kumo-gateway [-F -E -m ${:manager-address}:${:manager-port} -t ${:gateway-address}:${:gateway-port}]
# volatile storage configuration that works same as memcached but
# accepts longer keys and bigger data.
[kumo-volatile-server-instance]
<= kumo-server-instance
server-address = 127.0.0.1
server-port = 29800
server-listen-port = 29900
manager-address = ${kumo-volatile-manager-instance:manager-address}
manager-port = ${kumo-volatile-manager-instance:manager-port}
# this configuration means a RAM storage whose maximum usage is 64MB.
# read http://fallabs.com/tokyocabinet/spex-en.html#tcadbapi for the detail.
storage = *#capsiz=64m
[kumo-volatile-manager-instance]
<= kumo-manager-instance
manager-address = 127.0.0.1
manager-port = 29700
[kumo-volatile-gateway-instance]
<= kumo-gateway-instance
manager-address = ${kumo-volatile-manager-instance:manager-address}
manager-port = ${kumo-volatile-manager-instance:manager-port}
gateway-address = 127.0.0.1
# this gateway port is same as memcached's default port
gateway-port = 11211
# Experimental Recipe for setup a KVM instance.
[kvm-instance-template]
recipe = erp5.recipe.kvm
# Define the image.
image =
gzip = true
kvm_snapshot = true
# ssh Information
ssh_key_file = <DEFINE YOUR IMAGE HERE>
ssh_port = 13456
[buildout]
parts = memcached-instance
[memcached-instance]
depends =
#XXX-JPS : NO PLURALS
${create-directories:command}
recipe = erp5.recipe.memcachedserver
memcached_software_bin = ${software_definition:software_home}/parts/memcached/bin
memcached_bin_folder = ${buildout:data-bin-directory}
memcached_conf_file = ${buildout:etc-directory}/memcached.conf
instancehome = ${buildout:var-directory}/memcached
supervisor-priority = 20
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} (autorestart=true) ${:memcached_bin_folder}/memcached
### JPS : Problem : promise-based config : We don't know if goal is reached
### + don't crush everything each time if nothing changed
### + specify the goal
# Configuration goes here
# -p
memcached_tcp_port = 11211
# -U
memcached_udp_port = 11211
# -l
memcached_host = 127.0.0.1
# -m
memcached_memory_size = 64
# -c
memcached_simultaneous_connections = 1024
# -u
memcached_user =
# -d
memcached_run_as_daemon = false
# -P
memcached_pid_file = ${:instancehome}/memcached.pid
# -f
memcached_factor = 1.25
# -n
memcached_key_size = 48
# -t
memcached_threads = 4
[buildout]
parts =
mysql-database-template
[mysql-database-template]
recipe = erp5.recipe.mysqldatabase
# MySQL
mysql_database_name = appliance_database
mysql_user = root
mysql_password =
mysql_host = ${configuration:mysql_host}
mysql_port = ${configuration:mysql_port}
mysql_superuser = root
mysql_superpassword =
# This is data only part of buildout for mysql with senna
# made by Leonardo Rochael Almeida <leorochael@gmail.com> (thanks!)
# Original place: https://svn.erp5.org/repos/public/experimental/mysqlsenna.buildout/
[buildout]
parts =
mysql-instance
[configuration]
mysql_port = 10002
mysql_host = 0.0.0.0
# below are candidates to be removed from global configuration
mysql_datadir = ${buildout:var-directory}/mysql
mysql_pid = ${:mysql_datadir}/mysql.pid
mysql_sock = ${:mysql_datadir}/mysql.sock
[mysql-instance]
depends =
${create-directories:command}
recipe = erp5.recipe.mysqlserver
mysql_software_bin = ${software_definition:mysql_software}/bin
mysql_bin_folder = ${buildout:data-bin-directory}
mysql_software_libexec = ${software_definition:mysql_software}/libexec
mysql_datadir = ${configuration:mysql_datadir}
mysql_auto_start = false
mysql_cnf_file = ${buildout:etc-directory}/my.cnf
# template related
mysql_port = ${configuration:mysql_port}
mysql_host = ${configuration:mysql_host}
mysql_datadir = ${configuration:mysql_datadir}
mysql_pid = ${configuration:mysql_pid}
mysql_sock = ${configuration:mysql_sock}
mysql_error_log = ${buildout:log-directory}/mysql.err.log
mysql_slow_query_log = ${buildout:log-directory}/mysql.slow.log
mysql_slow_query_time = 5
# Add some extra configuration to mysqld part in my.cnf
mysqld-extra-configuration =
supervisor-priority = 10
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} (autorestart=true) ${:mysql_software_libexec}/mysqld [--defaults-file=${:mysql_cnf_file} --pid-file=${configuration:mysql_pid}]
[mysql-server-template]
<= mysql-instance
[buildout]
parts = oood-instance
[oood-instance]
depends =
${oood-directories:command}
recipe = erp5.recipe.ooodinstance
wrapper_path = ${buildout:data-bin-directory}/oood-runserw
oood_conf_file = ${buildout:etc-directory}/oood.conf
wrapper_part = oood-wrapper
configuration_part = oood-configuration
supervisor-priority = 20
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} (autorestart=true stopsignal=TERM stopwaitsecs=30) ${buildout:data-bin-directory}/oood-runserw ${buildout:etc-directory}
[oood-wrapper]
openoffice_python = ${software_definition:openoffice_software}/program/python
oood_pid = ${oood-configuration:oood_run}/server_pid.lock
openoffice_uno = ${oood-configuration:openoffice_uno}
oood_software = ${oood-configuration:oood_software}
[oood-configuration]
oood_software = ${software_definition:oood_software}
oood_run = ${buildout:var-directory}/oood
oood_tmp = ${:oood_run}
oood_host = 127.0.0.1
oood_port = ${configuration:oood_port}
oood_pool_host = localhost
oood_pool_range_start = ${configuration:oood_pool_range_start}
oood_instance_load_time = 20
oood_instance_timeout = 360
oood_virtual_display_id = 99
openoffice_uno = ${software_definition:openoffice_software}/basis-link/program/
openoffice_program = ${software_definition:openoffice_software}/program
oood_log_file = ${buildout:log-directory}/oood.log
[configuration]
oood_port = 8008
oood_pool_range_start = 4060
[oood-directories]
recipe = plone.recipe.command
depends = ${create-directories:command}
command = mkdir -p ${oood-configuration:oood_run}
update-command = ${:command}
[conversion-server-template]
<= oood-instance
[buildout]
parts =
sphinx-instance
[configuration]
sphinx_address = 127.0.0.1
sphinx_port = 9312
sphinx_sql_port = 9306
# below are candidates to be removed from global configuration
sphinx_data_directory = ${buildout:var-directory}/sphinx
sphinx_log_directory = ${buildout:log-directory}
[sphinx-instance]
depends =
${create-directories:command}
recipe = erp5.recipe.sphinxserver
sphinx_software_bin = ${software_definition:sphinx_software}/bin
sphinx_bin_directory = ${buildout:data-bin-directory}
sphinx_data_directory = ${configuration:sphinx_data_directory}
sphinx_log_directory = ${configuration:sphinx_log_directory}
sphinx_conf_file = ${buildout:etc-directory}/sphinx.conf
# template related
sphinx_address = ${configuration:sphinx_address}
sphinx_port = ${configuration:sphinx_port}
sphinx_sql_port = ${configuration:sphinx_sql_port}
supervisor-priority = 30
supervisor-program =
${:supervisor-priority} ${:_buildout_section_name_} (autorestart=true stopsignal=TERM) ${buildout:data-bin-directory}/searchd [ --nodetach ]
[buildout]
parts =
supervisor-instance
extensions += erp5.extension.sectionextender
section-extender =
supervisor:programs supervisor-program
[configuration]
supervisor_port = 9001
supervisor_host = 127.0.0.1
[supervisor-instance]
depends =
${supervisor:recipe}
${create-directories:command}
recipe = plone.recipe.command
command =
ln -sf ${buildout:bin-directory}/supervisorctl ${buildout:data-bin-directory}/supervisorctl
ln -sf ${buildout:bin-directory}/supervisord ${buildout:data-bin-directory}/supervisord
ln -sf ${buildout:bin-directory}/pidproxy ${buildout:data-bin-directory}/pidproxy
[pidproxy]
# this should've been provided by collective.recipe.supervisor itself
recipe = zc.recipe.egg
eggs = supervisor
scripts = pidproxy
[supervisor]
supervisord-conf = ${buildout:etc-directory}/supervisord.conf
depends = ${pidproxy:recipe}
recipe = collective.recipe.supervisor
serverurl = http://${configuration:supervisor_host}:${configuration:supervisor_port}
pp = ${buildout:directory}/eggs/supervisor-3.0a7-py2.5.egg/supervisor/pidproxy.py
port = ${configuration:supervisor_host}:${configuration:supervisor_port}