Commit 26fbb047 authored by Gabriel Monnerat's avatar Gabriel Monnerat

Merge branch 'master' into apache

parents b6aee649 6d393215
Changes Changes
======= =======
0.16 (unreleased) 0.17 (unreleased)
----------------- -----------------
* No changes yet. * No changes yet.
0.16 (2011-07-15)
-----------------
* Improve Vifib and pure ERP5 instantiation [Rafael Monnerat]
* Use configurator for Vifib [Rafael Monnerat]
0.15 (2011-07-13) 0.15 (2011-07-13)
----------------- -----------------
......
...@@ -11,14 +11,13 @@ parts = ...@@ -11,14 +11,13 @@ parts =
[curl] [curl]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
url = http://curl.haxx.se/download/curl-7.21.3.tar.bz2 url = http://curl.haxx.se/download/curl-7.21.7.tar.bz2
md5sum = 5b57fee22090b5c43a6886fdd35af2ce md5sum = 5f6d50c4d4ee38c57fe37e3cff75adbd
configure-options = configure-options =
--disable-static --disable-static
--disable-ldap --disable-ldap
--disable-ldaps --disable-ldaps
--disable-rtsp --disable-rtsp
--disable-proxy
--disable-dict --disable-dict
--disable-telnet --disable-telnet
--disable-tftp --disable-tftp
......
...@@ -5,8 +5,8 @@ extends = ...@@ -5,8 +5,8 @@ extends =
[glib] [glib]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
url = http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.7.tar.bz2 url = http://ftp.gnome.org/pub/gnome/sources/glib/2.28/glib-2.28.8.tar.bz2
md5sum = feda1650c8646ad39c7b01d95b03766b md5sum = 789e7520f71c6a4bf08bc683ec764d24
configure-options = configure-options =
--disable-static --disable-static
--disable-selinux --disable-selinux
......
...@@ -3,7 +3,6 @@ extends = ...@@ -3,7 +3,6 @@ extends =
../zlib/buildout.cfg ../zlib/buildout.cfg
parts = parts =
libpng12
libpng libpng
[libpng-common] [libpng-common]
...@@ -14,12 +13,7 @@ environment = ...@@ -14,12 +13,7 @@ environment =
CPPFLAGS =-I${zlib:location}/include CPPFLAGS =-I${zlib:location}/include
LDFLAGS =-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib LDFLAGS =-L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib
[libpng12]
<= libpng-common
url = http://download.sourceforge.net/libpng/libpng-1.2.44.tar.bz2
md5sum = e3ac7879d62ad166a6f0c7441390d12b
[libpng] [libpng]
<= libpng-common <= libpng-common
url = http://download.sourceforge.net/libpng/libpng-1.5.2.tar.bz2 url = http://download.sourceforge.net/libpng/libpng-1.5.4.tar.bz2
md5sum = a003b37ed9afb0d9164eb7228421057c md5sum = b43afe39237b69859522455b215f9e85
...@@ -16,6 +16,8 @@ configure-options = ...@@ -16,6 +16,8 @@ configure-options =
--with-libxml-prefix=${libxml2:location} --with-libxml-prefix=${libxml2:location}
--without-crypto --without-crypto
--without-python --without-python
--without-debug
--without-debugger
environment = environment =
PATH=${pkgconfig:location}/bin:%(PATH)s PATH=${pkgconfig:location}/bin:%(PATH)s
CPPFLAGS=-I${zlib:location}/include CPPFLAGS=-I${zlib:location}/include
......
[buildout]
extends =
../perl/buildout.cfg
../perl-DBI/buildout.cfg
../perl-DBD-MySQL/buildout.cfg
parts =
maatkit
[maatkit]
recipe = hexagonit.recipe.cmmi
depends =
${perl:version}
${perl-DBI:version}
${perl-DBD-MySQL:version}
url = http://maatkit.googlecode.com/files/maatkit-7540.tar.gz
md5sum = 55457f98500b096a6bf549356d3445fe
configure-command =
${perl:location}/bin/perl Makefile.PL
...@@ -12,9 +12,9 @@ parts = ...@@ -12,9 +12,9 @@ parts =
[mariadb] [mariadb]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
version = 5.2.6 version = 5.2.7
url = http://www.percona.com/downloads/MariaDB/mariadb-${:version}/kvm-tarbake-jaunty-x86/mariadb-${:version}.tar.gz url = http://www.percona.com/downloads/MariaDB/mariadb-${:version}/kvm-tarbake-jaunty-x86/mariadb-${:version}.tar.gz
md5sum = e562aca71ae16b490196f99aa7e64b55 md5sum = 06b9b102946a3606b38348c0ebf18367
# compile directory is required to build mysql plugins. # compile directory is required to build mysql plugins.
keep-compile-dir = true keep-compile-dir = true
# configure: how to avoid searching for my.cnf? # configure: how to avoid searching for my.cnf?
......
--- DBD-mysql-4.019.back/Makefile.PL 2011-05-09 03:12:07.000000000 +0200
+++ DBD-mysql-4.019/Makefile.PL 2011-06-22 11:44:06.478371893 +0200
@@ -358,7 +358,14 @@
'Data::Dumper' => 0 };
}
-ExtUtils::MakeMaker::WriteMakefile(%o);
+
+my %config;
+if (defined($ENV{'OTHERLDFLAGS'})) {
+ $config{dynamic_lib} = { OTHERLDFLAGS => " $ENV{'OTHERLDFLAGS'} " };
+}
+
+
+ExtUtils::MakeMaker::WriteMakefile(%o, %config);
exit 0;
[buildout]
extends =
../perl/buildout.cfg
../perl-DBI/buildout.cfg
../mysql-tritonn-5.0/buildout.cfg
../zlib/buildout.cfg
../openssl/buildout.cfg
parts =
perl-DBD-MySQL
[perl-DBD-MySQL-patch]
recipe = hexagonit.recipe.download
md5sum = e12e9233f20b0370cfcf5228ea767fbc
url = ${:_profile_base_location_}/${:filename}
filename = DBD-mysql-4.019.rpathsupport.patch
download-only = true
[perl-DBD-MySQL]
recipe = hexagonit.recipe.cmmi
version = 4.019
depends =
${perl:version}
${perl-DBI:version}
url = http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.019.tar.gz
md5sum = 566d98ab8ffac9626a31f6f6d455558e
patches =
${perl-DBD-MySQL-patch:location}/${perl-DBD-MySQL-patch:filename}
patch-options = -p1
configure-command =
${perl:location}/bin/perl Makefile.PL --mysql_config=${mysql-tritonn-5.0:location}/bin/mysql_config
environment =
OTHERLDFLAGS=-Wl,-rpath=${zlib:location}/lib -Wl,-rpath=${mysql-tritonn-5.0:location}/lib/mysql -Wl,-rpath=${openssl:location}/lib
[buildout]
extends =
../perl/buildout.cfg
parts =
perl-DBI
[perl-DBI]
recipe = hexagonit.recipe.cmmi
version = 1.616
depends =
${perl:version}
url = http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.616.tar.gz
md5sum = 799313e54a693beb635b47918458f7c4
configure-command =
${perl:location}/bin/perl Makefile.PL
...@@ -12,7 +12,8 @@ depends = ...@@ -12,7 +12,8 @@ depends =
${perl-XML-NamespaceSupport:location} ${perl-XML-NamespaceSupport:location}
url = http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-SAX-0.96.tar.gz url = http://search.cpan.org/CPAN/authors/id/G/GR/GRANTM/XML-SAX-0.96.tar.gz
md5sum = bdcd4119a62505184e211e9dfaef0ab1 md5sum = bdcd4119a62505184e211e9dfaef0ab1
# say 'y' for 'Do you want XML::SAX to alter ParserDetails.ini? [Y]' question.
configure-command = configure-command =
${perl:location}/bin/perl Makefile.PL echo y | ${perl:location}/bin/perl Makefile.PL
environment = environment =
PERLLIB=blib/lib PERLLIB=blib/lib
...@@ -14,16 +14,17 @@ filename = ${:_buildout_section_name_} ...@@ -14,16 +14,17 @@ filename = ${:_buildout_section_name_}
[perl] [perl]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
version = 5.14.0 version = 5.14.1
url = http://www.cpan.org/src/5.0/perl-${:version}.tar.bz2 url = http://www.cpan.org/src/5.0/perl-${:version}.tar.bz2
md5sum = e7457deea78330c5f8eebb2fd2a45479 md5sum = 97cd306a2c22929cc141a09568f43bb0
siteprefix = ${buildout:parts-directory}/site_${:_buildout_section_name_}
patch-options = -p1 patch-options = -p1
patches = patches =
${perl-keep-linker-flags-in-ldflags.patch:location}/${perl-keep-linker-flags-in-ldflags.patch:filename} ${perl-keep-linker-flags-in-ldflags.patch:location}/${perl-keep-linker-flags-in-ldflags.patch:filename}
configure-command = configure-command =
sh Configure -des \ sh Configure -des \
-Dprefix=${buildout:parts-directory}/${:_buildout_section_name_} \ -Dprefix=${buildout:parts-directory}/${:_buildout_section_name_} \
-Dsiteprefix=${buildout:parts-directory}/site_${:_buildout_section_name_} \ -Dsiteprefix=${:siteprefix} \
-Dcflags=-I${gdbm:location}/include \ -Dcflags=-I${gdbm:location}/include \
-Dldflags="-L${gdbm:location}/lib -Wl,-rpath=${gdbm:location}/lib" \ -Dldflags="-L${gdbm:location}/lib -Wl,-rpath=${gdbm:location}/lib" \
-Ui_db \ -Ui_db \
......
...@@ -6,8 +6,8 @@ extends = ...@@ -6,8 +6,8 @@ extends =
[readline] [readline]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
url = http://ftp.gnu.org/gnu/readline/readline-6.1.tar.gz url = http://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
md5sum = fc2f7e714fe792db1ce6ddc4c9fb4ef3 md5sum = 67948acb2ca081f23359d0256e9a271c
configure-options = configure-options =
--disable-static --disable-static
--with-ncurses=${ncurses:location} --with-ncurses=${ncurses:location}
......
...@@ -48,14 +48,14 @@ lxml = 2.3 ...@@ -48,14 +48,14 @@ lxml = 2.3
meld3 = 0.6.7 meld3 = 0.6.7
netaddr = 0.7.5 netaddr = 0.7.5
setuptools = 0.6c12dev-r88846 setuptools = 0.6c12dev-r88846
slapos.core = 0.9 slapos.core = 0.12
slapos.libnetworkcache = 0.2 slapos.libnetworkcache = 0.2
xml-marshaller = 0.9.7 xml-marshaller = 0.9.7
z3c.recipe.scripts = 1.0.1 z3c.recipe.scripts = 1.0.1
zc.recipe.egg = 1.3.2 zc.recipe.egg = 1.3.2
# Required by: # Required by:
# slapos.core==0.9 # slapos.core==0.12
Flask = 0.7.2 Flask = 0.7.2
# Required by: # Required by:
...@@ -63,13 +63,14 @@ Flask = 0.7.2 ...@@ -63,13 +63,14 @@ Flask = 0.7.2
hexagonit.recipe.download = 1.5.0 hexagonit.recipe.download = 1.5.0
# Required by: # Required by:
# slapos.core==0.9 # slapos.core==0.12
netifaces = 0.5 netifaces = 0.5
# Required by: # Required by:
# slapos.core==0.9 # slapos.core==0.12
supervisor = 3.0a10 supervisor = 3.0a10
# Required by: # Required by:
# slapos.core==0.9 # slapos.core==0.12
zope.interface = 3.6.4 zope.interface = 3.6.4
...@@ -5,8 +5,8 @@ parts = ...@@ -5,8 +5,8 @@ parts =
[sqlite3] [sqlite3]
recipe = hexagonit.recipe.cmmi recipe = hexagonit.recipe.cmmi
url = http://www.sqlite.org/sqlite-autoconf-3070603.tar.gz url = http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
md5sum = 7eb41eea5ffa5cbe359a48629084c425 md5sum = 554026fe7fac47b1cf61c18d5fe43419
configure-options = configure-options =
--disable-static --disable-static
--enable-readline --enable-readline
......
...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages ...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
import glob import glob
import os import os
version = '0.16-dev' version = '0.17-dev'
name = 'slapos.cookbook' name = 'slapos.cookbook'
long_description = open("README.txt").read() + "\n" + \ long_description = open("README.txt").read() + "\n" + \
open("CHANGES.txt").read() + "\n" open("CHANGES.txt").read() + "\n"
......
...@@ -84,6 +84,23 @@ class Recipe(BaseSlapRecipe): ...@@ -84,6 +84,23 @@ class Recipe(BaseSlapRecipe):
apache_login=self.installBackendApache(ip=self.getGlobalIPv6Address(), apache_login=self.installBackendApache(ip=self.getGlobalIPv6Address(),
port=13000, backend=site_access, key=key, certificate=certificate)) port=13000, backend=site_access, key=key, certificate=certificate))
connection_dict = dict(site_url=apache_conf['apache_login'])
if self.parameter_dict.get("domain_name") is not None:
connection_dict["backend_url"] = apache_conf['apache_login']
connection_dict["domain_ip"] = self.getGlobalIPv6Address()
# XXX Define a fake domain_name for now.
frontend_name = self.parameter_dict.get("domain_name")
frontend_key, frontend_certificate = \
self.requestCertificate(frontend_name)
connection_dict["site_url"] = self.installFrontendZopeApache(
ip=self.getGlobalIPv6Address(), port=13001, name=frontend_name,
frontend_path='/%s' % self.site_id, backend_path='/%s' % self.site_id,
backend_url="http://%s" % site_access, key=frontend_key,
certificate=frontend_certificate)
default_bt5_list = [] default_bt5_list = []
if self.parameter_dict.get("flavour", "default") == 'configurator': if self.parameter_dict.get("flavour", "default") == 'configurator':
default_bt5_list = self.options.get("configurator_bt5_list", '').split() default_bt5_list = self.options.get("configurator_bt5_list", '').split()
...@@ -97,13 +114,13 @@ class Recipe(BaseSlapRecipe): ...@@ -97,13 +114,13 @@ class Recipe(BaseSlapRecipe):
self.installTestSuiteRunner(ca_conf, mysql_conf, conversion_server_conf, self.installTestSuiteRunner(ca_conf, mysql_conf, conversion_server_conf,
memcached_conf, kumo_conf) memcached_conf, kumo_conf)
self.linkBinary() self.linkBinary()
self.setConnectionDict(dict( connection_dict.update(**dict(
site_url=apache_conf['apache_login'],
site_user=user, site_user=user,
site_password=password, site_password=password,
memcached_url=memcached_conf['memcached_url'], memcached_url=memcached_conf['memcached_url'],
kumo_url=kumo_conf['kumo_address'] kumo_url=kumo_conf['kumo_address']
)) ))
self.setConnectionDict(connection_dict)
return self.path_list return self.path_list
def installZopeStandalone(self): def installZopeStandalone(self):
...@@ -130,14 +147,19 @@ class Recipe(BaseSlapRecipe): ...@@ -130,14 +147,19 @@ class Recipe(BaseSlapRecipe):
thread_amount_per_zope = int(self.options.get( thread_amount_per_zope = int(self.options.get(
'cluster_zope_thread_amount', 1)) 'cluster_zope_thread_amount', 1))
activity_node_amount = 2 activity_node_amount = int(self.options.get(
user_node_amount = 2 "cluster_activity_node_amount", 2))
user_node_amount = int(self.options.get(
"cluster_user_node_amount", 2))
ip = self.getLocalIPv4Address() ip = self.getLocalIPv4Address()
storage_dict = self._requestZeoFileStorage('Zeo Server 1', 'main') storage_dict = self._requestZeoFileStorage('Zeo Server 1', 'main')
zeo_conf = self.installZeo(ip) zeo_conf = self.installZeo(ip)
tidstorage_config = dict(host=ip, port='6001') tidstorage_config = dict(host=ip, port='6001')
# XXX How to define good values for this?
mount_point = '/' mount_point = '/'
check_path = '/erp5/account_module' check_path = '/erp5/account_module'
...@@ -328,6 +350,12 @@ class Recipe(BaseSlapRecipe): ...@@ -328,6 +350,12 @@ class Recipe(BaseSlapRecipe):
# workaround wrong assumptions of ERP5Type.tests.runUnitTest about # workaround wrong assumptions of ERP5Type.tests.runUnitTest about
# directory existence # directory existence
unit_test = os.path.join(testinstance, 'unit_test') unit_test = os.path.join(testinstance, 'unit_test')
connection_string_list = []
for test_database, test_user, test_password in \
mysql_conf['mysql_parallel_test_dict'][-4:]:
connection_string_list.append(
'%s@%s:%s %s %s' % (test_database, mysql_conf['ip'],
mysql_conf['tcp_port'], test_user, test_password))
if not os.path.isdir(unit_test): if not os.path.isdir(unit_test):
os.mkdir(unit_test) os.mkdir(unit_test)
runUnitTest = zc.buildout.easy_install.scripts([ runUnitTest = zc.buildout.easy_install.scripts([
...@@ -341,6 +369,7 @@ class Recipe(BaseSlapRecipe): ...@@ -341,6 +369,7 @@ class Recipe(BaseSlapRecipe):
'--erp5_sql_connection_string', '%(mysql_test_database)s@%' '--erp5_sql_connection_string', '%(mysql_test_database)s@%'
'(ip)s:%(tcp_port)s %(mysql_test_user)s ' '(ip)s:%(tcp_port)s %(mysql_test_user)s '
'%(mysql_test_password)s' % mysql_conf, '%(mysql_test_password)s' % mysql_conf,
'--extra_sql_connection_string_list',','.join(connection_string_list),
'--conversion_server_hostname=%(conversion_server_ip)s' % \ '--conversion_server_hostname=%(conversion_server_ip)s' % \
conversion_server_conf, conversion_server_conf,
'--conversion_server_port=%(conversion_server_port)s' % \ '--conversion_server_port=%(conversion_server_port)s' % \
...@@ -881,13 +910,18 @@ class Recipe(BaseSlapRecipe): ...@@ -881,13 +910,18 @@ class Recipe(BaseSlapRecipe):
ident = 'frontend_' + name ident = 'frontend_' + name
apache_conf = self._getApacheConfigurationDict(ident, ip, port) apache_conf = self._getApacheConfigurationDict(ident, ip, port)
apache_conf['server_name'] = name apache_conf['server_name'] = name
apache_conf['frontend_path'] = frontend_path
apache_conf['ssl_snippet'] = pkg_resources.resource_string(__name__, apache_conf['ssl_snippet'] = pkg_resources.resource_string(__name__,
'template/apache.ssl-snippet.conf.in') % dict( 'template/apache.ssl-snippet.conf.in') % dict(
login_certificate=certificate, login_key=key) login_certificate=certificate, login_key=key)
rewrite_rule_template = \ rewrite_rule_template = \
"RewriteRule ^%(path)s($|/.*) %(backend_url)s/VirtualHostBase/https/%(server_name)s:%(port)s%(backend_path)s/VirtualHostRoot/_vh_%(vhname)s$1 [L,P]\n" "RewriteRule ^%(path)s($|/.*) %(backend_url)s/VirtualHostBase/https/%(server_name)s:%(port)s%(backend_path)s/VirtualHostRoot/_vh_%(vhname)s$1 [L,P]\n"
path = pkg_resources.resource_string(__name__, 'template/apache.zope.conf.path-protected.in') % dict(path='/', access_control_string='none')
path = pkg_resources.resource_string(__name__,
'template/apache.zope.conf.path-protected.in') % \
dict(path='/', access_control_string='none')
if access_control_string is None: if access_control_string is None:
path_template = pkg_resources.resource_string(__name__, path_template = pkg_resources.resource_string(__name__,
'template/apache.zope.conf.path.in') 'template/apache.zope.conf.path.in')
...@@ -903,8 +937,7 @@ class Recipe(BaseSlapRecipe): ...@@ -903,8 +937,7 @@ class Recipe(BaseSlapRecipe):
backend_path=backend_path, backend_path=backend_path,
port=apache_conf['port'], port=apache_conf['port'],
vhname=frontend_path.replace('/', ''), vhname=frontend_path.replace('/', ''),
server_name=name server_name=name)
)
rewrite_rule = rewrite_rule_template % d rewrite_rule = rewrite_rule_template % d
apache_conf.update(**dict( apache_conf.update(**dict(
path_enable=path, path_enable=path,
...@@ -925,7 +958,7 @@ class Recipe(BaseSlapRecipe): ...@@ -925,7 +958,7 @@ class Recipe(BaseSlapRecipe):
) )
])) ]))
# Note: IPv6 is assumed always # Note: IPv6 is assumed always
return 'https://[%(ip)s]:%(port)s' % apache_conf return 'https://%(server_name)s:%(port)s%(frontend_path)s' % (apache_conf)
def installBackendApache(self, ip, port, backend, key, certificate, def installBackendApache(self, ip, port, backend, key, certificate,
suffix='', access_control_string=None): suffix='', access_control_string=None):
...@@ -953,7 +986,8 @@ class Recipe(BaseSlapRecipe): ...@@ -953,7 +986,8 @@ class Recipe(BaseSlapRecipe):
def installMysqlServer(self, ip, port, database='erp5', user='user', def installMysqlServer(self, ip, port, database='erp5', user='user',
test_database='test_erp5', test_user='test_user', template_filename=None, test_database='test_erp5', test_user='test_user', template_filename=None,
parallel_test_database_amount=100, mysql_conf=None): parallel_test_database_amount=100, mysql_conf=None, with_backup=True,
with_maatkit=True):
if mysql_conf is None: if mysql_conf is None:
mysql_conf = {} mysql_conf = {}
backup_directory = self.createBackupDirectory('mysql') backup_directory = self.createBackupDirectory('mysql')
...@@ -1027,6 +1061,7 @@ class Recipe(BaseSlapRecipe): ...@@ -1027,6 +1061,7 @@ class Recipe(BaseSlapRecipe):
)])) )]))
self.path_list.extend([mysql_conf_path]) self.path_list.extend([mysql_conf_path])
if with_backup:
# backup configuration # backup configuration
backup_directory = self.createBackupDirectory('mysql') backup_directory = self.createBackupDirectory('mysql')
full_backup = os.path.join(backup_directory, 'full') full_backup = os.path.join(backup_directory, 'full')
...@@ -1060,5 +1095,30 @@ class Recipe(BaseSlapRecipe): ...@@ -1060,5 +1095,30 @@ class Recipe(BaseSlapRecipe):
mysql_backup_cron = os.path.join(self.cron_d, 'mysql_backup') mysql_backup_cron = os.path.join(self.cron_d, 'mysql_backup')
open(mysql_backup_cron, 'w').write('0 0 * * * ' + backup_controller) open(mysql_backup_cron, 'w').write('0 0 * * * ' + backup_controller)
self.path_list.append(mysql_backup_cron) self.path_list.append(mysql_backup_cron)
if with_maatkit:
# maatkit installation
for mk_script_name in (
'mk-variable-advisor',
'mk-table-usage',
'mk-visual-explain',
'mk-config-diff',
'mk-deadlock-logger',
'mk-error-log',
'mk-index-usage',
'mk-query-advisor',
):
mk_argument_list = [self.options['perl_binary'],
self.options['%s_binary' % mk_script_name],
'--defaults-file=%s' % mysql_conf_path,
'--socket=%s' %mysql_conf['socket'].strip(), '--user=root',
]
environment = dict(PATH='%s' % self.bin_directory)
mk_exe = zc.buildout.easy_install.scripts([(
mk_script_name,'slapos.recipe.librecipe.execute', 'executee')],
self.ws, sys.executable, self.bin_directory, arguments=[
mk_argument_list, environment])[0]
self.path_list.append(mk_exe)
# The return could be more explicit database, user ... # The return could be more explicit database, user ...
return mysql_conf return mysql_conf
...@@ -31,6 +31,9 @@ import zc.buildout ...@@ -31,6 +31,9 @@ import zc.buildout
import sys import sys
class Recipe(slapos.recipe.erp5.Recipe): class Recipe(slapos.recipe.erp5.Recipe):
default_bt5_list = []
def installKeyAuthorisationApache(self, ip, port, backend, key, certificate, def installKeyAuthorisationApache(self, ip, port, backend, key, certificate,
ca_conf, key_auth_path='/erp5/portal_slap'): ca_conf, key_auth_path='/erp5/portal_slap'):
ssl_template = """SSLEngine on ssl_template = """SSLEngine on
...@@ -172,6 +175,12 @@ SSLCARevocationPath %(ca_crl)s""" ...@@ -172,6 +175,12 @@ SSLCARevocationPath %(ca_crl)s"""
self.installTidStorage(tidstorage_config['host'], tidstorage_config['port'], self.installTidStorage(tidstorage_config['host'], tidstorage_config['port'],
known_tid_storage_identifier_dict, 'http://'+login_haproxy) known_tid_storage_identifier_dict, 'http://'+login_haproxy)
self.linkBinary() self.linkBinary()
# Connect direct to Zope to create the instance.
self.installERP5Site(user, password, service_url_list[-1], mysql_conf,
conversion_server_conf, memcached_conf, kumo_conf,
self.site_id, self.default_bt5_list)
self.setConnectionDict(dict( self.setConnectionDict(dict(
front_end_url=apache_frontend_login, front_end_url=apache_frontend_login,
site_url=apache_login, site_url=apache_login,
...@@ -227,6 +236,10 @@ SSLCARevocationPath %(ca_crl)s""" ...@@ -227,6 +236,10 @@ SSLCARevocationPath %(ca_crl)s"""
self.installTestSuiteRunner(ca_conf, mysql_conf, conversion_server_conf, self.installTestSuiteRunner(ca_conf, mysql_conf, conversion_server_conf,
memcached_conf, kumo_conf) memcached_conf, kumo_conf)
self.linkBinary() self.linkBinary()
self.installERP5Site(user, password, zope_access, mysql_conf,
conversion_server_conf, memcached_conf, kumo_conf,
self.site_id, self.default_bt5_list)
self.setConnectionDict(dict( self.setConnectionDict(dict(
development_zope='http://%s:%s/' % (ip, zope_port), development_zope='http://%s:%s/' % (ip, zope_port),
site_user=user, site_user=user,
...@@ -260,6 +273,9 @@ SSLCARevocationPath %(ca_crl)s""" ...@@ -260,6 +273,9 @@ SSLCARevocationPath %(ca_crl)s"""
[('killpidfromfile', 'slapos.recipe.erp5.killpidfromfile', [('killpidfromfile', 'slapos.recipe.erp5.killpidfromfile',
'killpidfromfile')], self.ws, sys.executable, self.bin_directory)[0] 'killpidfromfile')], self.ws, sys.executable, self.bin_directory)[0]
self.path_list.append(self.killpidfromfile) self.path_list.append(self.killpidfromfile)
if self.parameter_dict.get("flavour", "default") == 'configurator':
self.default_bt5_list = self.options.get("configurator_bt5_list", '').split()
if self.parameter_dict.get('development', 'false').lower() == 'true': if self.parameter_dict.get('development', 'false').lower() == 'true':
return self.installDevelopment() return self.installDevelopment()
if self.parameter_dict.get('production', 'false').lower() == 'true': if self.parameter_dict.get('production', 'false').lower() == 'true':
......
...@@ -9,6 +9,7 @@ develop-eggs-directory = ${buildout:develop-eggs-directory} ...@@ -9,6 +9,7 @@ develop-eggs-directory = ${buildout:develop-eggs-directory}
recipe = ${instance-recipe:egg}:${instance-recipe:module} recipe = ${instance-recipe:egg}:${instance-recipe:module}
dcrond_binary = ${dcron:location}/sbin/crond dcrond_binary = ${dcron:location}/sbin/crond
haproxy_binary = ${haproxy:location}/sbin/haproxy haproxy_binary = ${haproxy:location}/sbin/haproxy
gzip_binary = ${gzip:location}/bin/gzip
httpd_binary = ${apache:location}/bin/httpd httpd_binary = ${apache:location}/bin/httpd
innobackupex_binary = ${xtrabackup:location}/bin/innobackupex innobackupex_binary = ${xtrabackup:location}/bin/innobackupex
kumo_gateway_binary = ${kumo:location}/bin/kumo-gateway kumo_gateway_binary = ${kumo:location}/bin/kumo-gateway
...@@ -32,6 +33,14 @@ tidstorage_repozo_binary = ${buildout:bin-directory}/tidstorage_repozo ...@@ -32,6 +33,14 @@ tidstorage_repozo_binary = ${buildout:bin-directory}/tidstorage_repozo
tidstoraged_binary = ${buildout:bin-directory}/tidstoraged tidstoraged_binary = ${buildout:bin-directory}/tidstoraged
xtrabackup_binary = ${xtrabackup:location}/bin/xtrabackup_51 xtrabackup_binary = ${xtrabackup:location}/bin/xtrabackup_51
zabbix_agent_binary = ${zabbix-agent:location}/sbin/zabbix_agent zabbix_agent_binary = ${zabbix-agent:location}/sbin/zabbix_agent
mk-variable-advisor_binary = ${perl:siteprefix}/bin/mk-variable-advisor
mk-table-usage_binary = ${perl:siteprefix}/bin/mk-table-usage
mk-visual-explain_binary = ${perl:siteprefix}/bin/mk-visual-explain
mk-config-diff_binary = ${perl:siteprefix}/bin/mk-config-diff
mk-deadlock-logger_binary = ${perl:siteprefix}/bin/mk-deadlock-logger
mk-error-log_binary = ${perl:siteprefix}/bin/mk-error-log
mk-index-usage_binary = ${perl:siteprefix}/bin/mk-index-usage
mk-query-advisor_binary = ${perl:siteprefix}/bin/mk-query-advisor
# cloudooo specific configuration # cloudooo specific configuration
ooo_binary_path = ${libreoffice-bin:location}/program ooo_binary_path = ${libreoffice-bin:location}/program
...@@ -69,4 +78,4 @@ environment = ...@@ -69,4 +78,4 @@ environment =
bt5_repository_list = ${bt5-repository:list} bt5_repository_list = ${bt5-repository:list}
configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catalog erp5_base erp5_workflow erp5_configurator erp5_configurator_standard erp5_configurator_maxma_demo erp5_configurator_ung configurator_bt5_list = ${instance-recipe:configurator_bt5_list}
...@@ -21,11 +21,14 @@ unzip = true ...@@ -21,11 +21,14 @@ unzip = true
egg = slapos.cookbook egg = slapos.cookbook
module = erp5 module = erp5
# Additional Configuration
configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catalog erp5_base erp5_workflow erp5_configurator erp5_configurator_standard erp5_configurator_maxma_demo erp5_configurator_ung
[template] [template]
# Default template for erp5 instance. # Default template for erp5 instance.
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg url = ${:_profile_base_location_}/instance.cfg
md5sum = 65d9b269e204ba49ac5ff11e891a4b84 md5sum = 77062d472e88aca0fe632bdee4f9bb21
output = ${buildout:directory}/template.cfg output = ${buildout:directory}/template.cfg
mode = 0644 mode = 0644
...@@ -34,7 +37,7 @@ mode = 0644 ...@@ -34,7 +37,7 @@ mode = 0644
recipe = slapos.recipe.template recipe = slapos.recipe.template
url = ${:_profile_base_location_}/configuration.json url = ${:_profile_base_location_}/configuration.json
md5sum = cbe1d75339c6cb20e1aef818797face1 md5sum = cbe1d75339c6cb20e1aef818797face1
output = ${buildout:directory}/validator.json output = ${buildout:directory}/schema.json
mode = 0644 mode = 0644
[versions] [versions]
...@@ -79,17 +82,18 @@ hexagonit.recipe.download = 1.5.0 ...@@ -79,17 +82,18 @@ hexagonit.recipe.download = 1.5.0
http-parser = 0.6.2 http-parser = 0.6.2
ipdb = 0.4 ipdb = 0.4
meld3 = 0.6.7 meld3 = 0.6.7
mr.developer = 1.17
ordereddict = 1.1 ordereddict = 1.1
paramiko = 1.7.7.1 paramiko = 1.7.7.1
plone.recipe.command = 1.1 plone.recipe.command = 1.1
ply = 3.4 ply = 3.4
psutil = 0.2.1 psutil = 0.3.0
pycrypto = 2.3 pycrypto = 2.3
python-ldap = 2.4.0 python-ldap = 2.4.1
python-memcached = 1.45 python-memcached = 1.45
restkit = 3.3.0 restkit = 3.3.0
rtjp-eventlet = 0.3.2 rtjp-eventlet = 0.3.2
slapos.cookbook = 0.9 slapos.cookbook = 0.16
slapos.recipe.template = 1.1 slapos.recipe.template = 1.1
threadframe = 0.2 threadframe = 0.2
timerserver = 2.0.2 timerserver = 2.0.2
...@@ -99,8 +103,8 @@ validictory = 0.7.1 ...@@ -99,8 +103,8 @@ validictory = 0.7.1
xupdate-processor = 0.4 xupdate-processor = 0.4
# Required by: # Required by:
# slapos.core==0.8 # slapos.core==0.12
Flask = 0.7.1 Flask = 0.7.2
# Required by: # Required by:
# PasteScript==1.7.3 # PasteScript==1.7.3
...@@ -113,7 +117,7 @@ WSGIUtils = 0.7 ...@@ -113,7 +117,7 @@ WSGIUtils = 0.7
# Required by: # Required by:
# cloudooo==1.2.3 # cloudooo==1.2.3
# slapos.core==0.8 # slapos.core==0.12
argparse = 1.1 argparse = 1.1
# Required by: # Required by:
...@@ -129,11 +133,11 @@ fpconst = 0.7.2 ...@@ -129,11 +133,11 @@ fpconst = 0.7.2
ipython = 0.10.2 ipython = 0.10.2
# Required by: # Required by:
# slapos.cookbook==0.9 # slapos.cookbook==0.16
netaddr = 0.7.5 netaddr = 0.7.5
# Required by: # Required by:
# slapos.core==0.8 # slapos.core==0.12
netifaces = 0.4 netifaces = 0.4
# Required by: # Required by:
...@@ -141,17 +145,38 @@ netifaces = 0.4 ...@@ -141,17 +145,38 @@ netifaces = 0.4
python-magic = 0.4.0.1 python-magic = 0.4.0.1
# Required by: # Required by:
# Products.CMFActionIcons==2.1.3
# Products.CMFCalendar==2.2.2
# Products.CMFCore==2.2.4
# Products.CMFDefault==2.2.2
# Products.CMFTopic==2.2.1
# Products.CMFUid==2.2.1
# Products.DCWorkflow==2.2.3nxd002
# Products.DCWorkflowGraph==0.4nxd001
# Products.ExternalEditor==1.1.0
# Products.GenericSetup==1.6.3
# Products.MimetypesRegistry==2.0.2
# Products.PluggableAuthService==1.7.5
# Products.PluginRegistry==1.3b1
# Products.TIDStorage==5.4.7.dev-r45842
# Products.Zelenium==1.0.3
# Zope2==2.12.19
# five.localsitemanager==2.0.5
# mr.developer==1.17
# python-ldap==2.4.1
# zc.buildout==1.5.3-dev-SlapOS-005 # zc.buildout==1.5.3-dev-SlapOS-005
# zope.deprecation==3.4.0
# zope.structuredtext==3.4.0
setuptools = 0.6c12dev-r88846 setuptools = 0.6c12dev-r88846
# Required by: # Required by:
# slapos.cookbook==0.9 # slapos.cookbook==0.16
slapos.core = 0.8 slapos.core = 0.12
# Required by: # Required by:
# slapos.core==0.8 # slapos.core==0.12
supervisor = 3.0a10 supervisor = 3.0a10
# Required by: # Required by:
# slapos.cookbook==0.9 # slapos.cookbook==0.16
xml-marshaller = 0.9.7 xml-marshaller = 0.9.7
...@@ -11,7 +11,7 @@ mode = 0644 ...@@ -11,7 +11,7 @@ mode = 0644
[kvmsource] [kvmsource]
command = command =
(${git:location}/bin/git clone --quiet http://git.erp5.org/repos/slapos.kvm.git ${:location} && cd ${:location} && git reset --hard 94ee45cc02e69798cac8209d2296fd1751125018) || (rm -fr ${:location} ; exit 1) (${git:location}/bin/git clone --quiet http://git.erp5.org/repos/slapos.kvm.git ${:location} && cd ${:location} && ${git:location}/bin/git reset --hard 94ee45cc02e69798cac8209d2296fd1751125018) || (rm -fr ${:location} ; exit 1)
update-command = update-command =
[versions] [versions]
......
[buildout]
parts =
nbdserverinstance
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
[nbdserverinstance]
recipe = ${instance-recipe:egg}:${instance-recipe:module}
qemu_path = ${nbdserver:location}/bin/qemu-nbd
onetimeupload_path = ${buildout:bin-directory}/onetimeupload
[buildout]
extends =
../../stack/nbd.cfg
../../stack/shacache-client.cfg
parts +=
template
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg
md5sum = 82e948e1c0cb0d5540ef185edeef3ec3
output = ${buildout:directory}/template.cfg
mode = 0644
...@@ -11,19 +11,16 @@ eggs += slapos.core ...@@ -11,19 +11,16 @@ eggs += slapos.core
[instance-recipe] [instance-recipe]
module = vifib module = vifib
# Additional Configuration
configurator_bt5_list = erp5_core_proxy_field_legacy erp5_full_text_myisam_catalog erp5_base erp5_workflow erp5_configurator erp5_configurator_vifib
[erp5_repository_list]
repository_id_list += vifib/master
[vifib] [vifib]
# Recipe zerokspot.recipe.git is disabled, as is not possible to change its <= erp5
# 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/slapos.core.git repository = http://git.erp5.org/repos/slapos.core.git
branch = master revision = 3f766ab93c5312c75b7315a60238c1c5b3e4170d
revision = f95ca3ccda07292895939ef9b48678acb5f524ce
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
[local-bt5-repository] [local-bt5-repository]
# XXX: workaround for zc.buildout bug, as list += ends up with adding new entry # XXX: workaround for zc.buildout bug, as list += ends up with adding new entry
......
...@@ -2,12 +2,14 @@ ...@@ -2,12 +2,14 @@
extensions = extensions =
slapos.rebootstrap slapos.rebootstrap
slapos.zcbworkarounds slapos.zcbworkarounds
buildout-versions
mr.developer mr.developer
find-links = find-links =
http://www.nexedi.org/static/packages/source/slapos.buildout/ http://www.nexedi.org/static/packages/source/slapos.buildout/
http://dist.repoze.org http://dist.repoze.org
http://www.nexedi.org/static/packages/source/ http://www.nexedi.org/static/packages/source/
http://www.owlfish.com/software/wsgiutils/download.html
# Separate from site eggs # Separate from site eggs
allowed-eggs-from-site-packages = allowed-eggs-from-site-packages =
...@@ -25,6 +27,7 @@ allow-hosts = ...@@ -25,6 +27,7 @@ allow-hosts =
peak.telecommunity.com peak.telecommunity.com
psutil.googlecode.com psutil.googlecode.com
www.dabeaz.com www.dabeaz.com
www.owlfish.com
extends = extends =
# Exact version of Zope # Exact version of Zope
...@@ -37,12 +40,14 @@ extends = ...@@ -37,12 +40,14 @@ extends =
../component/git/buildout.cfg ../component/git/buildout.cfg
../component/glib/buildout.cfg ../component/glib/buildout.cfg
../component/graphviz/buildout.cfg ../component/graphviz/buildout.cfg
../component/gzip/buildout.cfg
../component/haproxy/buildout.cfg ../component/haproxy/buildout.cfg
../component/hookbox/buildout.cfg ../component/hookbox/buildout.cfg
../component/imagemagick/buildout.cfg ../component/imagemagick/buildout.cfg
../component/kumo/buildout.cfg ../component/kumo/buildout.cfg
../component/libreoffice-bin/buildout.cfg ../component/libreoffice-bin/buildout.cfg
../component/lxml-python/buildout.cfg ../component/lxml-python/buildout.cfg
../component/maatkit/buildout.cfg
../component/mariadb/buildout.cfg ../component/mariadb/buildout.cfg
../component/memcached/buildout.cfg ../component/memcached/buildout.cfg
../component/mysql-python/buildout.cfg ../component/mysql-python/buildout.cfg
...@@ -82,7 +87,7 @@ parts = ...@@ -82,7 +87,7 @@ parts =
stunnel stunnel
w3m w3m
poppler poppler
libpng12 libpng
ghostscript ghostscript
mariadb mariadb
sphinx sphinx
...@@ -215,7 +220,7 @@ location = ${buildout:parts-directory}/${:_buildout_section_name_} ...@@ -215,7 +220,7 @@ location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true stop-on-error = true
repository = http://git.erp5.org/repos/erp5.git repository = http://git.erp5.org/repos/erp5.git
branch = master branch = master
revision = 336a8d63bdcabd92bfe3d9466685e5cd47fad716 revision = dd36cf064495e04f2ad0eaa9c527a2c3246e9ecb
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 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 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
......
...@@ -12,6 +12,7 @@ extends = ...@@ -12,6 +12,7 @@ extends =
../component/openssl/buildout.cfg ../component/openssl/buildout.cfg
../component/rdiff-backup/buildout.cfg ../component/rdiff-backup/buildout.cfg
../component/dcron/buildout.cfg ../component/dcron/buildout.cfg
../component/libpng/buildout.cfg
parts = parts =
template template
...@@ -64,8 +65,8 @@ configure-options = ...@@ -64,8 +65,8 @@ configure-options =
--disable-docs --disable-docs
--enable-vnc-png --enable-vnc-png
--disable-vnc-jpeg --disable-vnc-jpeg
--extra-cflags="-I${gnutls:location}/include -I${libuuid:location}/include -I${zlib:location}/include" --extra-cflags="-I${gnutls:location}/include -I${libuuid:location}/include -I${zlib:location}/include -I${libpng:location}/include"
--extra-ldflags="-Wl,-rpath -Wl,${gnutls:location}/lib -L${libuuid:location}/lib -Wl,-rpath -Wl,${libuuid:location}/lib -L${zlib:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib" --extra-ldflags="-Wl,-rpath -Wl,${gnutls:location}/lib -L${gnutls:location}/lib -Wl,-rpath -Wl,${libpng:location}/lib -L${libpng:location}/lib -L${libuuid:location}/lib -Wl,-rpath -Wl,${libuuid:location}/lib -L${zlib:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib -lpng -lz -lgnutls"
--disable-werror --disable-werror
environment = environment =
PKG_CONFIG_PATH=${gnutls:location}/lib/pkgconfig PKG_CONFIG_PATH=${gnutls:location}/lib/pkgconfig
......
[buildout]
extends =
../component/python-2.6/buildout.cfg
../component/lxml-python/buildout.cfg
../component/zlib/buildout.cfg
../component/git/buildout.cfg
# Python2.6 needed by Flask and pyopenssl
extensions =
slapos.rebootstrap
parts +=
nbdserver
pyOpenSSL-python
eggs
find-links +=
http://www.nexedi.org/static/packages/source/slapos.buildout/
versions = versions
# Use only quite well working sites.
allow-hosts =
*.nexedi.org
*.python.org
*.sourceforge.net
dist.repoze.org
effbot.org
github.com
peak.telecommunity.com
psutil.googlecode.com
www.dabeaz.com
[rebootstrap]
section = python2.6
version = 3
eggs = slapos.libnetworkcache
[nbdserver]
recipe = hexagonit.recipe.cmmi
path = ${nbdserversource:location}/
configure-options =
--disable-system
--disable-kvm
--extra-cflags="-I${zlib:location}/include"
--extra-ldflags="-L${zlib:location}/lib -Wl,-rpath -Wl,${zlib:location}/lib"
--disable-werror
[nbdserversource]
recipe=plone.recipe.command
location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true
command =
(${git:location}/bin/git clone --quiet http://git.erp5.org/repos/slapos.kvm.git ${:location} ) || (rm -fr ${:location} ; exit 1)
update-command =
cd ${:location} && ${git:location}/bin/git pull --quiet origin master
[instance-recipe]
egg = slapos.cookbook
module = nbdserver
[eggs]
recipe = zc.recipe.egg
eggs =
slapos.toolbox
slapos.cookbook
pyOpenSSL
[pyOpenSSL-python]
recipe = zc.recipe.egg:custom
egg = pyOpenSSL
include-dirs =
${openssl:location}/include/
${python2.6:location}/include/
library-dirs =
${openssl:location}/lib/
${python2.6:location}/lib/
rpath =
${openssl:location}/lib/
${python2.6:location}/lib/
[versions]
# Use SlapOS patched zc.buildout
zc.buildout = 1.5.3-dev-SlapOS-005
Jinja2 = 2.5.5
Werkzeug = 0.6.2
apache-libcloud = 0.5.2
hexagonit.recipe.cmmi = 1.5.0
meld3 = 0.6.7
plone.recipe.command = 1.1
pyOpenSSL = 0.12
pycrypto = 2.3
slapos.cookbook = 0.14
slapos.recipe.template = 1.1
slapos.toolbox = 0.6
# Required by:
# slapos.core==0.9
# slapos.toolbox==0.6
Flask = 0.7.2
# Required by:
# slapos.cookbook==0.14
PyXML = 0.8.4
# Required by:
# slapos.core==0.9
argparse = 1.1
# Required by:
# slapos.recipe.template==1.1
collective.recipe.template = 1.8
# Required by:
# hexagonit.recipe.cmmi==1.5.0
hexagonit.recipe.download = 1.5.0
# Required by:
# slapos.cookbook==0.14
# slapos.core==0.9
# slapos.toolbox==0.6
# xml-marshaller==0.9.7
lxml = 2.3
# Required by:
# slapos.cookbook==0.14
netaddr = 0.7.5
# Required by:
# slapos.core==0.9
netifaces = 0.4
# Required by:
# slapos.toolbox==0.6
paramiko = 1.7.7.1
# Required by:
# slapos.toolbox==0.6
psutil = 0.3.0
# Required by:
# slapos.cookbook==0.14
# slapos.core==0.9
# slapos.toolbox==0.6
# zc.buildout==1.5.3-dev-SlapOS-005
# zc.recipe.egg==1.3.2
setuptools = 0.6c12dev-r88846
# Required by:
# slapos.cookbook==0.14
# slapos.toolbox==0.6
slapos.core = 0.9
# Required by:
# slapos.core==0.9
supervisor = 3.0a10
# Required by:
# slapos.cookbook==0.14
# slapos.toolbox==0.6
xml-marshaller = 0.9.7
# Required by:
# slapos.cookbook==0.14
zc.recipe.egg = 1.3.2
# Required by:
# slapos.core==0.9
zope.interface = 3.6.4
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment