User Tools

Site Tools


packman:pmbs_de

Pakete mit dem PackMan Build Service erstellen.

Zugangsdaten für den PMBS

Gibt es bei Detlef auf Anfrage per Mail. ;)

Benötigte Dateien

Um mit dem PMBS ein Paket zu bauen braucht dieser unter ”/srv/pmbs/files” als erstes ein Verzeichnis mit dem Paketnamen. In diesem Verzeichnis müssen alle Dateien liegen, die “rpm” zum bauen der RPMs benötigt, also Sources, Specfile, Patches etc..

Sind die Sourcen im Specfile als http/https/ftp angegeben und befinden sich nicht in diesem Ordner, werden diese automatisch vom PMBS gedownloadet.

 Besonderheiten:
 - Mit dem Namen des Specfiles kann man den PackMan-Namen in der PackMan-Datenbank bestimmen.
 - In dem Specfile darf "Packager", "Distribution" und "Vendor" nicht gesetzt sein, das erledigt PMBS automatisch.
 - In dem Specfile sollte mit "make %{?jobs:-j%{jobs}}" compiliert werden damit beide CPUs genutzt werden

Zusätzlich wird eine Bauanweisung in dem Verzeichnis erwartet, diese muss “build.conf” heissen.

Aufbau der "build.conf"

die “build.conf” ist in mehrere Abschnitte unterteilt, der erste Abschnitt “info” enthält allgemeine Infos zum Paket, die für alle zu bauenden RPMs gültig sind.

Beispiel Abschnitt “info”:

 [[info]]
 packager:  Max Mustermann <max@mustermann.foo>
        -> (zwingend erforderlich, sonst können die RPMs nicht in der PM-DB eingetragen werden
 specfile:  beispiel.spec
        -> (zwingend erforderlich, wie soll PMBS sonst wissen, was er bauen soll ;)
 upload:    1
        -> (nicht zwingend erforderlich, Standard = 1 (1=on, 0=off), RPMs nach Pluto uploaden
 commit:    1
        -> (nicht zwingend erforderlich, Standard = 1 (1=on, 0=off), RPMs in die PM-DB eintragen
 email:     1
        -> (nicht zwingend erforderlich, Standard = 1 (1=on, 0=off), Sende Info-Mail an den Jobersteller (SUCCESS/FAILED)
 keep:      0
        -> (nicht zwingend erforderlich, Standard = 0 (1=on, 0=off), Behalte alte Releases auf Pluto, es wird das neue Release
           zusätzlich in die PM-DB eingetragen
 baselibs:  0
        -> (nicht zwingend erforderlich, Standard = 0 (1=on, 0=off), Es werden 32bit-baselibs für x86_64 gebaut
 testbuild: 0
        -> (nicht zwingend erforderlich, Standard = 0 (1=on, 0=off), Es wird nur gebaut, kein speichern im lokalem Repository, kein
           Upload, kein Commit, einfach nur zum testen ;)

Als nächstes kommen die Anweisungen, für welche Distribution/Release/Arch gebaut werden soll. Diese Abschnitte beginnen immer mit Nr. Alle Angaben sind zwingend erforderlich.

Beispiel Abschnitt ”1

 [[1]]
 dist:     openSUSE
        -> Name der Distribution, genaue Bezeichnung beachten (siehe "Zur Zeit unterstütze Distributionen")
 release:  10.2
        -> Release der Dist.
 build:    1
        -> 1 = wird gebaut, 0 = wird nicht gebaut, diese Option kann man nutzen, um für eine Dist. temporär
           den Build abzuschalten, ohne gleich den kompletten Abschnitt löschen zu müssen
 noarch:   0
 i586:     1
 i686:     0
 x86_64:   1
        -> Bauen von Arch an- oder abschalten

Der nächste Abschnitt würde hier die 2 haben, usw., usw……

Unterstütze Distributionen

Für folgende Distributionen kann PMBS RPMs erstellen:

 SuSE 10.1
 openSUSE 10.2
 openSUSE 10.3
 openSUSE 11.0

Starten eines Buildjobs

Ein

 touch /srv/pmbs/jobs/$paketname

reicht um PMBS die Anweisung zu geben, das Paket zu bauen.

”/srv/pmbs/jobs/” wird nach Erstellungsdatum abgearbeitet, d.h., alte Jobs zuerst. Habe ich z.B. “foo”, das “libbar” braucht, einfach erst “libbar” touchen und anschließend “bar”. “libfoo” ist sofort nach dem bauen verfügbar für weitere Builds.

Nach jedem Job verschickt PMBS eine Mail (email: 1) an den Ersteller des Jobs mit Infos was gebaut oder nicht gebaut wurde. Bei einem Fehler werden zusätzlich die letzten 50 Zeilen des Buildlogs verschickt, das den Fehler verursacht hat.

Die Logfiles für jedes Paket sind unter ”/srv/pmbs/logs/$package” zu finden.

Nutzen des pm-upload-job Skriptes

Das aktuelle pm-upload-job-Skript ist immer im packman-SVN verfügbar.

 pm-tools/pm-upload-job

Um das pm-upload Skript nutzen zu können ist der folgende Eintrag in der

 ~/.ssh/config

erforderlich:

 Host pmbs
 HostName packman-bs.links2linux.de
 User your_packman_user

Der Aufruf von pm-upload-job:

 pm-upload-job

oder

 pm-upload-job spec-file

Damit werden alle Dateien welche im spec-file mit den Tags SourceX oder PatchX referenziert werden mit rsync zum PMBS-Server übertragen. Es wird eine build.conf erstellt und mit dem Standardeditor (default = vi) geöffnet. Nun kann man letzte Feintunings anbringen und SuSE-Versionen an-/abschalten.

Falls das Paket ein “noarch” Paket ist, werden die i586, i686, x86_64 Flags abgeschaltet. Zur Zeit sind alle SuSE-Versionen von 10.0 bis 10.3 per default angeschaltet.

Falls es mehrere spec-files im aktuellen Verzeichnis gibt, kann man das gewünschte im Aufruf angeben. Es werden nur die Sourcen und Patches für diese Spec-Datei hochgeladen.

Wenn pm-upload eine build.conf im aktuellen Verzeichnis findet, wird diese direkt verwendet und der Editor wird nicht gestartet! D.h. wenn man eine neue build.conf erstellen möchte mit pm-upload, muss zuerst die vorhandene build.conf gelöscht werden.

Einige Parameter für die build.conf werden aus diversen System-Dateien ermittelt. Dazu gehören der “packager”. Dieser Eintrag besteht aus drei Teilen

 vorname nachname <email@links2linux.de>

Der “packager”-Eintrag wird aus der /etc/passwd ausgelesen, falls dieser Eintrag nicht verwendbar ist wird die ~/.rpmmacros ausgewertet. Sollte auch dieses nicht gelingen wird in der aktuellen lbuild-Konfiguration nachgeforscht. Es besteht beim ersten Anlegen aber immer die Möglichkeit diesen Eintrag zu ändern.

Beispiel für eine build.conf (von btanks, es wird nur für SuSE-10.2 gebaut)

 [[info]]
 specfile:       btanks.spec
 packager:       packer <packer@links2linux.de>
 upload:         1
 commit:         1
 email:          1
 baselibs:       0
 autobuilddeps:  0
 [[1]]
 dist:           SuSE
 release:        10.0
 build:          0
 noarch:         0
 i586:           1
 i686:           0
 x86_64:         1
 [[2]]
 dist:           SuSE
 release:        10.1
 build:          0
 noarch:         0
 i586:           1
 i686:           0
 x86_64:         1
 [[3]]
 dist:           openSUSE
 release:        10.2
 build:          1
 noarch:         0
 i586:           1
 i686:           0
 x86_64:         1
 [[4]]
 dist:           openSUSE
 release:        10.3
 build:          0
 noarch:         0
 i586:           1
 i686:           0
 x86_64:         1
packman/pmbs_de.txt · Last modified: 2012/01/14 03:51 by 0.0.0.0