Added Selenium 2 support for collective.recipe.seleniumrc

I wanted to use the collective.recipe.seleniumrc buildout recipe to deploy Selenium RC, but quickly discovered that it didn’t work with recent Selenium 2 versions, because the recipe assumes that downloads are .zip files with embedded .jar files but new versions of Selenium RC have the recommended “standalone” package come as just .jar files.

So I made the changes to support Selenium 2 and published them here:

I sent an email to the maintainer so that hopefully this support will get merged in but until that happens, you can use my recipe by using a buildout.cfg like this:

find-links =
parts = seleniumrc

recipe = collective.recipe.seleniumrc>=0.6dev

How to have a buildout config that extends another buildout config

Buildout is a pretty useful tool, but the documentation is somewhat lacking. I needed to have specialized buildouts for dev and staging that extend a more general buildout. I couldn’t find this in the buildout docs, but I found it here.

In my case, I needed a buildout for staging that omits software that we already have installed via RPMs. Luckily it’s possible:

$ cat staging.cfg 
extends = buildout.cfg
eggs -=

As you might guess, += and = also work and do what you’d expect.

Dropbox + glibc 2.4 buildout

I wrote a previous post on how I got Dropbox working on my DreamHost VPS. It was tricky because the DreamHost VPS had glibc 2.3 and the Dropbox binary needs glibc 2.4.

Those instructions were somewhat complex and I’ve been messing around a bit with Buildout lately, so I thought it would be fun to develop a buildout recipe that automates it. So here you go:

This buildout downloads and compiles glibc 2.4 and installs it in a sandbox with the Dropbox software. It also sets up Supervisor and uses it to manage the Dropbox daemon.

Try it and let me know if it works for you. Of course if you find problems or have enhancements, you can fork it and send me pull requests.

Fun with zc.buildout

I’ve been exploring zc.buildout (another link) lately. In the past, I’ve typically gone the simpler route of using virtualenv and pip, but I knew that buildout could do some powerful things and I’ve long wanted to kick the tires.

I’m using buildout for a Django project at work and it’s working out pretty well, though I sense that I might just be scratching the surface. Tonight, I wanted to play with some of the other buildout recipes.

The result is this educational buildout gist that demonstrates a recipe for building and deploying Varnish and a recipe for installing Supervisor.

The supervisor manages two processes — a simple one-line Python “origin server” on port 8080 and a Varnish reverse proxy on port 8000.