From 1c5ee45b20bee7ce8d2f25691a856929c987c4ba Mon Sep 17 00:00:00 2001 From: Stephan Geulette Date: Tue, 15 Jan 2013 14:05:32 +0000 Subject: [PATCH] new buildout for dmsmail --- INSTALL.txt | 112 +++++++++++++++++++ INSTALL_fr.txt | 115 +++++++++++++++++++ Makefile | 27 +++++ README.txt | 17 +++ base.cfg | 171 ++++++++++++++++++++++++++++ bin/subproducts.sh | 15 +++ bin/svn_global.sh | 20 ++++ booking.cfg | 18 +++ bootstrap.py | 55 +++++++++ buildout.cfg | 4 + dev.cfg | 45 ++++++++ ez_setup.py | 235 +++++++++++++++++++++++++++++++++++++++ prod.cfg | 62 +++++++++++ products/EXTERNALS.txt | 3 + products/README.txt | 1 + src/EXTERNALS.txt | 5 + src/README.txt | 1 + standard-config.cfg | 22 ++++ standard-config.py | 9 ++ templates/logrotate.conf | 11 ++ var/README.txt | 1 + versions-base.cfg | 55 +++++++++ versions-dev.cfg | 8 ++ zeo_add.conf | 7 ++ zope_add.conf | 9 ++ zope_add_zeo.conf | 16 +++ 26 files changed, 1044 insertions(+) create mode 100644 INSTALL.txt create mode 100644 INSTALL_fr.txt create mode 100644 Makefile create mode 100644 README.txt create mode 100755 base.cfg create mode 100755 bin/subproducts.sh create mode 100755 bin/svn_global.sh create mode 100644 booking.cfg create mode 100644 bootstrap.py create mode 100755 buildout.cfg create mode 100644 dev.cfg create mode 100644 ez_setup.py create mode 100644 prod.cfg create mode 100644 products/EXTERNALS.txt create mode 100644 products/README.txt create mode 100644 src/EXTERNALS.txt create mode 100644 src/README.txt create mode 100644 standard-config.cfg create mode 100644 standard-config.py create mode 100644 templates/logrotate.conf create mode 100644 var/README.txt create mode 100644 versions-base.cfg create mode 100644 versions-dev.cfg create mode 100644 zeo_add.conf create mode 100644 zope_add.conf create mode 100644 zope_add_zeo.conf diff --git a/INSTALL.txt b/INSTALL.txt new file mode 100644 index 0000000..e34ee7b --- /dev/null +++ b/INSTALL.txt @@ -0,0 +1,112 @@ +We assume the installation in the folder /srv/zinstances/site421 + (that can be changed) and on an ubuntu distribution. +Your real username must replace in our commands the string "username". +Each command, specified by the symbol ">", can be executed + (without the symbol >). + +First we become root +> sudo -s + +We install the necessary libraries +> apt-get install build-essential +> apt-get install libreadline5-dev +> apt-get install zlib1g-dev (support zlib) +> apt-get install libjpeg62-dev +> apt-get install subversion +> apt-get install libpq-dev + +We work in the folder /srv +> cd /srv + +We change the owner of the folder to avoid continue working as root +> chown -R username:username . + +We leave the user root. +> exit + +We create some directories +> mkdir install +> mkdir zinstances +> cd install + +We install python2.7 that will be used to run the buildout and zope instance +> wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz +> tar xvzf Python-2.7.3.tgz +> cd Python-2.7.3 +> ./configure --prefix=/srv/python273 +> make +> make install + +We install the python utility easy_install +> cd /srv/install +> wget http://peak.telecommunity.com/dist/ez_setup.py +> /srv/python273/bin/python ez_setup.py + +We install the python utility virtualenv +> /srv/python273/bin/easy_install virtualenv + +We can define a cache for buildout +See http://www.imio.be/support/documentation/tutoriels/utilisation-dun-buildout/definition-dun-cache-pour-buildout/ + +We download the buildout files in our folder +> cd /srv/zinstances +> svn co http://svn.communesplone.org/svn/communesplone/buildout/server.sites/tags/make421/ site421 +> cd site421 + +We modify the Makefile file to indicate the real path of the virtualenv utility. +To do that, you can edit the file in a simple text editor. +It's necessary to replace the line "virtualenv-2.7 --no-site-packages ." by + "/srv/python273/bin/virtualenv --no-site-packages ." +OR +You can create a link to our virtualenv without modifying Makefile + "ln -s /srv/python273/bin/virtualenv /usr/local/bin/virtualenv-2.7" + +we initialize the buildout +> make bootstrap + +1) Use in development (without ZEO, with debug products) + +We execute the buildout after each modification in the buildout.cfg file +> make buildout +OR +> bin/buildout -v + +We start the zope server. +> bin/instance1 fg +OR +> bin/instance1 start + +We can connect the zope server in a browser on the following address http://localhost:8080/manage_main + +We can add a mount point (separate database file, defined in the file zope_add.conf) +=> choose in the list (up right in the browser page) "ZODB Mount Point" +Select a mount point name ("xxx" and click on "Create selected mount points"). + +All objects added in the zope folder "xxx" will be stored in the db file "xxx.fs" + in place of in "Data.fs". + +2) Usage in production (multiple Zope instances for the same database, ZEO mode) + +We can replace in the file buildout.cfg the name dev.cfg by prod.cfg. + +We execute the buildout after each modification in the buildout.cfg file +> make buildout +OR +> bin/buildout -v + +We start the zeo server. +> bin/zeoserver start + +We start each zope server (following instance name section). +> bin/instance1 fg +OR +> bin/instance1 start + +We can connect the zope server in a browser on the following address http://localhost:8080/manage_main + +We can add a mount point (separate database file, defined in the file zeo_add.conf and zope_add_zeo.conf) +=> choose in the list (up right in the browser page) "ZODB Mount Point" +Select a mount point name ("xxx" and click on "Create selected mount points"). + +All objects added in the zope folder "xxx" will be stored in the db file "xxx.fs" + in place of in "Data.fs". diff --git a/INSTALL_fr.txt b/INSTALL_fr.txt new file mode 100644 index 0000000..fcb4753 --- /dev/null +++ b/INSTALL_fr.txt @@ -0,0 +1,115 @@ +On suppose l'installation dans un répertoire /srv/zinstances/site421 + (qui peut être changé) et sur une distribution ubuntu. +Le nom de votre utilisateur est remplacé dans nos commandes par "votreuser". + Veuillez utiliser le votre à la place. +Chaque commande, précisée ci-dessous après le symbole ">", peut être exécutée + (sans taper le symbole >). + +On passe d'abord en root +> sudo -s + +On installe des librairies nécessaires +> apt-get install build-essential +> apt-get install libreadline5-dev +> apt-get install zlib1g-dev (support zlib) +> apt-get install libjpeg62-dev +> apt-get install subversion +> apt-get install libpq-dev + +On va travailler dans le dossier /srv +> cd /srv + +On se met propriétaire du dossier pour ne plus devoir travailler en root +> chown -R votreuser:votreuser . + +On quitte l'utilisateur root. +> exit + +On crée maintenant une arborescence de dossiers +> mkdir install +> mkdir zinstances +> cd install + +On va installer un python2.7 qui sera utilisé dans notre buildout +> wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz +> tar xvzf Python-2.7.3.tgz +> cd Python-2.7.3 +> ./configure --prefix=/srv/python273 +> make +> make install + +On installe l'utilitaire python easy_install +> cd /srv/install +> wget http://peak.telecommunity.com/dist/ez_setup.py +> /srv/python273/bin/python ez_setup.py + +On installe l'utilitaire python virtualenv +> /srv/python273/bin/easy_install virtualenv + +On définit un cache pour buildout (si ce n'est déjà fait) +Voir http://www.imio.be/support/documentation/tutoriels/utilisation-dun-buildout/definition-dun-cache-pour-buildout/ + +On télécharge le buildout dans un dossier +> cd /srv/zinstances +> svn co http://svn.communesplone.org/svn/communesplone/buildout/server.sites/tags/make421/ site421 +> cd site421 + +On modifie le fichier Makefile pour indiquer le chemin réel de virtualenv. +Pour cela, on peut ouvrir le fichier avec un éditeur de texte. +Il faut remplacer la ligne "virtualenv-2.7 --no-site-packages ." par + "/srv/python273/bin/virtualenv --no-site-packages ." +OU +On peut créer un lien symbolique vers notre virtualenv sans modifier alors le fichier Makefile + "ln -s /srv/python273/bin/virtualenv /usr/local/bin/virtualenv-2.7" + +On initialise le buildout +> make bootstrap + +1) Utilisation en développement (sans ZEO, avec des outils de debug) + +Le fichier buildout.cfg utilise par défaut dev.cfg. + +On exécute le buildout après chaque modification du fichier buildout.cfg +> make buildout +OU +> bin/buildout -v + +On démarre le serveur zope. +> bin/instance1 fg +OU +> bin/instance1 start + +On peut se connecter à zope dans un navigateur sur l'adresse http://localhost:8080/manage_main + +On peut ajouter un mount point (fichier db séparé à définir dans le fichier zope_add.conf) +=> choisir dans la liste (en haut à droite de la page du navigateur) "ZODB Mount Point" +Sélectionner le nom du mount point désiré ("xxx" et cliquer sur "Create selected mount points"). + +Tout ce qui va être ajouté dans le dossier "xxx" sera maintenant localisé dans le fichier db "xxx.fs" + plutôt que dans "Data.fs". + +2) Utilisation en production (plusieurs instances Zope pour la même database, ZEO) + +Il faut remplacer dans le fichier buildout.cfg l'appel à dev.cfg par prod.cf. + +On exécute le buildout après chaque modification du fichier buildout.cfg +> make buildout +OU +> bin/buildout -v + +On démarre le serveur ZEO. +> bin/zeoserver start + +On démarre chaque instance zope (suivant le nom de la section définie). +> bin/instance1 fg +OU +> bin/instance1 start + +On peut se connecter à zope dans un navigateur sur l'adresse http://localhost:8080/manage_main + +On peut ajouter un mount point (fichier db séparé à définir dans les fichiers zeo_add.conf et zope_add_zeo.conf) +=> choisir dans la liste (en haut à droite de la page du navigateur) "ZODB Mount Point" +Sélectionner le nom du mount point désiré ("xxx" et cliquer sur "Create selected mount points"). + +Tout ce qui va être ajouté dans le dossier "xxx" sera maintenant localisé dans le fichier db "xxx.fs" + plutôt que dans "Data.fs". diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0f25bd3 --- /dev/null +++ b/Makefile @@ -0,0 +1,27 @@ +#!/usr/bin/make +# +all: run + +.PHONY: bootstrap +bootstrap: + virtualenv-2.7 --no-site-packages . + ./bin/python bootstrap.py + +.PHONY: buildout +buildout: + if ! test -f bin/buildout;then make bootstrap;fi + bin/buildout -v + +.PHONY: standard-config +standard-config: + if ! test -f bin/buildout;then make bootstrap;fi + bin/buildout -vt 5 -c standard-config.cfg + +.PHONY: run +run: + if ! test -f bin/instance1;then make buildout;fi + bin/instance1 fg + +.PHONY: cleanall +cleanall: + rm -fr develop-eggs downloads eggs parts .installed.cfg diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..f0591bb --- /dev/null +++ b/README.txt @@ -0,0 +1,17 @@ +This buildout relates the configuration of the application zope instance of the CommunesPlone central server. + +The main config file is buildout.cfg. +Is is empty by default. +It's necessary to call in it a subconfig file name: dev.cfg, prod.cfg, ... + +The included external products are listed in cfg file: + - section [productdistros] (release form) + - section [svnproducts] (svn form) + - subsection eggs + +The directory 'parts/omelette' contains (as links) all the used products. + +Outside zeo mode (dev.cfg, base.cgf), a "zope_add.conf" extends the generated zope.conf to add mount_points definition. +In zeo mode (prod.cfg), a "zope_add_zeo.conf" and "zeo_add.conf" extend the generated zope.conf and zeo.conf to add mount_points definition. + +The install process is described in the file : INSTALL.txt diff --git a/base.cfg b/base.cfg new file mode 100755 index 0000000..c209f82 --- /dev/null +++ b/base.cfg @@ -0,0 +1,171 @@ +[buildout] +extensions = + buildout.dumppickedversions + mr.developer +dump-picked-versions-file = versions-picked.cfg +overwrite-picked-versions-file = true +#allow-picked-versions = false + +parts = + productdistros + svnproducts + omelette + instance1 + zopepy + repozo + +# If you want to get the last versions of eggs, you have to comment the line "versions-prod.cfg" +extends = + http://dist.plone.org/release/4.2.3/versions.cfg + versions-base.cfg + +versions=versions + +# Add additional egg download sources here. dist.plone.org contains archives +# of Plone packages. +find-links = + http://dist.plone.org/release/4.2.3 + http://dist.plone.org/thirdparty + http://download.zope.org/ppix/ + http://download.zope.org/distribution/ + http://effbot.org/downloads + http://b.pypi.python.org + http://c.pypi.python.org + http://d.pypi.python.org + +# Add additional eggs here +# elementtree is required by Plone +eggs = + Plone + Pillow +# PyXML +#- hotfix -# +# Products.PloneHotfix20110720 # <= 3.3.5 , <= 4.0.3 +# Products.PloneHotfix20110531 # <= 3.3.5 , <= 4.0.5 +# Products.PloneHotfix20121106 # <= 4.2.2, <= 4.3a2 +# Products.Zope_Hotfix_20110622 # <= 3.3.5 , <= 4.0.7, <= 4.1rc3 + +# Reference any eggs you are developing here, one per line +# e.g.: develop = src/my.package +develop = +# src/communesplone.iconified_document_actions +# src/communesplone.layout + +# Only take stable eggs +#prefer-final = true + +# Always unzip eggs +unzip = true + +auto-checkout += + +[sources] + + +# Use this section to download additional old-style products. +# List any number of URLs for product tarballs under URLs (separate +# with whitespace, or break over several lines, with subsequent lines +# indented). If any archives contain several products inside a top-level +# directory, list the archive file name (i.e. the last part of the URL, +# normally with a .tar.gz suffix or similar) under 'nested-packages'. +# If any archives extract to a product directory with a version suffix, list +# the archive name under 'version-suffix-packages'. + +[productdistros] +recipe = plone.recipe.distros +urls = +# file://${buildout:directory}/ZPsycopgDA_2013.tgz +nested-packages = +version-suffix-packages = + +[svnproducts] +recipe = infrae.subversion +urls = +# http://svn.communesplone.org/svn/communesplone/ACPTranslation/tags/plone3x ACPTranslation +# http://svn.communesplone.org/svn/communesplone/contacts/tags/0.6 contacts + http://svn.communesplone.org/svn/communesplone/CPUtils/trunk CPUtils + +[omelette] +recipe = collective.recipe.omelette +eggs = ${instance1:eggs} +products = ${instance1:products} +#packages = ${zope2:location}/lib/python ./ + +[instance1] +recipe = plone.recipe.zope2instance +#effective-user = +user = admin:admin +http-address = 8081 +zserver-threads = 4 +debug-mode = off +verbose-security = off +zope-conf-additional = + %define FILESTORAGE ${buildout:directory}/var/filestorage + %define BLOBSTORAGE ${buildout:directory}/var/blobstorage + %include ${buildout:directory}/zope_add.conf +environment-vars = + PYTHON_EGG_CACHE ${buildout:directory}/python-eggs + zope_i18n_compile_mo_files true + +# If you want Zope to know about any additional eggs, list them here. +# This should include any development eggs you listed in develop-eggs above, +# e.g. eggs = ${buildout:eggs} my.package +eggs = + ${buildout:eggs} + Products.DocFinderTab +# Products.LinguaPlone + Products.PloneFormGen +# Products.PloneGazette +# Products.PlonePopoll + Products.csvreplicata +# Solgema.fullcalendar +# atreal.mailservices + beyondskins.responsive +# communesplone.iconified_document_actions +# communesplone.layout +# collective.captcha # collective.pfg.norobots is more user friendly + collective.ckeditor +# collective.contentleadimage + collective.easyslider +# collective.easytemplate +# collective.js.fancybox + collective.pfg.norobots + collective.plonetruegallery +# collective.ptg.fancybox + collective.ptg.highslide + collective.quickupload +# collective.tinymcetemplates +# medialog.subskins +# collective.zipfiletransport #2.2.1 not working in P4 + plone.app.dexterity + plone.app.multilingual + plone.multilingualbehavior + +# If you want to register ZCML slugs for any packages, list them here. +# e.g. zcml = my.package my.other.package +zcml = +# Solgema.fullcalendar +# atreal.mailservices +# communesplone.iconified_document_actions +# communesplone.layout +# collective.contentleadimage +# collective.js.fancybox +# collective.ptg.fancybox +# collective.tinymcetemplates +# medialog.subskins + +products = + ${buildout:directory}/products + ${productdistros:location} + ${svnproducts:location} + +[zopepy] +recipe = zc.recipe.egg +eggs = ${instance1:eggs} +interpreter = zopepy +scripts = zopepy + +[repozo] +recipe = zc.recipe.egg +eggs = ZODB3 +scripts = repozo diff --git a/bin/subproducts.sh b/bin/subproducts.sh new file mode 100755 index 0000000..92f9647 --- /dev/null +++ b/bin/subproducts.sh @@ -0,0 +1,15 @@ +#!/bin/bash +ScriptLocation="." +if [[ $0 == '/'* ]]; +then ScriptLocation="`dirname $0`" +else ScriptLocation="`pwd`"/"`dirname $0`" +fi + +# Installation of psycopg 2.0.13 +cd $ScriptLocation/../subproducts +#tar -xvzf psycopg2-2.0.13.tar.gz +#cd psycopg2-2.0.13 +#$ScriptLocation/python ./setup.py install +#cd .. +#rm -f -R psycopg2-2.0.13 + diff --git a/bin/svn_global.sh b/bin/svn_global.sh new file mode 100755 index 0000000..caf6a75 --- /dev/null +++ b/bin/svn_global.sh @@ -0,0 +1,20 @@ +#!/bin/bash +svnparam="st" +if [ "$*" != "" ]; +then + svnparam=$* +else + echo "!! You must pass a svn command as parameter : st, diff, up, ..." + exit 0 +fi + +ScriptLocation="." +if [[ $0 == '/'* ]]; +then + ScriptLocation="`dirname $0`" +else + ScriptLocation="`pwd`"/"`dirname $0`" +fi + +# svn diff on all subdirectories of parts/svnproducts +find $ScriptLocation/../parts/svnproducts/ -maxdepth 1 -mindepth 1 -type d -name "??*" -print0 |xargs -0 svn $svnparam diff --git a/booking.cfg b/booking.cfg new file mode 100644 index 0000000..19baf9a --- /dev/null +++ b/booking.cfg @@ -0,0 +1,18 @@ +[buildout] +auto-checkout += + Products.PloneBooking + +[sources] +Products.PloneBooking = svn https://svn.plone.org/svn/collective/Products.PloneBooking/trunk/ + +[instance1] +#use the instance1 eggs to extends the base eggs defined in [buildout] +recipe = plone.recipe.zope2instance + +eggs += + Products.PloneBooking + +zcml += + +[versions] +#Products.PloneBooking = diff --git a/bootstrap.py b/bootstrap.py new file mode 100644 index 0000000..1bfffe3 --- /dev/null +++ b/bootstrap.py @@ -0,0 +1,55 @@ +############################################################################## +# +# 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 + +tmpeggs = tempfile.mkdtemp() + +try: + import pkg_resources +except ImportError: + ez = {} + exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' + ).read() in ez + ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) + + import pkg_resources + +cmd = 'from setuptools.command.easy_install import main; main()' +if sys.platform == 'win32': + cmd = '"%s"' % cmd # work around spawn lamosity on windows + +ws = pkg_resources.working_set +assert os.spawnle( + os.P_WAIT, sys.executable, sys.executable, + '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout', + dict(os.environ, + PYTHONPATH= + ws.find(pkg_resources.Requirement.parse('setuptools')).location + ), + ) == 0 + +ws.add_entry(tmpeggs) +ws.require('zc.buildout') +import zc.buildout.buildout +zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap']) +shutil.rmtree(tmpeggs) diff --git a/buildout.cfg b/buildout.cfg new file mode 100755 index 0000000..231a5d4 --- /dev/null +++ b/buildout.cfg @@ -0,0 +1,4 @@ +[buildout] +# Add the config name you want to use in the extends attribute: dev.cfg, prod.cfg, ... +extends = + dev.cfg \ No newline at end of file diff --git a/dev.cfg b/dev.cfg new file mode 100644 index 0000000..4d6db7b --- /dev/null +++ b/dev.cfg @@ -0,0 +1,45 @@ +[buildout] +extends = + base.cfg + versions-dev.cfg + +parts += + test + +[instance1] +#use the instance1 eggs to extends the base eggs defined in [buildout] +recipe = plone.recipe.zope2instance +debug-mode = on +verbose-security = on +environment-vars += + ENABLE_PRINTING_MAILHOST True + +eggs += + Products.Clouseau +# Products.PDBDebugMode + Products.PrintingMailHost + archetypes.schematuning + ipdb + iw.debug + plone.reload +zcml += + iw.debug + +# create bin/test command +[test] +recipe = zc.recipe.testrunner +defaults = ['--auto-color', '--auto-progress'] +#extra-paths = ${buildout:directory}/parts/omelette +#include-site-packages = true +eggs = + Pillow + Plone +# Products.csvreplicata + collective.MockMailHost +# Products.PlonePopoll + ipdb + plone.app.testing +environment = testenv + +[testenv] +zope_i18n_compile_mo_files = true diff --git a/ez_setup.py b/ez_setup.py new file mode 100644 index 0000000..98e4cba --- /dev/null +++ b/ez_setup.py @@ -0,0 +1,235 @@ +#!python +"""Bootstrap setuptools installation + +If you want to use setuptools in your package's setup.py, just include this +file in the same directory with it, and add this to the top of your setup.py:: + + from ez_setup import use_setuptools + use_setuptools() + +If you want to require a specific version of setuptools, set a download +mirror, or use an alternate download directory, you can do so by supplying +the appropriate options to ``use_setuptools()``. + +This file can also be run as a script to install or upgrade setuptools. +""" +import sys +DEFAULT_VERSION = "0.6c9" +DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3] + +md5_data = { + 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca', + 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb', + 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b', + 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a', + 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618', + 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac', + 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5', + 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4', + 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c', + 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b', + 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27', + 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277', + 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa', + 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e', + 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e', + 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f', + 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2', + 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc', + 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167', + 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64', + 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d', + 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20', + 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab', + 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53', + 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2', + 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e', + 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372', + 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902', + 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de', + 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b', + 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03', + 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a', + 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6', + 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a', +} + +import sys, os +try: from hashlib import md5 +except ImportError: from md5 import md5 + +def _validate_md5(egg_name, data): + if egg_name in md5_data: + digest = md5(data).hexdigest() + if digest != md5_data[egg_name]: + print >>sys.stderr, ( + "md5 validation of %s failed! (Possible download problem?)" + % egg_name + ) + sys.exit(2) + return data + +def use_setuptools( + version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, + download_delay=15 +): + """Automatically find/download setuptools and make it available on sys.path + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end with + a '/'). `to_dir` is the directory where setuptools will be downloaded, if + it is not already available. If `download_delay` is specified, it should + be the number of seconds that will be paused before initiating a download, + should one be required. If an older version of setuptools is installed, + this routine will print a message to ``sys.stderr`` and raise SystemExit in + an attempt to abort the calling script. + """ + was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules + def do_download(): + egg = download_setuptools(version, download_base, to_dir, download_delay) + sys.path.insert(0, egg) + import setuptools; setuptools.bootstrap_install_from = egg + try: + import pkg_resources + except ImportError: + return do_download() + try: + pkg_resources.require("setuptools>="+version); return + except pkg_resources.VersionConflict, e: + if was_imported: + print >>sys.stderr, ( + "The required version of setuptools (>=%s) is not available, and\n" + "can't be installed while this script is running. Please install\n" + " a more recent version first, using 'easy_install -U setuptools'." + "\n\n(Currently using %r)" + ) % (version, e.args[0]) + sys.exit(2) + else: + del pkg_resources, sys.modules['pkg_resources'] # reload ok + return do_download() + except pkg_resources.DistributionNotFound: + return do_download() + +def download_setuptools( + version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir, + delay = 15 +): + """Download setuptools from a specified location and return its filename + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end + with a '/'). `to_dir` is the directory where the egg will be downloaded. + `delay` is the number of seconds to pause before an actual download attempt. + """ + import urllib2, shutil + egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3]) + url = download_base + egg_name + saveto = os.path.join(to_dir, egg_name) + src = dst = None + if not os.path.exists(saveto): # Avoid repeated downloads + try: + from distutils import log + if delay: + log.warn(""" +--------------------------------------------------------------------------- +This script requires setuptools version %s to run (even to display +help). I will attempt to download it for you (from +%s), but +you may need to enable firewall access for this script first. +I will start the download in %d seconds. + +(Note: if this machine does not have network access, please obtain the file + + %s + +and place it in this directory before rerunning this script.) +---------------------------------------------------------------------------""", + version, download_base, delay, url + ); from time import sleep; sleep(delay) + log.warn("Downloading %s", url) + src = urllib2.urlopen(url) + # Read/write all in one block, so we don't create a corrupt file + # if the download is interrupted. + data = _validate_md5(egg_name, src.read()) + dst = open(saveto,"wb"); dst.write(data) + finally: + if src: src.close() + if dst: dst.close() + return os.path.realpath(saveto) + +def main(argv, version=DEFAULT_VERSION): + """Install or upgrade setuptools and EasyInstall""" + try: + import setuptools + except ImportError: + egg = None + try: + egg = download_setuptools(version, delay=0) + sys.path.insert(0,egg) + from setuptools.command.easy_install import main + return main(list(argv)+[egg]) # we're done here + finally: + if egg and os.path.exists(egg): + os.unlink(egg) + else: + if setuptools.__version__ == '0.0.1': + print >>sys.stderr, ( + "You have an obsolete version of setuptools installed. Please\n" + "remove it from your system entirely before rerunning this script." + ) + sys.exit(2) + + req = "setuptools>="+version + import pkg_resources + try: + pkg_resources.require(req) + except pkg_resources.VersionConflict: + try: + from setuptools.command.easy_install import main + except ImportError: + from easy_install import main + main(list(argv)+[download_setuptools(delay=0)]) + sys.exit(0) # try to force an exit + else: + if argv: + from setuptools.command.easy_install import main + main(argv) + else: + print "Setuptools version",version,"or greater has been installed." + print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)' + +def update_md5(filenames): + """Update our built-in md5 registry""" + + import re + + for name in filenames: + base = os.path.basename(name) + f = open(name,'rb') + md5_data[base] = md5(f.read()).hexdigest() + f.close() + + data = [" %r: %r,\n" % it for it in md5_data.items()] + data.sort() + repl = "".join(data) + + import inspect + srcfile = inspect.getsourcefile(sys.modules[__name__]) + f = open(srcfile, 'rb'); src = f.read(); f.close() + + match = re.search("\nmd5_data = {\n([^}]+)}", src) + if not match: + print >>sys.stderr, "Internal error!" + sys.exit(2) + + src = src[:match.start(1)] + repl + src[match.end(1):] + f = open(srcfile,'w') + f.write(src) + f.close() + + +if __name__=='__main__': + if len(sys.argv)>2 and sys.argv[1]=='--md5update': + update_md5(sys.argv[2:]) + else: + main(sys.argv[1:]) \ No newline at end of file diff --git a/prod.cfg b/prod.cfg new file mode 100644 index 0000000..11dd68b --- /dev/null +++ b/prod.cfg @@ -0,0 +1,62 @@ +[buildout] +extends = + base.cfg + +allow-picked-versions = false + +parts += + debug-instance + zeoserver + logrotate + instance2 + instance3 + instance4 + +[zeoserver] +recipe = plone.recipe.zeoserver +zeo-address = 8100 +#effective-user = ${instance1:effective-user} +pack-days = 7 +pack-keep-old = false +monitor-address = 8101 +zeo-conf-additional = + %define FILESTORAGE ${buildout:directory}/var/filestorage + %define BLOBSTORAGE ${buildout:directory}/var/blobstorage + %include ${buildout:directory}/zeo_add.conf + +[instance1] +recipe = plone.recipe.zope2instance +zeo-client = true +#http-address = 8081 +zeo-address = ${zeoserver:zeo-address} +zodb-cache-size = 5000 +zeo-client-cache-size = 300MB +shared-blob = on +zope-conf-additional = + %define ZEOADDRESS ${zeoserver:zeo-address} + %define ZEOINSTANCE ${buildout:directory}/parts/zeoserver/var + %define BLOBSTORAGE ${buildout:directory}/var/blobstorage + %include ${buildout:directory}/zope_add_zeo.conf + +[instance2] +<= instance1 +http-address = 8082 + +[instance3] +<= instance1 +http-address = 8083 + +[instance4] +<= instance1 +http-address = 8084 + +[debug-instance] +<= instance1 +http-address = 8080 +debug-mode = on +verbose-security = on + +[logrotate] +recipe = collective.recipe.template +input = templates/logrotate.conf +output = ${buildout:directory}/logrotate.conf diff --git a/products/EXTERNALS.txt b/products/EXTERNALS.txt new file mode 100644 index 0000000..7a873dc --- /dev/null +++ b/products/EXTERNALS.txt @@ -0,0 +1,3 @@ +# +# taken into account by: svn propset svn:externals -F ./EXTERNALS.txt . +# diff --git a/products/README.txt b/products/README.txt new file mode 100644 index 0000000..5a8ccfd --- /dev/null +++ b/products/README.txt @@ -0,0 +1 @@ +Old-style Zope products you are developing can be added here diff --git a/src/EXTERNALS.txt b/src/EXTERNALS.txt new file mode 100644 index 0000000..6bda035 --- /dev/null +++ b/src/EXTERNALS.txt @@ -0,0 +1,5 @@ +# +# taken into account by: svn propset svn:externals -F ./EXTERNALS.txt . +# +#communesplone.iconified_document_actions http://svn.communesplone.org/svn/communesplone/communesplone.iconified_document_actions/trunk/ +#communesplone.layout http://svn.communesplone.org/svn/communesplone/communesplone.layout/trunk diff --git a/src/README.txt b/src/README.txt new file mode 100644 index 0000000..0014180 --- /dev/null +++ b/src/README.txt @@ -0,0 +1 @@ +Packages in eggs that you develop should go in this directory diff --git a/standard-config.cfg b/standard-config.cfg new file mode 100644 index 0000000..cb4ab64 --- /dev/null +++ b/standard-config.cfg @@ -0,0 +1,22 @@ +[buildout] +extends = + buildout.cfg + +parts += + standard + +[instance1] +eggs += + collective.recipe.plonesite + +[versions] +collective.recipe.plonesite = 1.8.1 + +[standard] +recipe = collective.recipe.plonesite +site-id = standard +instance = instance1 +default-language = fr +profiles-initial = Products.CMFPlone:plone-content +site-replace = false +post-extras = standard-config.py \ No newline at end of file diff --git a/standard-config.py b/standard-config.py new file mode 100644 index 0000000..61e8913 --- /dev/null +++ b/standard-config.py @@ -0,0 +1,9 @@ +from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod +# we add the external method cputils_install +if not hasattr(app, 'cputils_install'): + manage_addExternalMethod(app, 'cputils_install', '', 'CPUtils.utils', 'install') +# we run this method +app.cputils_install(app) +# we add the properties hiddenProducts, shownProducts +#from Products.CPUtils.hiddenProductsList import dic_hpList +# to be continued \ No newline at end of file diff --git a/templates/logrotate.conf b/templates/logrotate.conf new file mode 100644 index 0000000..5568e93 --- /dev/null +++ b/templates/logrotate.conf @@ -0,0 +1,11 @@ +# This file is generated from templates/logrotate.conf. +# Please do not edit the copy in etc/ + +${buildout:directory}/var/log/*.log { +rotate 52 +weekly +create +compress +delaycompress +notifempty +} diff --git a/var/README.txt b/var/README.txt new file mode 100644 index 0000000..5a2a586 --- /dev/null +++ b/var/README.txt @@ -0,0 +1 @@ +This directory contains the Data.fs ZODB data storage, and other runtime files diff --git a/versions-base.cfg b/versions-base.cfg new file mode 100644 index 0000000..7062ea6 --- /dev/null +++ b/versions-base.cfg @@ -0,0 +1,55 @@ +[versions] +Pillow = 1.7.8 +Products.AdvancedQuery = 3.0.3 +Products.DocFinderTab = 1.0.5 +Products.PloneFormGen = 1.7.6 +Products.PloneHotfix20121106 = 1.2 +Products.PythonField = 1.1.3 +Products.TALESField = 1.1.3 +Products.TemplateFields = 1.2.5 +Products.csvreplicata = 1.1.11 +beyondskins.responsive = 0.4 +collective.MockMailHost = 0.5 +collective.ckeditor = 3.6.8 +collective.easyslider = 1.1.1 +collective.pfg.norobots = 1.0 +collective.plonetruegallery = 3.2a1 +collective.ptg.highslide = 1.1.1 +collective.quickupload = 1.5.7 +infrae.subversion = 1.4.5 +plone.app.multilingual = 1.0b3 +plone.multilingualbehavior = 1.0b3 +plone.recipe.distros = 1.5 + +#Required by: +#Products.PloneFormGen 1.7.6 +collective.js.jqueryui = 1.9.2.0 + +#Required by: +#collective.ckeditor 3.6.8 +collective.plonefinder = 1.0.2 + +#Required by: +#collective.pfg.norobots 1.0 +collective.z3cform.norobots = 1.4.2 + +#Required by: +#collective.plonetruegallery 3.2a1 +collective.ptg.galleria = 1.2.1 + +#Required by: +#collective.ckeditor 3.6.8 +demjson = 1.6 + +#Required by: +#collective.captcha 1.7 +skimpyGimpy = 1.4 + +#Required by: +#plone.app.multilingual 1.0b3 +archetypes.multilingual = 1.0b3 + +#Required by: +#plone.app.multilingual 1.0b3 +#plone.multilingualbehavior 1.0b3 +plone.multilingual = 1.0b3 diff --git a/versions-dev.cfg b/versions-dev.cfg new file mode 100644 index 0000000..0054594 --- /dev/null +++ b/versions-dev.cfg @@ -0,0 +1,8 @@ +[versions] +Products.Clouseau = 1.0 +#Products.PDBDebugMode = 1.3.1 +Products.PrintingMailHost = 0.7 +archetypes.schematuning = 1.2 +ipdb = 0.7 +ipython = 0.13.1 +iw.debug = 0.3 diff --git a/zeo_add.conf b/zeo_add.conf new file mode 100644 index 0000000..38a1e47 --- /dev/null +++ b/zeo_add.conf @@ -0,0 +1,7 @@ +# Define each mount point fs as the following block +# Change the file named 'zope_add_zeo.conf' too + + + path $FILESTORAGE/xxx.fs + blob-dir $BLOBSTORAGE-xxx + diff --git a/zope_add.conf b/zope_add.conf new file mode 100644 index 0000000..bb3bfb0 --- /dev/null +++ b/zope_add.conf @@ -0,0 +1,9 @@ +# Define each mount point as the following block + + + + path $FILESTORAGE/xxx.fs + blob-dir $BLOBSTORAGE-xxx + + mount-point /xxx + diff --git a/zope_add_zeo.conf b/zope_add_zeo.conf new file mode 100644 index 0000000..214c38c --- /dev/null +++ b/zope_add_zeo.conf @@ -0,0 +1,16 @@ +# Define each mount point as the following block +# Change the file named 'zeo_add.conf' too +# 13 lines to copy + + + + blob-dir $BLOBSTORAGE-xxx + shared-blob-dir on + server $ZEOADDRESS + storage xxx + name xxx_zeostorage + var $ZEOINSTANCE/var + cache-size 300MB + + mount-point /xxx +