← Back to team overview

bzr-packagers team mailing list archive

Understanding buildout - help please!

 

Hi Sidnei and other buildout gurus,

I want to love buildout - I really do - but I'm struggling to find much affection for it right now. :-( My primary issue is that I don't fully understand how it works and, despite reasonably good documentation, I'm not sure where to look.

Here's the problem. buildout generates a build directory with the various parts in it based on what's in a config file, e.g.:

build-win32/
  bzr/
    bzr-2.2/
  bzrtools/
    bzr-2.2/
  bzr-foo/
    bzr-2.2/

So far, so good. If I change the config file though so that bzr-foo is no longer included in a particular build, then buildout insists on trying to uninstall it. This nearly always fails, breaking the installer build altogether. Likewise, if I have bzr-2.1 directories created under each part (from a 2.1 installer build run), then it wants to uninstall those directories as well when I build 2.2. Again, the installer build falls over on something that has nothing to do with building a 2.2 installer. :-(

Why does it do this? Why can't it just leave stuff it doesn't need for a particular build there? There's a magic .installed.cfg file inside the build-win32 directory. Is it safe to delete that so that buildout loses its knowledge of what's already there?

I've attached the buildout cfg files I'm using if they are any help. Is the problem in how I'm using buildout or in how I'm using the bzr recipe? In our case, we're using buildout as a tool for collecting pieces rather than as a tool for reproducing a disk image. Maybe it's just not designed for that?

Ian C.
[buildout]
newest = false
versions = versions
develop =

[versions]
zc.buildout = 1.2.1
setuptools = 0.6c11
z3c.recipe.filetemplate = 2.0.3
gf.recipe.bzr = 1.0rc8
hexagonit.recipe.download = 1.2.2
# Copyright (C) 2010 by Canonical Ltd

[buildout]
extends = buildout.cfg
parts = 
    svn-lib
    svn-dev
    svn-db4
    svn-libintl
    zlib
    tortoise-overlays-win32
    tortoise-overlays-x64
    bzr-chm-en
    bzr-chm-developers
    bzr-chm-es
    bzr-chm-ja
    bzr-chm-ru
    bzr
    subvertpy
    tortoisebzr
    bzrtools
    bzr-colo
    bzr-explorer
    bzr-fastimport
    bzr-loom
    bzr-rewrite
    bzr-svn
    bzr-upload
    bzr-xmloutput
    qbzr

[settings]
download-ignore-existing = true
download-chm-ignore-existing = true


[svn-lib]
recipe = hexagonit.recipe.download
url = http://subversion.tigris.org/files/documents/15/46880/svn-win32-1.6.6.zip
destination = svn
strip-top-level-dir = true
ignore-existing = ${settings:download-ignore-existing}

[svn-dev]
recipe = hexagonit.recipe.download
url = http://subversion.tigris.org/files/documents/15/46887/svn-win32-1.6.6_dev.zip
destination = svn
ignore-existing = true
strip-top-level-dir = true

[svn-db4]
recipe = hexagonit.recipe.download
url = http://subversion.tigris.org/files/documents/15/32472/db-4.4.20-win32.zip
destination = db4
strip-top-level-dir = true
ignore-existing = ${settings:download-ignore-existing}

[svn-libintl]
recipe = hexagonit.recipe.download
url = http://subversion.tigris.org/files/documents/15/20739/svn-win32-libintl.zip
destination = libintl
strip-top-level-dir = true
ignore-existing = ${settings:download-ignore-existing}

[zlib]
recipe = hexagonit.recipe.download
url = http://zlib.net/zlib124-dll.zip
destination = zlib
strip-top-level-dir = true
ignore-existing = ${settings:download-ignore-existing}

[tortoise-overlays-win32]
recipe = hexagonit.recipe.download
url = http://tortoisesvn.googlecode.com/svn/TortoiseOverlays/version-1.1.1/bin/TortoiseOverlays-1.1.1.19039-win32.msi
destination = tortoise-overlays
download-only = true
ignore-existing = ${settings:download-ignore-existing}

[tortoise-overlays-x64]
recipe = hexagonit.recipe.download
url = http://tortoisesvn.googlecode.com/svn/TortoiseOverlays/version-1.1.1/bin/TortoiseOverlays-1.1.1.19039-x64.msi
destination = tortoise-overlays
download-only = true
ignore-existing = ${settings:download-ignore-existing}

[bzr-chm-en]
recipe = hexagonit.recipe.download
url = http://doc.bazaar.canonical.com/bzr.dev/downloads/bzr-en.chm
ignore-existing = ${settings:download-chm-ignore-existing}
destination = chm-files
download-only = true

[bzr-chm-developers]
recipe = hexagonit.recipe.download
url = http://doc.bazaar.canonical.com/bzr.dev/downloads/bzr-developers.chm
ignore-existing = ${settings:download-chm-ignore-existing}
destination = chm-files
download-only = true

[bzr-chm-es]
recipe = hexagonit.recipe.download
url = http://doc.bazaar.canonical.com/bzr.dev/downloads/bzr-es.chm
ignore-existing = ${settings:download-chm-ignore-existing}
destination = chm-files
download-only = true

[bzr-chm-ja]
recipe = hexagonit.recipe.download
url = http://doc.bazaar.canonical.com/bzr.dev/downloads/bzr-ja.chm
ignore-existing = ${settings:download-chm-ignore-existing}
destination = chm-files
download-only = true

[bzr-chm-ru]
recipe = hexagonit.recipe.download
url = http://doc.bazaar.canonical.com/bzr.dev/downloads/bzr-ru.chm
ignore-existing = ${settings:download-chm-ignore-existing}
destination = chm-files
download-only = true

[bzr]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr bzr-2.2
develop = false

[subvertpy]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:subvertpy bzr-2.2
develop = false

[tortoisebzr]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:tortoisebzr bzr-2.2
develop = false

[bzrtools]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzrtools bzr-2.2
develop = false

[bzr-colo]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-colo bzr-2.2
develop = false

[bzr-explorer]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-explorer bzr-2.2
develop = false

[bzr-fastimport]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-fastimport bzr-2.2
develop = false

[bzr-loom]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-loom bzr-2.2
develop = false

[bzr-rewrite]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-rewrite bzr-2.2
develop = false

[bzr-svn]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-svn bzr-2.2
develop = false

[bzr-upload]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-upload bzr-2.2
develop = false

[bzr-xmloutput]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:bzr-xmloutput bzr-2.2
develop = false

[qbzr]
recipe = gf.recipe.bzr:strict
shared-repo = false
format = 2a
urls = lp:qbzr bzr-2.2
develop = false

Follow ups