kleines Buildprogramm mit TProcess

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lemmy
Beiträge: 57
Registriert: Do 23. Feb 2017, 06:18

kleines Buildprogramm mit TProcess

Beitrag von Lemmy »

Hallo,

ich bau mir gerade mit Lazarus ein kleines Buildprogramm, das mein eigentliches Programm erzeugt und noch andere Kleinigkeiten rund um das bauen abhandelt. Einen eigenen Buildserver (Jenkins und co) lohnt sich dafür nicht. Das ganze aktuell noch unter Windows, später soll das ganze dann unter Linux laufen.

Ich habe mir aus Lazarus die entsprechende Parameterliste gezogen und kann damit das Projekt aus einer Konsole mit fpc auch erzeugen.

Das ganze habe ich dann in ein kleines Programm gepackt:

Code: Alles auswählen

 
  process := TProcess.Create(nil);
  process.executable := fpc.Text; // c:\Lazarus\fpc\...\fpc.exe
  process.CurrentDirectory := edtSourceDir.Text//Verzeichnis mit der Projektdatei
  process.Parameters.text := mmFpcParams.Text; //Parameter aus Lazarus
  process.options := process.Options + [poWaitOnExit, poUsePipes];
  process.Active := true;
  if Assigned(process.Output) then
    mmOutput.Lines.LoadFromStream(process.Output);
  process.Free;
 


wenn ich das Kommando in der Konsole laufen lasse, dann ist das in 3-5 Sekunden durch mit dem Bauen. Wenn ich das über den Code anstoße, dann kann ich das, 2. 3 opder auch 10 Minuten laufen lassen, nix passiert. Breche ich dann ab, dann kommt unter Output max. das Einlesen der fpc.cfg - aber auch nicht ganz..

Unter Process.StdErr kommt nichts zurück.

Mir fehlt gerade die Idee, warum das so in die Binsen geht. Oder macht es mehr Sinn hier auf Plattformspezifische Befehle zurück zu greifen, weil das Ziel wird sein, dass das Programm zukünftig unter linux laufen soll...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: kleines Buildprogramm mit TProcess

Beitrag von m.fuchs »

Lemmy hat geschrieben:ich bau mir gerade mit Lazarus ein kleines Buildprogramm, das mein eigentliches Programm erzeugt und noch andere Kleinigkeiten rund um das bauen abhandelt. Einen eigenen Buildserver (Jenkins und co) lohnt sich dafür nicht. Das ganze aktuell noch unter Windows, später soll das ganze dann unter Linux laufen.

Die Frage ist ja: warum das Rad neu erfinden? Es muss ja nicht gleich Jenkins sein, wie wäre es denn mit make?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de


Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: kleines Buildprogramm mit TProcess

Beitrag von af0815 »

Oder sich das Projekt fpcup mal ansehen, das macht so ziemlich alles :-)

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Lemmy
Beiträge: 57
Registriert: Do 23. Feb 2017, 06:18

Re: kleines Buildprogramm mit TProcess

Beitrag von Lemmy »

m.fuchs hat geschrieben:Die Frage ist ja: warum das Rad neu erfinden?


Völlig richtig! Ich habe das auf einfachen Weg machen wollen, weil es schon ein existierendes Buildprogramm gibt, das unter Delphi läuft, wie auch die Software früher (oder um genau zu sein, die aktuelle Version immer noch). Daher hätte ich das gerne einfach portiert. Ziel soll sein, dass außer Lazarus + git keine weiteren Abhängigkeiten installiert werden müssen - wenn ich das richtig verstehe wäre das bei allen vorgeschlagenen Möglichkeiten auch gegeben (ok, außer make unter Windows).

Ich werde mir das mal anschauen, fpMake scheint das interessanteste davon zu sein...

Unabhängig davon würde mich dennoch interessieren was das mit dem Aufruf oben auf sich hat - muss noch git aufrufen, mal schauen, vielleicht klappt das damit besser :-)

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: kleines Buildprogramm mit TProcess

Beitrag von Socke »

Lemmy hat geschrieben:(ok, außer make unter Windows).

make wird unter Windows zusammen mit dem FPC installiert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: kleines Buildprogramm mit TProcess

Beitrag von marcov »

Nutze Runcommand() oder implementiere "large output" wie im (nur Englischen?) wiki beschrieben ist.

linus
Beiträge: 22
Registriert: Di 19. Okt 2010, 17:23
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Kaiserstuhl

Re: kleines Buildprogramm mit TProcess

Beitrag von linus »

Zurück zum Problem: Wie groß (also wieviele Bytes) ist denn die Rückgabe, die Du erwartest? Ich weiß nicht, ob das unter Windows auch ein Problem ist aber unter Linux ist die Puffergröße für die Rückgabe der Daten auf 2048 Bytes eingestellt - bei kleinen Datenmengen ist das egal, aber wenn's mehr wird kann das zu Deadlocks führen, siehe: http://wiki.freepascal.org/Executing_Ex ... rograms/de
Wer mehr denkt hat mehr vom Hirn...

Lemmy
Beiträge: 57
Registriert: Do 23. Feb 2017, 06:18

Re: kleines Buildprogramm mit TProcess

Beitrag von Lemmy »



na toll, man sollte einen Wiki-Artikel auch bis zum Ende lesen. Danke, das wars...

Antworten