Buildout 2.0 veröffentlicht

Am 10.02.2013 ist Buildout in der Version 2.0 veröffentlicht worden. Diese Version ist nicht rückwärtskompatibel mit früheren Version.

Einige der wesentlichen Änderungen sind:

  • Buildout versucht nicht mehr eine vollständige Isolation vom System-Python zu bieten. Falls eine solche Isolation gewünscht wird, sollte virtualenv verwendet werden.

  • Buildout unterstützt nicht mehr verschiedene Python-Versionen in einem einzelnen Buildut-Projekt.

  • Das Format der Konfigurationsdatei hat sich geändert:

    • Relative Einrückungen von Werten bleiben erhalten sofern die erste Zeile leer bleibt, also z.B.:

      [mysection]
      tree =
        /root
          branch
      
    • Die Syntax ist strenger definiert und bietet weniger syntaktische Möglichkeiten. Weitere Informationen hierzu erhalten Sie in Configuration file syntax.

  • Buildout verwendet nun als Standardwert final releases. Falls das Buildout- Projekt jedoch bereits mit einer nicht-finalen Release erstellt wurde, wird es nicht durch ein niedrigeres finales Release ersetzt.

  • Die buildout-versions -Erweiterung wurde integriert.

    show-picked-versions

    ist der Wert auf true gesetzt, werden am Ende des Buildout-Durchlaufs alle nicht-festgeschriebenen Versionen ausgegeben, also z.B.:

    $ ./bin/buildout
    …
    Versions had to be automatically picked.
    The following part definition lists the versions picked:
    [versions]
    Cheetah = 2.2.1
    Pillow = 1.7.8
    ZopeSkel = 2.21.2
    collective.recipe.plonesite = 1.8.1
    i18ndude = 3.2.2
    zopeskel.dexterity = 1.4.1
    
    update-versions-file

    wird als Wert ein Pfad zu einer Datei relativ zum Buildout-Verzeichnis angegeben, wird die Ausgabe aus show-picked-versions direkt in diese Datei geschrieben.

  • Buildout-Optionen können nun in der Kommandozeile in folgender Form eingegeben werden:

    option_name=value
    

    anstatt:

    buildout:option_name=value
    
  • Der Standardwert für versions ist nun versions sodass nicht mehr länger

    versions = versions
    

    angegeben werden muss.

  • Der buildout init-Befehl erlaubt nun die Angabe der Anforderungen und Pfade um einen einen eigenen Interpreter zu erstellen, z.B.:

    python bootstrap.py init BeautifulSoup
    
  • Die buildout:socket-timout-Option lässt sich nun nicht mehr nur in der Kommandozeile angeben sondern auch in der Konfigurationsdatei.

Upgrade

Um ältere Projekte auf Buildout 2.0 zu aktualisieren sind folgende Schritte nötig:

  1. Aktualisieren Sie Ihre bootstrap.py-Datei:

    $ cd vs_buildout
    $ rm bootstrap.py
    $ curl -O http://downloads.buildout.org/2/bootstrap.py
    
  2. Falls Sie die Versionen in Ihrem Buildout festgeschrieben haben, sollten die Versionen für zc.buildout und zc.recipe.egg geändert werden:

    [versions]
    …
    setuptools= 0.9.8
    zc.buildout = 2.2.0
    
  3. Falls Sie in Ihrem Buildout-Projekt buildout-versions oder buildout.dumppickedversions verwendet haben, sollten Sie diese entfernen da deren Funktionalität nun in Buildout selbst integriert wurde. Sie können in Buildout 2.0 folgendes angeben:

    [buildout]
    …
    show-picked-versions = true
    update-versions-file = /path/to/versions.cfg
    
  4. versions = versions kann ggf. aus der Buildout-Konfigurationsdatei entfernt werden, da dies nun der Standardwert ist.

Anmerkung: Falls Sie beim Aufruf der bootstrap.py-Datei folgende Fehlermeldung erhalten:

Traceback (most recent call last):
  File "bootstrap.py", line 108, in <module>
   pkg_resources.Requirement.parse('distribute')).location
AttributeError: 'NoneType' object has no attribute 'location'

dann verwenden Sie noch eine alte bootstrap.py-Datei. Diese ist nicht kompatibel mit Buildout 2.x lädt die zugehörigen Dateien jedoch dennoch herunter. Sie können nun entweder die Buildout-Version festschreiben mit:

$ python bootstrap.py -v 1.7.1

oder Sie aktualisieren Ihre bootstrap.py-Datei:

$ rm bootstrap.py
$ curl -O http://downloads.buildout.org/2/bootstrap.py