#209: Add buildout to Unified Installer
- Contents
The Unified Installer should provide a buildout-based framework to make it easier to manage product and egg additions.
- Proposed by
- Steve McMahon
- Seconded by
- Wichert Akkerman
- Proposal type
- Architecture
- Assigned to release
- Repository branch
- trunk
- State
- completed
Definitions
Motivation
The big hurdle that the Unified Installer gets many users over is the building of a Python -- complete with PIL, libjpeg, and libz interfaces -- that will work with Zope and Python.
Users with Unified Installer builds face a problem, though, when it comes to adding egg-based products as they won't have the easy facilities for adding eggs and zcml provided by buildout.
Also, minor-version migration is painful for Unified Installer users. They must install the new update and copy over their data and custom packages. In a buildout environment, they'd be able to just run bin/buildout.
Assumptions
Proposal
Provide a version of the Unified Installer that builds the base Python, but then uses buildout for the final steps.
Implementation
I've been sketching this out in a Unified Installer branch and a new plone.recipe.unifiedinstaller, and have a working tarball in the Plone section of Launchpad (look for Unified Installer Plus Buildout).
A few key elements in this scheme:
- The installer includes and installs a .buildout cache of eggs and downloads so that the installer may be run offline.
- plone.recipe.unifiedinstaller does much of the finishing work previously done by the shell scripts.
- plone.recipe.command is used to set ownership for the root install to match the effective user.
I've also taken the opportunity of the rewrite to add several POSIX style options to install.sh which will make it much easier to add new instances to an existing install.
Deliverables
Tarball that may be unpacked and executed.
Update of plone.org/documentation tutorial on Unified Installer.
Risks
Divergence from the binary installers, which can't depend on having a gcc/make environment, and will have to bundle a binary Zope.
Some (though not many) changes in layout from the old Unified Installer that will undoubtedly confuse some of the more recipe-bound users.
Users mucking up their production environments by running bin/buildout without backing up or planning a migration.
Progress log
An implementation of PLIP 209: "Unified Installer Plus Buildout" is
available for testing at:
https://launchpad.net/plone/3.0/3.0.5/+download/Plone-3.0.5-UnifiedInstallerBuildout-beta1.tar.gz
This is a full installer kit -- and a sizable download since it
includes all the components. If you'd like to just review the code,
the branch is at:
https://svn.plone.org/svn/plone/Installers/UnifiedInstaller/branches/UnifiedInstallerPlusBuildout/
I've also worked on two recipes that are used in the installer:
plone.recipe.precompiler compiles .pyc files for all the product .py
files, and makes it possible to tighten file ownerships a bit more
than if the Zope daemon write into those directories.
https://svn.plone.org/svn/collective/buildout/plone.recipe.precompiler/trunk/
plone.recipe.unifiedinstaller is only really useful for the Unified
Installer. It takes care of creating some scripts and texts similar to
those created by the old Unified Installer.
https://svn.plone.org/svn/collective/buildout/plone.recipe.unifiedinstaller/trunk/
Participants
Steve McMahon (smcmahon on plone.org, SteveM on #plone)

