kleines Buildprogramm mit TProcess

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

kleines Buildprogramm mit TProcess

Beitragvon Lemmy » 8. Sep 2017, 20:18 kleines Buildprogramm mit TProcess

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...
Lemmy
 
Beiträge: 7
Registriert: 23. Feb 2017, 06:18

Beitragvon m.fuchs » 8. Sep 2017, 23:18 Re: kleines Buildprogramm mit TProcess

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
m.fuchs
 
Beiträge: 1676
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.6, FPC 3.0) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon creed steiger » 9. Sep 2017, 01:08 Re: kleines Buildprogramm mit TProcess

creed steiger
 
Beiträge: 935
Registriert: 11. Sep 2006, 21:56

Beitragvon af0815 » 9. Sep 2017, 07:58 Re: kleines Buildprogramm mit TProcess

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).
af0815
 
Beiträge: 3258
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon Lemmy » 9. Sep 2017, 16:14 Re: kleines Buildprogramm mit TProcess

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 :-)
Lemmy
 
Beiträge: 7
Registriert: 23. Feb 2017, 06:18

Beitragvon Socke » 11. Sep 2017, 14:31 Re: kleines Buildprogramm mit TProcess

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
Socke
 
Beiträge: 2387
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon marcov » 11. Sep 2017, 14:53 Re: kleines Buildprogramm mit TProcess

Nutze Runcommand() oder implementiere "large output" wie im (nur Englischen?) wiki beschrieben ist.
marcov
 
Beiträge: 999
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

Beitragvon linus » 11. Sep 2017, 15:46 Re: kleines Buildprogramm mit TProcess

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...
linus
 
Beiträge: 22
Registriert: 19. Okt 2010, 16:23
Wohnort: Kaiserstuhl
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Lemmy » 14. Sep 2017, 22:09 Re: kleines Buildprogramm mit TProcess



na toll, man sollte einen Wiki-Artikel auch bis zum Ende lesen. Danke, das wars...
Lemmy
 
Beiträge: 7
Registriert: 23. Feb 2017, 06:18

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried