Right. Thanks for this, there are couple of solutions here and shell script is a reasonable solution but these methods seems counter to the simplicity of buildout. I had also seen a rebootstrap package in svn. I wonder if something similar could not be accomplished this way using python with a means of producing a callback. I really don't want anything too messy to accomplish this. Many thanks.


Darryl Cousins wrote:
Hi David,

I've tried out the methods described here:

and have plumped for the buildout.sh shell script which builds python
and then uses that to bootstrap and re-continue the buildout. It is
working well and I see that all eggs are then compiled with the compiled

I had already begun using a Makefile to build/test/run the project so I
find it convenient to use a shell script in the mix.


On Thu, 2007-12-20 at 21:03 -0400, David Pratt wrote:
Hey Darryl. Our minds were in a similar place today. I finally had decided to move away from my system python starting on my mac and also having a spot of trouble. I put something simple together below to illustrate what happened in my instance.

Here the eggs built with the python would not install. I initially though it was the lxml I was compiling, but it was just happened to be the first part requiring the custom-python. Eggs were made, and I could see the temp folder also, but when was finalizing the install, it threw the error and without much verbosity, the tempfolder it was installing into disappeared.

Note, I did not include the custom-python as a part in the buildout. I tend to like the python24:location type of notation since it is fairly explicit when you have a number of pieces of software you are building.


develop = .
parts = python24
index = http://download.zope.org/ppix
log-level = DEBUG

recipe = zc.recipe:cmmi
url = http://python.org/ftp/python/2.4.4/Python-2.4.4.tgz

executable = ${python24:location}/bin/python

recipe = zc.recipe.egg
interpreter = interpreter
eggs = Cheetah==1.0
python = custom-python

Here are the highlights:

Some verification it is using the right python...

Getting distribution for 'Cheetah==1.0'.
We have the best distribution that satisfies 'setuptools'.
Picked: setuptools = 0.6c7
Running easy_install:
/Users/davidpratt/Desktop/Buildouts/osxdeploy2/parts/python24/bin/python "-c" "from setuptools.command.easy_install import main; main()" "-mUNxd" "/Users/davidpratt/Desktop/Buildouts/osxdeploy2/eggs/tmprQq-MH" "-v" "/Users/davidpratt/Desktop/Buildouts/download-cache/dist/Cheetah-1.0.tar.gz"

Processing Cheetah-1.0.tar.gz

Last few lines of output.. some time later.

changing mode of /Users/davidpratt/Desktop/Buildouts/osxdeploy2/eggs/tmprQq-MH/Cheetah-1.0-py2.4-macosx-10.3-ppc.egg/EGG-INFO/top_level.txt to 755 changing mode of /Users/davidpratt/Desktop/Buildouts/osxdeploy2/eggs/tmprQq-MH/Cheetah-1.0-py2.4-macosx-10.3-ppc.egg/EGG-INFO/scripts/cheetah to 755 changing mode of /Users/davidpratt/Desktop/Buildouts/osxdeploy2/eggs/tmprQq-MH/Cheetah-1.0-py2.4-macosx-10.3-ppc.egg/EGG-INFO/scripts/cheetah-compile to 755

Installed /Users/davidpratt/Desktop/Buildouts/osxdeploy2/eggs/tmprQq-MH/Cheetah-1.0-py2.4-macosx-10.3-ppc.egg

Because this distribution was installed --multi-version, before you can
import modules from this package in an application, you will need to
'import pkg_resources' and then use a 'require()' call similar to one of
these examples, in order to select the desired version:

     pkg_resources.require("Cheetah")  # latest installed version
     pkg_resources.require("Cheetah==1.0")  # this exact version
     pkg_resources.require("Cheetah>=1.0")  # this version or higher

Note also that the installation directory must be on sys.path at runtime for
this to work. (e.g. by being the application's script directory, by being on
PYTHONPATH, or by being added to sys.path by your code.)

   Installing interpreter.
   Getting distribution for 'Cheetah==1.0'.
Error: Couldn't install: Cheetah 1.0
[mac-pg:~/Desktop/Buildouts/osxdeploy2] davidpra%

Jim Fulton wrote:
On Dec 20, 2007, at 6:03 PM, Darryl Cousins wrote:
I'm trying to created an isolated environment using buildout. I had
understood that defining a custom build python would ensure that all
eggs are installed and compiled with the custom python.

But when the buildout comes to install ZODB it is being compiled agains
the system python headers. (-I/usr/include/python2.4). Which is not what
I want, and at that point the custom python has not even been built.

Any thoughts.

python = custom-python
parts = python

recipe = zc.recipe.cmmi
url = http://www.python.org/ftp/python/2.4.4/Python-2.4.4.tar.bz2
extra_options = --with-threads

executable = ${buildout:parts-directory}/python/bin/python

Your buildout doesn't mention ZODB3 or anything that uses it, so it is hard to comment.


Jim Fulton
Zope Corporation

Zope3-users mailing list

Zope3-users mailing list

Reply via email to