User Tools

Site Tools


packman:pmbs_de

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

packman:pmbs_de [2012/01/14 03:51] (current)
0.0.0.0 created
Line 1: Line 1:
 +**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.
 +
 +<code>
 + 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</code>
 +
 +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":
 +
 +<code>
 + [[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 ;)</code>
 +
 +Als nächstes kommen die Anweisungen, für welche Distribution/Release/Arch gebaut werden soll. Diese Abschnitte beginnen immer mit [[lfd.|Nr]]. Alle Angaben sind zwingend erforderlich.
 +
 +Beispiel Abschnitt "[[1]]"
 +
 +<code>
 + [[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</code>
 +
 +Der nächste Abschnitt würde hier die [[2]] haben, usw., usw......
 +
 +=====  Unterstütze Distributionen  =====
 +
 +Für folgende Distributionen kann PMBS RPMs erstellen:
 +
 +<code>
 + SuSE 10.1
 + openSUSE 10.2
 + openSUSE 10.3
 + openSUSE 11.0</code>
 +
 +=====  Starten eines Buildjobs  =====
 +
 +Ein 
 +<code>
 + touch /srv/pmbs/jobs/$paketname</code>
 +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.
 +<code>
 + pm-tools/pm-upload-job</code>
 +
 +Um das pm-upload Skript nutzen zu können ist der folgende Eintrag in der
 +<code>
 + ~/.ssh/config</code>
 +erforderlich:
 +<code>
 + Host pmbs
 + HostName packman-bs.links2linux.de
 + User your_packman_user</code>
 +
 +Der Aufruf von pm-upload-job:
 +<code>
 + pm-upload-job</code>
 +oder
 +<code>
 + pm-upload-job spec-file</code>
 +
 +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
 +<code>
 + vorname nachname <email@links2linux.de></code>
 +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)
 +<code>
 + [[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</code>
  
packman/pmbs_de.txt · Last modified: 2012/01/14 03:51 by 0.0.0.0