Bestehendes Paket in Poudriere hinzufügen

oli1301

Active Member
Hallo alle zusammen,

wir würden gerne zum verteilen unserer Verlagssoftware diese in Poudriere mit einpflegen.
Wir haben sowohl den Port als auch das Paket für die Software, allerdings habe ich noch keine Lösung gefunden, diese bei Poudriere mit hinzuzufügen. Soweit ich das aus den Dokus herauslese, kann Poudriere nur Pakete aus den Ports erstellen, welche aus dem Internet gezogen werden. Da die Verlagssoftware nicht öffentlich ist, fällt die Variante schon weg, oder gibt es eine Option bei Poudriere auf einen bestimmten Pfad zu verweisen woher er sich den Port ziehen soll?

MfG
 
Poudriere arbeitet mit Portshaker ganz gut zusammen. Ich habe dies schon verwendet, um eigene Änderungen an den Haskell-Ports zu testen. Das vorgehen dabei:

  • Ein Overlay erstellen wo eure Firmeninternen ports drin sind.
  • Eine portshaker.conf anlegen (s.u.)
  • Zwei portshaker.d files anlegen, eine für upstream ports und eine für eurer Overlay.
Portshaker wird diese dann zusammenfügen und poudriere kann damit bauen.

Meine portshaker.conf enthält diese (relevanten) Zeilen:
Code:
poudriere_ports_mountpoint=/usr/local/poudriere/ports
ports_trees="main haskell" # main is ein andere, unrelated tree von mir
haskell_poudriere_tree="haskell"
haskell_merge_from="ports haskell"

Die portshaker.d Dateien sind:
Code:
# file: portshaker.d/haskell
. /usr/local/share/portshaker/portshaker.subr
   
#method="git"
#git_clone_uri="git://github.com/freebsd-haskell/freebsd-haskell.git"
method="rsync"
rsync_source_path=/grave/home/namor/haskell-overlay
   
run_portshaker_command $*
Wie du siehst: Es geht mit git und rsync. Da ich lokale Änderungen mache die noch nicht upstream geschweige denn commited sind, habe ich unter /grave/.../haskell-overlay einen checkout, wo ich experimentiere und dann rsync verwende. Wenn alles klappt mache ich einen commit/pull request.

Die normalen ports bekommt portshaker hierher:
Code:
# file: portshaker.d/ports
. /usr/local/share/portshaker/portshaker.subr
   
method="portsnap"
   
run_portshaker_command $*

An poudriere musste IIRC nichts besonderes eingestellt werden. Du findest dann bei poudriere einen neuen Portstree, mit dem du bauen kannst:
Code:
root@bulldozer:~ # poudriere ports -l
PORTSTREE METHOD TIMESTAMP PATH
(...)
haskell  -  /usr/local/poudriere/ports/haskell
 
Wir haben sowohl den Port als auch das Paket für die Software, allerdings habe ich noch keine Lösung gefunden, diese bei Poudriere mit hinzuzufügen.
Also ganz "dirty" geht es auch so:
  • Den Pfad des Portstree welchen poudriere verwendet suchen (bei mir z.B. /poudriere/base/ports/default)
  • dort dann einen Ordner erstellen z.B. "misc/verlagssoftware"
  • in der Datei "poudriere-list" den Port hinzufügen: "misc/verlagssoftware"
  • im Verzeichnis "misc/verlagssoftware" muss natürlich ein Makefile etc. liegen zum bauen. Weiter "CATEGORIES=misc" setzen.
  • poudriere anwerfen
Mit dieser Variante habe ich ein paar Pakete für Skripte gebaut. Ist sicherlich keine super Lösung aber sie funktioniert schnell und einfach.

Gruss
 
Also ganz "dirty" geht es auch so:
...
Mit dieser Variante habe ich ein paar Pakete für Skripte gebaut. Ist sicherlich keine super Lösung aber sie funktioniert schnell und einfach.

Portshaker macht letztlich auch nicht viel mehr. Die Frage ist bei deiner "dirty" Variante nur, wie du den Portstree dann updatest. Mit SVN könnte das sogar ganz benutzbar klappen. Portsnap hingegen löscht dir eiskalt jedes mal all deine custom ports.
 
@namor

Ja Portshaker steht noch auf meiner Liste aber nein ich verwende dies bei mir mit "poudriere" jetzt seit ca. einem 3/4 Jahr. Mir würde noch nie der Portstree überschrieben und damit meine eigenen "custom ports" gelöscht. Ist noch nicht pasiert. Ich mache jeden Tag zwei mal ein Update mit "poudriere ports -u".
 
... aber nein ich verwende dies bei mir mit "poudriere" jetzt seit ca. einem 3/4 Jahr. Mir würde noch nie der Portstree überschrieben und damit meine eigenen "custom ports" gelöscht. Ist noch nicht pasiert. Ich mache jeden Tag zwei mal ein Update mit "poudriere ports -u".

Interessant, würdest du prüfen, mit welcher Methode dein Portstree erstellt wurde? "poudriere ports" sagt es gibt portsnap, git und diverse svn Methoden.

"poudriere ports -l" sollte die Methode anzeigen. Ansonsten findest du bei svn ein .svn Verzeichnis und bei git ein .git Verzeichnis in deinem portstree, was die Methode verrät. Wenn deine Methode portsnap ist würde mich das sehr überraschen, da dies zumindest bei mir früher immer die "custom ports" gelöscht hat.
 
.. mit welcher Methode dein Portstree erstellt wurde?
Da muss ich nicht mal nachschauen:
Code:
PORTSTREE            METHOD     PATH
default              portsnap   /poudriere/base/ports/default
Wie gesagt. Es ist mir noch nie passiert, dass etwas überschrieben wurde und da es bis jetzt immer funktioniert hat, war es ok für mich.
 
Habs jetzt erstmal mit der Methode von foxit ausprobiert. Scheint so als würde es funktionieren :)
Danke an euch für eure Hilfe.
 
Zurück
Oben