Created: 2004-04-22 fm Last updated: $Id$ Beschreibung der verschiedenen Scripte zur Paketerstellung ---------------------------------------------------------- SVN-Struktur ------------ /repo/eis/trunk | + _ADMIN/ - folder-list.txt | create-list.sh | check-files.sh | mktarball.sh | mkship.sh | + updates/ - update-1.0.5.tar.gz | | update-1.0.5.tar.gz.info | | ... | | | + update-1.0.6/ | | | + _ADMIN/ - update-1.0.6-files.txt | ... | + inet-mail-news/ - mail.tar.gz | mail.tar.gz.info | ... | + mail/ | | | + _ADMIN/ - mail-files.txt | mk_mail.sh (optional) | ... folder-list.txt --------------- Diese Datei enthaelt eine Liste der Pakete und deren Ablageort in der Verzeichnisstruktur, ausgehend von /repo/eis/trunk. Sie soll in Zukunft dazu dienen automatisierte Systemfunktionen zur Verfuegung zu stellen, die z.B. die Dateiberechtigungen wieder herstellen oder die Deinstallation eines Paketes durchführen. Beispiel: #---------------------------------------------------------------------------- # folder-list.txt - list all sub folders of eis structure # # Creation: 2004-05-10 jed # Last update: \$Id\$ #---------------------------------------------------------------------------- #package:folder:package_folder mail:inet-mail-news update-1.0.5:updates update-1.0.6:updates 2006-11-25 !! Neu ist der 3. Parameter, daraus erschliesst sich in welchem $package_folder das $package abgelegt wird. So ist es moeglich aus einem $package_folder z.B. libtiff, ein package 'libtiff' und 'libtiff-dev' zu erzeugen. die syntax libtiff:lib:libtiff libtiff-dev:lib:libtiff create-list.sh -------------- Dieses Script dient dem initialen Anlegen der fuer die Paketerstellung benoetigten Datei -files.txt. In diese Datei werden alle Dateien aufgenommen, die sich im Unterverzeichnis befinden. Ablageort fuer diese Datei ist das Verzeichnis /_ADMIN/ . Damit binaries korrekt erkannt werden, ist es erforderlich das ganze Projekt zu importieren/adden und anschliessend einen checkout auszufuehren. Diese Datei muß dann mit einem Editor, z.B. vi, bearbeitet und die entsprechenden Dateirechte gesetzt werden. Folgende Dateikategorien (erste Spalte) wurden bisher definiert: # - Kommentar b - Binärdatei, bei Dateien diesen Typs wird der Inhalt nicht veraendert. wird automatisch erkannt und richtig gesetzt d - Dosdatei, dies soll zukuenftig ein 'unix2dos' ermöglichen. muss von Hand gesetzt werden f - Dateiordner bzw. -verzeichnis, dies soll die Angabe von Verzeichnissen ermoeglichen. wird automatisch richtiog gesetzt i - Datei wird ignoriert und nicht in das Paket aufgenommen. muss von Hand gesetzt werden u - Unixdatei, bei Dateien diesen Typs werden Tags wie z.B. '$Id$' aktualisert. wenn 'svn propset svn:keywords "Id" ' gesetzt ist und dann einen commit durchfuehren. wird automatisch erkannt und richtig gesetzt Aufruf: create-list.sh PACKAGE1 PACKAGE2 ... resultierende Datei: #---------------------------------------------------------------------------- # mail-files.txt - list all files of package 'mail' # # Creation: 2005-05-01 jed # Last update: \$Id\$ #---------------------------------------------------------------------------- u 0644 root root mail etc/aliases.std u 0644 root root mail etc/check.d/mail u 0644 root root mail etc/check.d/mail.basic u 0644 root root mail etc/check.d/mail.exp u 0644 root root mail etc/check.d/mail.ext u 0644 root root mail etc/default.d/mail 2006-11-25 !! Neu ist der Parameter -p, --setproject damit lassen sich fuer die Teilprojekte eines $packages die erforderlichen $package-files.txt erzeugen Example: create-list.sh -p bin_file_tmp_0_17 perl Example: create-list.sh perl # for old package_folder syntax check-files.txt --------------- Dieses Script prueft, ob die in der Datei -files.txt aufgefuehrten Dateien im Unterverzeichnis vorliegen bzw. ob alle im Unterverzeichnis enthaltenen Dateien auch in der Datei -files.txt enthalten sind. Sofern der Switch '-no-checktype' nicht verwendet wird, so wird zusaetzlich der gesetze Dateityp gegen das svn geprueft. Aufruf: check-files.sh [-checktype|-no-checktype|-checktype-soft] [-setproject name] PACKAGE 2006-11-25 !! Neu ist der Parameter -setproject name, dies wird von mktarball.sh intern behandelt und bedarf keiner weiteren Handlung. mktarball.sh ------------ Dieses Script erstellt ein oder mehrere neue Paketarchiv .tar.gz, basierend auf den in der Datei -files.txt gelisteten Dateien. Vor der Erstellung der Archivdateien wird das Script check-files.sh aufgerufen um die Vollstaendigkeit der -files.txt-Datei zu prüfen. Vor dem Erstellen der Archivdatei wird in die Paketbeschreibungsdatei var/install/packages/ das aktuelle Datum, bzw. optional über die Optionen '-setversion' bzw. '-setstatus' eingesetzt und dann als Basis für die .tar.gz.info-Datei verwendet. Außerdem wird eine eventuell existierende Scriptdatei 'mk_.sh' im Verzeichnis /_ADMIN/ ausgefuehrt. Wird die Option '-all' verwendet, so werden alle in der Datei folder-list.txt aufgefuehrten Paketarchive neu erzeugt. Dateien mit dem Dateityp i (=ignore) werden nicht ins Paketarchiv übernommen. Aufruf: mktarball.sh -all [-quiet] [-checktype|-no-checktype|-checktype-soft] [-setversion svn] [-setdate svn|now|keep|date] [-setstatus svn] oder mktarball.sh [-quiet] [-checktype|-no-checktype|-checktype-soft] [-setversion svn|version_number] [-setstatus status] [-setdate svn|now|keep|date] [-touch YYYYMMDDhhmm] PACKAGE1 PACKAGE2 ... oder mktarball.sh -testteam PACKAGE Dieser Aufruf erzeugt eine svn-Version mit Status "testing" und kopiert das Paket nach /var/www/t-team_eis/tarballs/ oder mktarball.sh -release version_number PACKAGE Dieser Aufruf erzeugt ein stable Release eines Pakets, commitet den aktuellen Stand ins svn, tagged diese Version und kopiert das Paket nach /var/www/t-team_eis/tarballs/. Das Paket kann dann über die Angabe der URL https://eisler.eisfair.net/t-team_eis/tarballs/PACKAGE auf Pack-Eis hochgeladen werden. Bei angabe einer version_number wird /var/install/packages/$package ins repo commitet. Ebenfalls wird, sofern vorhanden, /usr/share/doc/$packages/version aktualisiert und ins repo commitet. Dadurch entfaellt das manuelle aendern der Versionsnummer und gleichzeitig werden status und Datum mit aktualisiert. 2006-11-25 Fuer mktarball.sh sind keine weiteren Aenderungen hinzugekommen die einer Handlung beduerfen. create-targz.sh --------------- Diese Script erzeugt aus den Angaben die in z.B. -/ADMIN/_do_$package gelistet sind, on the fly beim erzeugen des tarballs, ein internes xx.targz archiv und kopiert es an die angegebene Stelle. Dieses 'tar' archiv muss in der $package-files.txt eingetragen sein und es muss ein 'svn add' durchgefuehrt werden, da check-files.sh sonst auf die Nase faellt, mit der Pfad Angabe, an der es nach erstellen des tarballs zu liegen kommt. Die Syntax create-targz.sh basic for path is 'package-folder' given [-from folder (bin_foo_2_3_6)] [-to a/b/c (eis/var/lib/bar)] [-tar name (foo)] [-quiet] PACKAGE YYYYMMDDhhmm (touch -> optional) Die Ausfuehrung und das Ergebnis ist z.Z. im package 'subversion-tools' zusehen. mkship.sh --------- Dieses Script erstellt aus den mittels mktarball.sh erstellten Packages, basierend auf den in der Datei -files.txt gelisteten Dateien, die Struktur fuer den Server (eis-list.txt + $subdir.txt...). Aufruf: mkship.sh [-quiet] DESTINATION_DIRECTORY list-tag.sh ----------- Dieses Skript ermöglich das bequeme Anzeigen vpn SVN-Tags: Folgende Optionen stehen zur Verfügung: Aufruf: list-tag.sh - Zeigt das Tag-Root-Verzeichnis an. list-tag.sh [--help] - Zeigt die Hilfe an. list-tag.sh [-path specific-tag-path] - Zeigt einen speziellen Tag-Pfad an. list-tag.sh PACKAGE - Zeigt alle Tags eines Paketes an. make-doc.sh ----------- Diese Skript erstellt aus einer im SVN befindlichen Paketdokumentation eine PDF-,TXT- oder HTML-Datei. Die Dokumentation wird mittels eines Remote-Zugriffs, unter Verwendung des angegebenen Accounts (-user ...), auf eisler.eisfair.net erstellt und dann auf die lokale Festplatte, in das angegebene Verzeichnis (-dest ...) übertragen. Für eine eventuelle Fehleranalyse werden die bei der Generierung der Datei aufgelaufenen Meldugen in eine Logdatei 'package-name.log' abgelegt. Aufruf: make-doc.sh -dest destination-directory -user username -pdf|-txt|-html document-name create-testteam-eislist ----------------------- Diese Script erstellt fuer das Test-Team die eis-list.txt und den Index. Alle Parameter sind im Script gesetzt Aufruf einfach in _ADMIN: entweder direkt mit dem 'mc' und Enter oder ./create-testteam-eislist Anhang ------ /var/install/bin/set-access-rights - Basierend auf der Datei -files.txt wurde dem eisfair-base-Package das genannte Script hinzugefuegt, welches es einem Paket erlaubt die Dateizugriffsrechte automatisiert setzen zu koennen. Die Quelldatei muß im Verzeichnis /etc/filelist.d liegen um gefunden zu werden. Aufgerufen wird das Script wie folgt: set-access.sh [-quiet] [-dir file-list-dir] [-file file-to-change] PACKAGE1 PACKAGE2 ... -quiet - Alle Bildschirmausgaben werden unterdrueckt -dir - Ein von /etc/filelist.d abweichendes Verzeichnis kann angegeben werden. -file - Es kann eine Datei angegeben werden dessen Rechte, basierend auf den Informationen in der Datei -files.txt, umgesetzt werden sollen. PACKAGE1 PACKAGE2 ... - Namen des bzw. dir zu bearbeitenden Packages. *ENDE*