So, hat doch deutlich länger gedauert als erwartet, aber hier eine kurze™ erklärung.
LPM ist ein python script was praktisch die Funktionen von Lazbuild erweitert um packages. Um lpm zu benutzen muss zunächst mal LPM runtergeladen werden, einfach das repository aus git clonen. Das hauptscript im Repository ist die datei "lpm" (python script ohne dateiendung). Unter Unix systemen ist sie direkt ausführbar unter Windows sollte es allerdings auch funktionieren wenn man sie mit python aufruft (also python3 lpm ...).
Als erstes muss lpm konfiguriert werden. LPM erzeugt im Nutzerordner seine konfiguration in dem .lpm ordner. Das erste was man konfigurieren muss ist der Pfad unter dem Lazbuild gefunden werden kann. LPM kann mehrere Lazarus versionen handlen (Grund dafür ist bei größeren projekten fixe ich die Lazarus und FPC version, sodass ich z.B. noch ältere Projekte habe die auf Lazarus 1.8 laufen, da ich sie noch nicht geupdated habe).
Um eine lazarus installation hinzuzufügen musst du einfach "lpm lazarus add name pfad" aufrufen.
Z.B. für lazarus mit FPCUp installiert ist das standard verzeichnis /home/user/development/lazarus wäre das also
Code: Alles auswählen
$> lpm lazarus add fpcup /home/user/development/lazarus
Einfach schauen wo lazarus installiert ist und dann hinzufügen.
Als nächstes muss die liste der OPM packages aktualisiert werden damit LPM diese finden kann. Das geht mit
Das sollte vor jeder verwendung gemacht werden um immer aktuell zu sein.
Wenn LPM über git runtergeladen wurde kann man auch lpm sich selbst updaten lassen mit
Um packages runterzuladen und zu installieren kann "lpm install packagename" (alternativ pfad zum bereits runtergeladenen package oder HTTP download link falls es nicht im OPM ist) verwendet werden, da du aber daran interresiert bist alles automatisch zu machen, tut das auch lpm build automatisch.
Über die Modi kannst du bestimmte Build Modi definieren. Wenn du damit noch keine Erfahrung hast, schau dir mal Seiten 1-5 von diesem PDF an:
https://gitlab.com/Warfley/lazarusgitla ... torial.pdf
Das --yes skipped die nachfrage ob du die fehlenden Pakete runterladen willst und machts einfach.
Für mehr infos schau dir die README im Github zu LPM an.
Falls dir das zu kompliziert ist, gibt es auch die LPM docker images. Docker erlaubt es software zu containerizen sodass man praktisch alles was benötigt wird als einen container shippen kann. Die LPM container (warfley/lpm:version) packen also alles was du brauchst zusammen, also FPC mit compilern für Windows 32 und 64 bit sowie Linux 64 bit Lazarus mit QT5 und GTK2 und lpm.
Wenn du einen Docker container startest, kannst du ordner einbinden um sie in dem container verfügbar zu machen.
Um nun lpm mit einem projekt zu benutzen benötigst du nur eine laufende Docker installation, und dann kannst du folgenden befehl ausführen:
Code: Alles auswählen
$> docker run --rm -v /path/to/project:/project warfley/lpm:stable lpm build --yes project.lpi [MODES]
das --rm sagt das der Container nach dem kompilieren wieder gelöscht werden soll. Das liegt daran das der Container als "one off" container gedacht ist den man startet, einmal kompiliert und ihn dann wieder wegwirft.
-v bindet das projekt ein und nach dem image namen (warfley/lpm:stable) kommt der Befehl der ausgeführt werden soll.
Um mal ein praktisches Beispiel zu bringen, das Beispiel Projekt was ich bereits oben verlinkt habe:
https://gitlab.com/Warfley/lazarusgitlabci
Dieses Projekt benutz DCPCrypt aus dem OPM, außerdem hat es build konfigurationen für Linux mit GTK and QT5 sowie für Windows 64 bit. Wenn ich bei mir (unter Windows mit Docker Desktop für Windows) den folgenden befehl ausführe:
Code: Alles auswählen
docker run --rm -v C:\Users\frederic\Documents\Projects\lazarusgitlabci:/project lpm:stable lpm build --yes project/FileEncrypter.lpi QTLinux GTKLinux Windows
Wird das projekt (das in C:\Users\...\lazarusgitlabci liegt) gebaut. Sobald der Container fertig ist finde ich dann unter "project\build" meine unterorder "x86_64-win64" und "x86_64-linux" die gebauten Programme.
Die Docker images gibt es in verschiedenen versionen, aktuell habe ich nur die "warfley/lpm:stable", was die aktuell stabile Lazarusversion (die es auch auf der Website zum Runterladen gibt), gebaut und hochgeladen.
Sobald ich aber den build server wieder angeschmissen bekomme (was ich die tage machen werde) wird es aber auch wieder die versionen 1.6, 1.8, 2.0, 2.2 (aktuelle stable), trunk (fpc stable, lazarus trunk) und experimental (fpc trunk und lazarus trunk) geben, mit nightly builds für die trunk versionen.
Ich muss nur noch gucken das ich das Docker ein bisschen kleiner bekomme, denn aktuell sind es 4 GB was sehr happig ist, natürlich braucht das auch ein bisschen speicher (fpc braucht pro cross compiler etwa 300 mb und lazarus braucht etwa 800 mb, also wird es etwas weniger als 2 gig mindestens), aber dank ein paar eigenheiten von docker ist das image bisher leider noch doppelt so groß wie es eigentlich sein müsste