Mit sdistmaker gibt es eine einfache Möglichkeit, sdist tarballs in svn-Repositories bereitzustellen.
sdistmaker übernimmt folgende Aufgaben:
#. Es durchsucht die tags
-Verzeichnisse Ihres svn-Repository. Dabei kann
sdistmaker auch auf bestimmte Bereiche Ihres Repository eingeschränkt werden.
#. Für jeden Tag erstellt es eine source distribution mit ``python setup.py
sdist``.
Die source distribution wird anschließend in einem Unterverzeichnis Ihres Projekts gespeichert, ähnlich wie in https://pypi.python.org/simple/.
sdistmaker
lässt sich einfach installieren mit:
$ easy_install sdistmaker
Anschließend stehen Ihnen zwei Skripte zur Verfügung:
make_sdist
ist im wesentlichen für Testzwecke gedacht. Dabei können Sie unter Angabe
der tag
-URL und des Zielverzeichnisses einzelne Releases erstellen.
sdists_from_tags
Es durchsucht die svn-Struktur nach geeigneten tags
-Verzeichnissen und
erstellt aus diesen entsprechende Releases.
Zunächst sollte sdistmaker seine eigene Basiskonfiguration erstellen mit:
$ sdists_from_tags --print-example-defaults
Speichern Sie die Ausgabe in eine Konfigurationsdatei, z.B. defaults.py
.
Anschließend können Sie diese Konfiguration verwenden mit:
$ sdists_from_tags --defaults-file=defaults.py
Schließlich werden Sie sdists_from_tags
regelmäßig aufrufen wollen, entweder
als Cron-Job, svn post-commit-hook etc.
sdistmaker
kann mit Buildout folgendermaßen verwendet werden:
[buildout]
parts = sdists
[sdists]
recipe = zc.recipe.egg
eggs = sdistmaker
scripts = sdists_from_tags
# arguments =
# defaults_file='${buildout:directory}/defaults.py'
Dabei wird die defaults.py
-Datei auf dieselbe Weise erzeugt wie oben
beschrieben.
Üblicherweise kann immer nur ein Index für easy_install
angegeben werden. Um
nun neben dem sdistmaker
-Index auch den von PyPI verwenden zu können, kann
z.B. eine Redirect-Anweisung definiert werden, falls im sdistmaker
-Index
nichts gefunden wird:
# Allow indexing
Options +Indexes
IndexOptions FancyIndexing VersionSort
# Start of rewriterules to use our own var/private/* packages
# when available and to redirect to pypi if not.
RewriteEngine On
# Use our robots.txt:
RewriteRule ^/robots.txt - [L]
# Use our apache's icons:
RewriteRule ^/icons/.* - [L]
# We want OUR index. Specified in a weird way as apache
# searches in a weird way for index.htm index.html index.php etc.
RewriteRule ^/index\..* - [L]
# Use our var/private/PROJECTNAME if available,
# redirect to pypi otherwise:
RewriteCond /path/on/server/var/private/$1 !-f
RewriteCond /path/on/server/var/private/$1 !-d
RewriteRule ^/([^/]+)/?$ http://pypi.python.org/pypi/$1/ [L]
# Use our var/private/PROJECTNAME/project-0.1.tar.gz if available,
# redirect to pypi otherwise:
RewriteCond /path/on/server/var/private/$1 !-d
RewriteRule ^/([^/]+)/([^/]+)$ http://pypi.python.org/pypi/$1/$2 [L]
Dieser Index kann nun sowohl mit EasyInstall als auch mit Buildout aufgerufen werden:
EasyInstall
$ easy_install -i https://packages.veit-schiele.de/ vs.event
Sie können den Index in der Buildout-Konfigurationsdatei angeben:
[buildout]
index = https://packages.veit-schiele.de/
parts =
...
gocept.zestreleaser.customupload ist ein Plugin für zest.releaser, das das Hochladen erstellter Eggs via Secure copy (SCP) zu vorher konfigurierten Zielen erlaubt.
Um es zu verwenden, kann in ~/.pypirc
z.B. folgendes konfiguriert werden:
[gocept.zestreleaser.customupload]
vs = scp://download.veit-schiele.de:/var/www/packages
example = https://dav.veit-schiele.de:/var/www/example
Falls das veröffentlichte Paket mit einem der Schlüsselwörter (vs
,
example
) beginnt, werden Sie gefragt, ob das Egg auf den angegebenen Server
hochgeladen werden soll.