SVN-BUILDPACKAGE(1) | Befehlsreferenz | SVN-BUILDPACKAGE(1) |
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/package) ausgeführt werden.
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 Makefiles 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 Makefiles 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
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
Voreinstellung: stoppt bei Konflikten oder neuen/geänderten Dateien
--svn-dont-clean
Voreinstellung: räumt zuerst auf
--svn-no-links
Voreinstellung: verwendet Verweise, wo dies möglich ist
--svn-dont-purge
Voreinstellung: entfernt es nach erfolgreichem Bauen.
--svn-reuse
Voreinstellung: Bauverzeichnis wird entfernt
--svn-rm-prev-dir
Voreinstellung: Alte Verzeichnisse werden mit einer »obsolete«-Endung umbenannt.
--svn-export
Voreinstellung: aus
--svn-tag
Voreinstellung: aus
--svn-tag-only | --svn-only-tag
Voreinstellung: aus
--svn-retag
Voreinstellung: aus
--svn-noautodch
Voreinstellung: Mittels dch wird eine neuer UNRELEASED-Changelog-Eintrag erstellt.
--svn-lintian
Voreinstellung: aus
--svn-move
Voreinstellung: aus
--svn-move-to=...
Voreinstellung: aus (Dateien bleiben dort, wo der Baubefehl sie ablegt.)
--svn-pkg=packagename
Voreinstellung: aus
--svn-arch=ARCHITEKTUR
Voreinstellung: aus
--svn-override=Variable=Wert,weitereVariable=Wert
Voreinstellung: aus
--svn-prebuild | --svn-postbuild | --svn-pretag | --svn-posttag
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
Voreinstellung: aus
--svn-savecfg
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
Voreinstellung: aus
--svn-verbose
Voreinstellung: aus
-h | --help
Detailliertere Informationen über die Benutzung von svn-buildpackage finden Sie in der Kurzanleitung http://svn-bp.alioth.debian.org/[1].
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.
PACKAGE, package
SVN_BUILDPACKAGE
TAG_VERSION, debian_version
non_epoch_version
upstream_version
guess_loc
DIFFSRC
Alle Layout-Eigenschaften werden ebenfalls in die Umgebung exportiert. Die Folgenden sind für svn-buildpackage von Bedeutung.
buildArea
trunkUrl
tagsUrl
origDir
origUrl
svn-buildpackage kennt die folgenden Variablen:
FORCETAG
FORCEEXPORT
DEBIAN_FRONTEND
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.
/usr/share/doc/svn-buildpackage/()
Eduard Bloch
Goneri Le Bouder
Neil Williams
Copyright © 2009 Eduard Bloch
Mai 2009 | Release: 0.8.2 |