Wanted to manage Python modules more effectively
Component-based Zope 3 still became a monolith. Gaaaa!
Easy_install (still) was geared to installing into shared Python
(Virtualenv helps a lot, but...)
Needed more predictable outcome
Building 2 checkouts of the same project should produce the same result, regardless of history.
source configuration
buildout-source-release:
bin/buildout-source-release \ -n cmsappdb-0.1.0 \ svn+ssh://svn.zope.org/repos/main/Sandbox/J1m/pycon2011/dev \ dbsource.cfg
produces cmsappdb-0.1.0.tgz
Copy source release tar archive to RPM source directory.
spec file
Run rpmbuild:
rpmbuild -ba cmsappdb.spec
Produces source and binary RPM
Install:
sudo rpm -i cmsappdb-0.1.0-0.x86_64.rpm
After software is installed in production, configure "deployments".
Create buildout configurations that install configuration files, startup scripts, cron jobs, and so on to implement an application.
system buildouts (zc.sbo):
/opt/cmsappdb/bin/sbo cmsappdb ample
/etc/ample /etc/ample/gc-config /etc/ample/index-zdaemon.conf /etc/ample/index-zeo.conf /etc/ample/main-zdaemon.conf /etc/ample/main-zeo.conf /etc/ample/pack.sh /var/log/ample /var/run/ample /etc/init.d/ample-main /etc/init.d/ample-index /etc/init.d/ample /etc/cron.d/ample-pack
New customer, EX. Want a simplified configuration:
[buildout] parts = ex [ex] recipe = cmsappdbmetarecipe main-port = 8200 pack-time = 1 3 * * 6
Meta recipe written in Python, just like other recipes
Generate configuration by adding parts