svn-buildpackage — baut Debian-Pakete aus einem SVN-Depot
svn-buildpackage
[[ OPTIONEN
…]
[ OPTIONEN
für
dpkg-buildpackage ] ]
baut ein Debian-Paket aus einem Subversion-Depot. Das Quellcodeverzeichnis
muss in dem von svn-inject erzeugten Format vorliegen und
dieses Skript muss aus dem Arbeitsverzeichnis
(trunk/
) ausgeführt
werden.
package
Standardmäßig wird das Arbeitsverzeichnis als Hauptquellverzeichnis benutzt
(unter der Annahme, dass die gesamte Ursprungsquelle in dem Verzeichnis
gespeichert wurde). Die Alternative ist der sogenannte
»Zusammenführungsmodus«. Bei dieser Methode wird nur das
debian
-Verzeichnis (und vielleicht ein paar weitere
veränderte Dateien) im Depot gespeichert. Während des Bauens wird der Inhalt
des SVN-Hauptzweiges (»trunk«) zum extrahierten Inhalt des Tarballs kopiert
(er kann Teile davon überschreiben). Um dieses Arbeitsmodell zu wählen,
setzen Sie die Eigenschaft mergeWithUpstream auf das
debian
-Verzeichnis.
$ svn propset mergeWithUpstream 1 debian
mergeWithUpstream erfordert, dass das Paketbausystem
einen Tarball vorbereiten kann, üblicherweise mittels make
dist und Autotools. Alle Pakete der Ursprungsautoren werden in
irgendeiner Weise das Erstellen von Tarballs unterstützen und native Pakete,
die Autotools benutzen oder die eine interne Tarball-Unterstützung haben,
können mergeWithUpstream verwenden, um erzeugte Dateien
handzuhaben, die zum Bauen des Pakets erforderlich sind, die aber nicht im
SVN liegen. Beispiele, wie Sie vorgehen können, finden Sie in der
Kurzanleitung. Native Pakete, die keine Autotools verwenden und keine
interne Tarball-Unterstützung haben, können immer noch mittels des
Make-Ziels useNativeDist auf der obersten Ebene des
Makefile
s dem Tarball erzeugte Dateien
hinzufügen. Dieses benutzerdefinierte Ziel muss idempotent sein und die
gewünschten Dateien nur mittels der exportierten SVN-Quelle und der
Bauabhängigkeiten ändern bzw. erzeugen. Dies ermöglicht
svn-buildpackage ein make
native-dist-Ziel auf der obersten Ebene Ihres
Makefile
s zu benutzen. Setzen Sie die Eigenschaft
useNativeDist auf das
./debian/
-Verzeichnis:
$ svn propset useNativeDist 1 debian
Das voreingestellte Verhalten von svn-buildpackage ist wie folgt:
Das Arbeitsverzeichnisses wird geprüft, nicht übergebene Dateien werden
beanstandet (siehe auch --svn-ignore-new
).
Der Original-Tarball wird, wenn nötig, in den Baubereich kopiert (siehe auch
--svn-no-links
).
Der Tarball wird extrahiert (im Zusammenführungsmodus) oder das
SVN-Arbeitsverzeichnis wird in das Bauverzeichnis exportiert (siehe auch
unten und --svn-no-links
).
Es wird mit dpkg-buildpackage gebaut (siehe auch
--svn-builder
, --svn-lintian
, etc.).
Es wird ein Changelog-Eintrag für die zukünftige Version erstellt.
svn-buildpackage akzeptiert die folgenden Befehlszeilenoptionen:
--svn-builder=BEFEHL
gibt einen alternativen Baubefehl anstelle von
dpkg-buildpackage an, z.B. debuild,
pdebuild, etc. Jeder Parameter, den
svn-buildpackage nicht kennt
(--svn-*), wird an BEFEHL
weitergegeben. Es gibt keinen Unterschied zwischen der Befehlszeile und den
Parametern in der Konfigurationsdatei. Sie werden gleichzeitig benutzt.
WARNUNG: Shell-Maskierungsregeln gelten hier nicht in vollem Umfang. Verwenden Sie für komplexe Konstrukte besser Wrapper. Die Verwendung dieser Option kann die Funktionalität von --svn-lintian und --svn-move stören. Einige Funktionen werden möglicherweise deaktiviert, wenn ein benutzerdefinierter Baubefehl benutzt wird, da der Speicherort der Ausgabedatei nicht verhersehbar ist.
Voreinstellung: verwendet dpkg-buildpackage
--svn-ignore-new
| --svn-ignore
stoppt nicht bei SVN-Konflikten oder neuen/geänderten Dateien. Um dieses
Verhalten für einzelne Dateien zu einzurichten, setzen Sie die Eigenschaft
deb:ignoreM
für diese Dateien auf 1. Lesen Sie auch
die Dokumentation der Eigenschaft svn:ignore im SVN-Buch.
Voreinstellung: stoppt bei Konflikten oder neuen/geänderten Dateien
--svn-dont-clean
führt nicht »debian/rules clean« aus
Voreinstellung: räumt zuerst auf
--svn-no-links
verwendet keine Dateiverweise, versucht aber das Arbeitsverzeichnis zu exportieren oder Schwarzpausen davon zu erstellen. Dies ist nützlich, falls das Bauen Ihres Pakets aufgrund irgendwelcher Dateien, leerer Verzeichnisse, kaputter Verweise, … fehlschlägt und nicht mit dem voreingestellen Modus zum Kopieren von Verweisen transportiert werden kann.
Voreinstellung: verwendet Verweise, wo dies möglich ist
--svn-dont-purge
entfernt nach dem Bauen nicht das Bauverzeichnis.
Voreinstellung: entfernt es nach erfolgreichem Bauen.
--svn-reuse
verwendet, falls möglich, bei nachfolgendem Bauen ein existierendes Bauverzeichnis. Das Bauverzeichnis wird nach dem Bauen nicht vollständig entfernt, es wird nicht umbenannt, wenn das Bauen beginnt und die Dateien werden nur darüberkopiert. Dies ist im mergeWithUpstream-Modus bei großen Paketen nützlich.
Voreinstellung: Bauverzeichnis wird entfernt
--svn-rm-prev-dir
Falls ein vorheriges Bauverzeichnis gefunden wird, wird es vor dem Bauen entfernt statt es umzubenennen. Falls --svn-reuse in der selben Zeile ebenfalls angegeben wurde, tritt das Verhalten der Wiederverwendung ein.
Voreinstellung: Alte Verzeichnisse werden mit einer
»obsolete
«-Endung umbenannt.
--svn-export
exportiert nur das Arbeitsverzeichnis, führt zum Zusammenführen des Codes notwendige Transaktionen durch und beendet sich dann.
Voreinstellung: aus
--svn-tag
Abschließendes Bauen: kennzeichnet, exportiert, baut sauberes &, schreibt einen neuen Changelog-Eintrag
Voreinstellung: aus
--svn-tag-only
| --svn-only-tag
baut nicht das Paket, kopiert nur das Kennzeichen.
Voreinstellung: aus
--svn-retag
entfernt das Zielverzeichnis zuerst, falls beim Versuch, die Kennzeichenkopie zu erstellen, ein existierendes Zielverzeichnis gefunden wird.
Voreinstellung: aus
--svn-noautodch
Es wird nicht automatisch ein neuer Debian-Changelog-Eintrag hinzugefügt.
Voreinstellung: Mittels dch wird eine neuer UNRELEASED-Changelog-Eintrag erstellt.
--svn-lintian
führt nach Abschluss Lintian für die resultierende Changes-Datei aus.
Voreinstellung: aus
--svn-move
verschiebt nach Abschluss die erstellten Dateien (die in
.changes
aufgeführt sind) in das übergeordnete
Verzeichnis, relativ zu dem, in dem svn-buildpackage
gestartet wurde.
Voreinstellung: aus
--svn-move-to=…
gibt das Zielverzeichnis an, in das die erzeugten Dateien verschoben werden sollen.
Voreinstellung: aus (Dateien bleiben dort, wo der Baubefehl sie ablegt.)
--svn-pkg=packagename
überschreibt den entdeckten Paketnamen. Benutzen Sie dies mit Vorsicht, da es während der Verarbeitung möglicherweise zu spät gesetzt wird (z.B. kann der alte Wert beim Expandieren von Shell-Variablen immer noch dort stehen).
Voreinstellung: aus
--svn-arch=ARCHITEKTUR
Ermöglicht die Angabe der Bauarchitektur (z.B. zum Bau von i386 auf einem amd64-Rechner.
Voreinstellung: aus
--svn-override=Variable=Wert,weitereVariable=Wert
überschreibt jede Konfigurationsvariable, die automatisch entdeckt oder in .svn/deb-layout gefunden wurde.
Voreinstellung: aus
--svn-prebuild
| --svn-postbuild
|
--svn-pretag
| --svn-posttag
Befehle (Hooks), die vor/nach dem Aufrufen des Bau-/Kennzeichenbefehls ausgeführt werden sollen, z.B. um die Original-Tarballs aus dem Archiv herunterzuladen. Hier kann Shell-Code eingebettet werden, dies wird jedoch nicht empfohlen. In der Umgebung sind verschiedene Hilfsvariablen verfügbar, eine ausführliche Erklärung finden Sie nachfolgend unter UMGEBUNGSVARIABLEN.
Bitte beachten Sie, dass die Hooks Prebuild und Postbuild die normalen Aktionen Prebuild und Postbuild von svn-buildpackage ersetzen. Für Prebuild bedeutet dies, dass die Bauabhängigkeiten nicht geprüft werden. Für Postbuild heißt das, dass die resultierenden Dateien nicht verschoben und Lintian nicht ausgeführt wird.
Voreinstellungen: aus
--svn-noninteractive
Mit diesem Parameter wird svn-buildpackage nicht mit dem Benutzer interagieren.
Voreinstellung: aus
--svn-savecfg
svn-buildpackage wird standardmäßig benutzt, um bei jedem
Aufruf .svn/deb-layout
zu erstellen. Seit Version
0.6.22 wird dieses Verhalten missbilligt.
Mit diesem Parameter wird svn-buildpackage das frühere Verhalten (teilweise) nachahmen. Im Gegensatz zum missbilligten Verhalten, wird .svn/deb-layout als lokaler Eingriff angesehen. Das frührere Verhalten ignorierte einfach alle Layout-Informationen mit berücksichtigter Version, falls .svn/deb-layout gefunden wurde.
Diese Option wurde bereitgestellt, da sie beim Erstellen einer lokalen Datei zum Überschreiben nützlich sein kann.
Voreinstellung: aus
--svn-download-orig
Diese Option lässt svn-buildpackage versuchen, den Tarball der Ursprungsautoren mittels apt und uscan herunterzuladen.
Voreinstellung: aus
--svn-verbose
detailliertere Ausgabe des Programms
Voreinstellung: aus
-h
| --help
zeigt den Hilfstext.
Detailliertere Informationen über die Benutzung von svn-buildpackage finden Sie in der Kurzanleitung http://svn-bp.alioth.debian.org/.
Um die Arbeit an einem existierenden nativen Debian-Paket von einer
*.dsc
-Datei zu beginnen, importieren Sie das Depot mit
dem Befehl:
svn-inject package_0.1.dsc svn://host/debian/devel/packages
Um die Arbeit an einem existierenden Paket der Ursprungsautoren in Debian
von einer *.dsc
-Datei zu beginnen, importieren Sie das
Depot mit dem Befehl:
svn-inject -o package_0.1-2.dsc svn://host/debian/devel/packages
Bevor Sie ein Paket der Ursprungsautoren bauen, stellen Sie sicher, dass die Originalquelle verfügbar ist, falls z.B. uscan funktioniert:
svn mkdir ../tarballs svn propset svn:ignore "*" ../tarballs uscan --force-download --destdir ../tarballs
Verwenden Sie den nachfolgenden Befehl, um das Bauen des Pakets aus dem
Subversion-Depot zu testen. Sehen Sie für Optionen wie -us
etc. in der dpkg-buildpackage(1)-Handbuchseite nach.
svn-buildpackage --svn-lintian -us -uc -rfakeroot
Um zu prüfen, ob das Paket in einem ordnungsgemäßen Status gebaut wurde, testen Sie es mit pbuilder(1):
svn mkdir ../build-area # zum Speichern der Ergebnisse svn propset svn:ignore "*" ../build-area svn-buildpackage --svn-ignore-new --svn-builder=pdebuild
Wenn eine neue Veröffentlichung der Ursprungsautoren verfügbar wird, übertragen Sie alle Änderungen. Dann haben Sie den Arbeitsverzeichnisbaum in einem sauberen Zustand. Dann benutzen Sie svn-upgrade(1) zum Importieren der neuen Veröffentlichung:
svn status # prüft, ob es noch nicht übergebene Änderungen gibt svn-upgrade --verbose ../package-2.0.tar.gz
Das Verhalten von svn-buildpackage kann mittels der Datei
~/.svn-buildpackage.conf
verändert werden. Zusätzliche
Teile können in jedem Paketarbeitsverzeichnis mittels der Datei
.svn/svn-buildpackage.conf
hinzugefügt werden. Es ist
im wesentlichen eine Liste der langen Befehlszeilenoptionen (ohne führende
Minuszeichen, ein Argument je Zeile (ohne Anführungszeichen, die Argumente
aus mehreren Wörtern umgeben). Die Variablen werden mit der System-Shell
expandiert, falls Shell-Variablen gefunden werden. Vermeiden Sie das Zeichen
»~«, da es nicht zuverlässig expandiert wird: Es ist besser, stattdessen
$HOME zu verwenden. Beispiel:
svn-builder=debuild -EPATH svn-no-links svn-override=origDir=$HOME/debian/upstream/$PACKAGE # svn-ignore-new #svn-lintian
svn-buildpackage erwartet standardmäßig eine
Konfigurationsdatei mit Pfad/URL-Deklaration,
.svn/deb-layout
. Die Werte können mit der Option
--svn-override
außer Kraft gesetzt werden, siehe
oben. Falls eine Konfigurationsdatei nicht auffindbar war, werden die Werte
automatisch bestimmt. Dabei werden die üblichen Annahmen über lokale
Verzeichnisse und das Depot-Layout getroffen. Zusätzlich wird während der
Konfiguration zu Beginn der Inhalt einer benutzerdefinierten
debian/svn-deblayout
-Datei importiert. Paketbetreuer
können diese Datei im Depot speichern, um korrekte Voreinstellungen an neue
svn-buildpackage-Benutzer weiterzugeben. Das Format ist
dasselbe wie das der Datei .svn/deb-layout
. Als
Alternative zur Datei debian/svn-deblayout
können
Paketbetreuer Subversion-Eigenschaften für das Verzeichnis
debian/
setzen. Alle Eigenschaften von
debian/
, die einen Namen der Form
svn-bp:EIGENSCHAFT
haben,
werden die Quelle der Einstellung EIGENSCHAFT
sein, deren Wert über die erste Zeile des Eigenschaftswerts angegeben
wird. Falls keine vollständige SVN-URL angegeben wurde, wird das
Wurzelverzeichnis des Depots diesem Wert vorangestellt.
Die folgenden Umgebungsvariablen werden durch svn-buildpackage exportiert und können in Hook-Befehlen oder vom Paketbausystem benutzt werden.
der Name des Quellpakets
Version von svn-buildpackage
die vollständige Debian-Versionszeichenkette, die auch für die Kennzeichenkopie benutzt wird
entspricht debian_version
, jedoch ohne irgendwelche
Epochenzeichenketten.
entspricht »debian_version«, aber ohne Debian-Erweiterungen
vermuteter Ursprungspaketname im Pool, etwas wie
libm/libmeta-html-perl_3.2.1.0.orig.tar.gz
(experimentell) zeigt den Speicherort der erstellten Diff-Datei
Alle Layout-Eigenschaften werden ebenfalls in die Umgebung exportiert. Die Folgenden sind für svn-buildpackage von Bedeutung.
der Speicherort des Baubereichsverzeichnisses
die URL des Hauptzweigverzeichnisses (trunk) des aktuellen Pakets
die URL des Kennzeichenbasisverzeichnisses des aktuellen Pakets
das lokale Verzeichnis, in dem der Original-Tarball liegen sollte
die URL, von der der Original-Tarball des aktuellen Pakets bezogen werden kann
svn-buildpackage kennt die folgenden Variablen:
ignoriert die Anzeichen eines unvollständigen Changelogs und kennzeichnet das Depot trotzdem.
exportiert die Ursprungsquelle sogar dann aus dem Depot, wenn die
Eigenschaft mergeWithUpstream
gesetzt ist.
Falls DEBIAN_FRONTEND
auf »noninteractive« gesetzt ist,
wird --svn-noninteractive
stillschweigend aufgerufen.
Benutzen Sie Shell-Alias. Hier sind einige Beispiele für Bash:
alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore" alias svn-br="svn-b --svn-dont-purge --svn-reuse" alias svn-bt="svn-buildpackage --svn-tag -rfakeroot"
Diese Befehle haben jeweils diese Bedeutungen: Bauen ohne Berücksichtigung neuer oder geänderter Dateien; Bauen ohne Berücksichtigung neuer oder geänderter Dateien und Wiederverwendung des Bauverzeichnisses; Bauen (zum Hochladen) und Kennzeichnen.
SSH bietet die einfachste Möglichkeit, auf ferne Depots zuzugreifen, es benötigt allerdings normalerweise häufiger mit svn-buildpackage die Eingabe eines Passworts. Behelfslösungen umfassen die Verwendung eines SSH-Schlüssels ohne Passphrase (dies ist allerdings unsicher und relativ langsam) oder die Funktionalität zum Zwischenspeichern von Verbindungen, die aktuelle SSH-Versionen bieten. Einzelheiten finden Sie im svn-buildpackage-Handbuch.
Eine weitere Möglichkeit, eine ferne Verbindung zu erhalten, ist die Benutzung des Subversion-DAV-Moduls (mit SSL und Apache-Benutzerauthentifizierung). Einzelheiten finden Sie in der svn-buildpackage-Kurzanleitung.
Die Svn-buildpackage-Kurzanleitung
legt ein Debian-Quellpaket in ein Subversion-Depot.
aktualisiert ein Quellpaket aus einer neuen Revision der Originalautoren.
Client-Befehlszeilenwerkzeug von Subversion
Debian-Quellpaketwerkzeuge
Debian-Paketprüfer