Lazarus: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
(48 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Lazarus ist eine freie Open-Source Entwicklungsumgebung für den freepascal Compiler.  
Die Lazarus-IDE (http://lazarus-ide.org/) ist eine freie Open-Source Entwicklungsumgebung für den Freepascal-Compiler. OrgaMon wird im Moment komplett auf die Lazarus IDE migriert. Die Delphi GUI (VCL) wird dabei völlig entfallen (siehe [[OrgaMon-next]]).


[[Datei:Lazarus.png]]
[[Datei:Lazarus.png|200px]]


Mit dem Einzug von Lazarus in die OrgaMon Entwicklung gibt es Bestrebungen keinerlei kommerziellen Komponenten für OrgaMon mehr einzusetzen. Das betrifft den Wegfall folgender Komponenten:
Mit dem Einzug von Lazarus in die OrgaMon Entwicklung gibt es Bestrebungen keinerlei kommerziellen Komponenten für OrgaMon mehr einzusetzen. Das betrifft den Wegfall folgender Komponenten:


Delphi, TMS Flexcell, IBObjects
Delphi, TMS Flexcell, IBObjects
== Installation ==
=== Windows ===
* https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/
=== openSuSE 41.2 64bit ===
leider läuft Lazarus 1.6.2 (1.6.4 nicht getestet) bei mir nicht "Out of The Box", im Moment sind 2 Schritte notwendig:
* Fehlermeldung: cursors.res hat das falsche Format
** 1) kopiere ./OrgaMon/HTTP2/*.res nach
raib27:/usr/lib64/lazarus/lcl/units/x86_64-linux # l *.res
-rw-r--r-- 1 root root 8812 Feb 14 15:34 btn_icons.res
-rw-r--r-- 1 root root 4876 Feb 14 15:29 cursors.res
-rw-r--r-- 1 root root 8907 Feb 14 15:35 dialog_icons.res
-rw-r--r-- 1 root root 1567 Feb 14 15:36 lcl_dbgrid_images.res
-rw-r--r-- 1 root root 6700 Feb 14 15:37 lcl_dbnav_images.res
-rw-r--r-- 1 root root  359 Feb 14 15:38 lcl_dock_images.res
-rw-r--r-- 1 root root 6666 Feb 14 15:38 lcl_edbtnimg.res
-rw-r--r-- 1 root root 1335 Feb 14 15:35 lcl_grid_images.res
* Fehlermeldung: 'crtbeginS.o nicht gefunden'
** 2) in dem Projekt muss man noch einen Pfad nachtragen:
/usr/lib64/gcc/x86_64-suse-linux/4.8


== cOrgaMon ==
== cOrgaMon ==


cOrgaMon steht für "Console" OrgaMon. Er ist der Server Prozess des OrgaMon ohne GUI. Die Anwendung cOrgaMon.exe ist ein Delphi-Projekt für Win32. lOrgaMon basiert auf der selben Code-Basis ist aber ein freepascal-Projekt für win32 und langfristig auch für Linux.
cOrgaMon steht für "Console" OrgaMon. Er ist der Server Prozess des OrgaMon ohne GUI. Die Anwendung cOrgaMon.exe ist ein Delphi-Projekt für Win32. lOrgaMon basiert auf der selben Code-Basis ist aber ein freepascal-Projekt für win64 und langfristig auch für Linux.


== lOrgaMon ==
== lOrgaMon ==
Zeile 15: Zeile 43:
"l" steht für Lazarus aber auch für Linux. Für die lOrgaMon - Entwicklung müssen folgende Open-Source-Packete installiert werden:
"l" steht für Lazarus aber auch für Linux. Für die lOrgaMon - Entwicklung müssen folgende Open-Source-Packete installiert werden:


=== erforderliche Freepascal-Packages ===
=== erforderliche Freepascal-Packages (Online-Paket-Manager) ===


dexif_package
ibcontrols (IBX)
dcpcrypt
zcomponent (Zeos)
indylaz (Indy)
laz_fpspreadsheet(fpSpreadsheet)
=== ehemals erforderliche manuelle Installation ===


Die Installation von Paketen funktioniert in Lazarus in der Regel so:
Die Installation von Paketen funktioniert in Lazarus in der Regel so:


* ->Package->Package-Datei (.lpk) öffnen
* ->Package->Package-Datei (.lpk) öffnen
* ->Kompilieren
* ->Verwenden->Installieren->Ja
* ->Nutzung->Installieren->Ja




==== Indy ====
==== Indy 10.6.2 ====


[[Indy]]
* Verzeichnis sollte "..\Indy\" sein (relativ zum OrgaMon-Verzeichnis)
* svn-Version empfohlen aus "https://svn.atozed.com:444/svn/Indy10/trunk"
* svn-Version empfohlen aus "https://svn.atozed.com:444/svn/Indy10/trunk"
* .\Lib\IndyLaz.lpk




[[Indy]] 10.6 | | (Es kommt ein Fehler bei der Installation, einfach nochmal "kompilieren" und "installieren" drücken!)<br>
==== ZEOS 7.2.4 ====


==== ZEOS ====
* https://sourceforge.net/projects/zeoslib/files/Zeos%20Database%20Objects/
* Verzeichnis sollte ..\Zeos\ heissen (relativ zum OrgaMon-Entwicklungsverzeichnis)
* von sourceforge lädt man sich "zeosdbo-7.2.4-stable.zip"
* Versionsnummer von ZEOS steht in srv/core/ZClasses.pas
* .\packages\lazarus\zcomponent.lpk <br>


* svn-Version empfohlen aus "http://svn.code.sf.net/p/zeoslib/code-0/branches/testing-7.2"
==== ZEOS "trunk" ====


[[zeos]] 7.2 | zcomponent.lpk <br>
* Zeos (https://github.com/svn2github/ZeosLib.git) nach "Zeos-Git" auschecken
* mklink /D C:\Users\Andreas\Documents\Embarcadero\Studio\Projekte\Zeos C:\Users\Andreas\Documents\Embarcadero\Studio\Projekte\Zeos-Git\trunk
* Ansonsten Beschreibung wie oben
 
==== IBX 2.3.3 ====
 
* Verzeichnis sollte ..\IBX\ heissen (relativ zum OrgaMon-Entwicklungsverzeichnis)
* http://www.mwasoftware.co.uk/ibx
** Package->lpk öffnen->"ibexpressconsolemode" lpk öffnen
** Nutzung->Zum Projekt hinzufügen
 
=== erforderliche Tools ===
 
* keine Installation nötig, die Tools müssen nur im Suchpfad des Compilers sichtbar sein
* das Quellverzeichnis bei "Projekt -> Projekteinstellungen -> Compiler -> Pfade " eintragen


==== fpspreadsheet ====
==== fpspreadsheet ====


[[fpspreadsheet]]
* Verzeichnis sollte "..\fpspreadsheet\" heissen
* svn-Version empfohlen aus "svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet"
* svn-Version empfohlen aus "svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet"
** Will das dennoch das Package installieren:  1.5  | laz_fpspreadsheet <br>
* Das Package "source/laz_fpspreadsheet" sollte installiert werden
== In der Entwicklung ==
=== Linux-Only: libzip.so.2 ===


[[fpspreadsheet]] 1.5  | laz_fpspreadsheet <br>
ev. den Zip Support über eine


=== Wegfall in Kürze ===
libzip.so.2


Abbrevia 5.2 (soll entfallen, fpc hat zip Support, fpspreadsheet arbeitet auch damit!)<br>
siehe \lazarus\lcl\interfaces\gtk2\unitywsctrls.pas wie man das macht!


=== (k) D-BUS ===
=== (k) D-BUS ===
Zeile 53: Zeile 120:
Läuft beides auf dem selben Host soll kein Netzwerk-Interface nötig sein, hier erwarte ich "Zero" Ausführungszeiten durch die Kernel Integration. Ein Remote Host soll aber auch über das Internet ZUgriff haben.
Läuft beides auf dem selben Host soll kein Netzwerk-Interface nötig sein, hier erwarte ich "Zero" Ausführungszeiten durch die Kernel Integration. Ein Remote Host soll aber auch über das Internet ZUgriff haben.


==== Ausführung von Aktionen mit langen Wartezeiten ====
=== Ausführung von Aktionen mit langen Wartezeiten ===


Der Client kontrolliert über Properties die Aktion, bisher wird der Key/Value Store memcached verwendet, ab sofort soll mal mit "Properties" des D-Bus experimentiert werden. Clients sollen z.B. in 1,5 Sekunden Rhytmus den Wert einer lang brauchenden Aktion abfragen können. Verlieren sie den Kontext soll nach einem Restart des Client und dem Erneuten Auslösen der Aktion nur ein Token auf die bisher laufende Aktion gegeben werden.
Der Client kontrolliert über Properties die Aktion, bisher wird der Key/Value Store memcached verwendet, ab sofort soll mal mit "Properties" des D-Bus experimentiert werden. Clients sollen z.B. in 1,5 Sekunden Rhytmus den Wert einer lang brauchenden Aktion abfragen können. Verlieren sie den Kontext soll nach einem Restart des Client und dem Erneuten Auslösen der Aktion nur ein Token auf die bisher laufende Aktion gegeben werden.

Version vom 25. Februar 2021, 13:06 Uhr

Die Lazarus-IDE (http://lazarus-ide.org/) ist eine freie Open-Source Entwicklungsumgebung für den Freepascal-Compiler. OrgaMon wird im Moment komplett auf die Lazarus IDE migriert. Die Delphi GUI (VCL) wird dabei völlig entfallen (siehe OrgaMon-next).

Mit dem Einzug von Lazarus in die OrgaMon Entwicklung gibt es Bestrebungen keinerlei kommerziellen Komponenten für OrgaMon mehr einzusetzen. Das betrifft den Wegfall folgender Komponenten:

Delphi, TMS Flexcell, IBObjects

Installation

Windows

openSuSE 41.2 64bit

leider läuft Lazarus 1.6.2 (1.6.4 nicht getestet) bei mir nicht "Out of The Box", im Moment sind 2 Schritte notwendig:

  • Fehlermeldung: cursors.res hat das falsche Format
    • 1) kopiere ./OrgaMon/HTTP2/*.res nach
raib27:/usr/lib64/lazarus/lcl/units/x86_64-linux # l *.res
-rw-r--r-- 1 root root 8812 Feb 14 15:34 btn_icons.res
-rw-r--r-- 1 root root 4876 Feb 14 15:29 cursors.res
-rw-r--r-- 1 root root 8907 Feb 14 15:35 dialog_icons.res
-rw-r--r-- 1 root root 1567 Feb 14 15:36 lcl_dbgrid_images.res
-rw-r--r-- 1 root root 6700 Feb 14 15:37 lcl_dbnav_images.res
-rw-r--r-- 1 root root  359 Feb 14 15:38 lcl_dock_images.res
-rw-r--r-- 1 root root 6666 Feb 14 15:38 lcl_edbtnimg.res
-rw-r--r-- 1 root root 1335 Feb 14 15:35 lcl_grid_images.res


  • Fehlermeldung: 'crtbeginS.o nicht gefunden'
    • 2) in dem Projekt muss man noch einen Pfad nachtragen:
/usr/lib64/gcc/x86_64-suse-linux/4.8

cOrgaMon

cOrgaMon steht für "Console" OrgaMon. Er ist der Server Prozess des OrgaMon ohne GUI. Die Anwendung cOrgaMon.exe ist ein Delphi-Projekt für Win32. lOrgaMon basiert auf der selben Code-Basis ist aber ein freepascal-Projekt für win64 und langfristig auch für Linux.

lOrgaMon

"l" steht für Lazarus aber auch für Linux. Für die lOrgaMon - Entwicklung müssen folgende Open-Source-Packete installiert werden:

erforderliche Freepascal-Packages (Online-Paket-Manager)

dexif_package
ibcontrols (IBX)
dcpcrypt
zcomponent (Zeos)
indylaz (Indy)
laz_fpspreadsheet(fpSpreadsheet)

ehemals erforderliche manuelle Installation

Die Installation von Paketen funktioniert in Lazarus in der Regel so:

  • ->Package->Package-Datei (.lpk) öffnen
  • ->Verwenden->Installieren->Ja


Indy 10.6.2

Indy


ZEOS 7.2.4

ZEOS "trunk"

  • Zeos (https://github.com/svn2github/ZeosLib.git) nach "Zeos-Git" auschecken
  • mklink /D C:\Users\Andreas\Documents\Embarcadero\Studio\Projekte\Zeos C:\Users\Andreas\Documents\Embarcadero\Studio\Projekte\Zeos-Git\trunk
  • Ansonsten Beschreibung wie oben

IBX 2.3.3

  • Verzeichnis sollte ..\IBX\ heissen (relativ zum OrgaMon-Entwicklungsverzeichnis)
  • http://www.mwasoftware.co.uk/ibx
    • Package->lpk öffnen->"ibexpressconsolemode" lpk öffnen
    • Nutzung->Zum Projekt hinzufügen

erforderliche Tools

  • keine Installation nötig, die Tools müssen nur im Suchpfad des Compilers sichtbar sein
  • das Quellverzeichnis bei "Projekt -> Projekteinstellungen -> Compiler -> Pfade " eintragen

fpspreadsheet

fpspreadsheet

In der Entwicklung

Linux-Only: libzip.so.2

ev. den Zip Support über eine

libzip.so.2

siehe \lazarus\lcl\interfaces\gtk2\unitywsctrls.pas wie man das macht!

(k) D-BUS

über D-Bus will ich Serverdienste mit der GUI koppeln. Ob beides auf dem selben Host läuft oder nicht oder auch gemischt soll unerheblich sein, ich erhoffe mir Hilfe durch den "Transport" Begriff von D-Bus. Läuft beides auf dem selben Host soll kein Netzwerk-Interface nötig sein, hier erwarte ich "Zero" Ausführungszeiten durch die Kernel Integration. Ein Remote Host soll aber auch über das Internet ZUgriff haben.

Ausführung von Aktionen mit langen Wartezeiten

Der Client kontrolliert über Properties die Aktion, bisher wird der Key/Value Store memcached verwendet, ab sofort soll mal mit "Properties" des D-Bus experimentiert werden. Clients sollen z.B. in 1,5 Sekunden Rhytmus den Wert einer lang brauchenden Aktion abfragen können. Verlieren sie den Kontext soll nach einem Restart des Client und dem Erneuten Auslösen der Aktion nur ein Token auf die bisher laufende Aktion gegeben werden.

org::freedesktop::DBus::Properties::Set

HTTP/2

der lOrgaMon soll einen Speedy Server zur Anbindung einer HTML 5 Gui beinhalten. Es soll nicht auf Apache2 gesetzt werden, sondern ein SPDY Protokoll Server selbst programmiert werden. Die Kommunikation unter den Modulen soll über (k)dbus erfolgen. Dabei soll DBUS im wesentlichen als Key-Value Store misbraucht werden. Die Komprimierung sollte mit https://github.com/google/brotli erfolgen. Der Web Client soll eine Bridge bekommen über die er Key-Values selbst lesen und setzen kann. Zentraler Function Call Mechanismus soll DBUS serverseitig werden. Auf dem Client ist nur ein reiner Web-Client nötig.

HTTP/2 - Clients

^ TCP v

[SPDY Server]

^ DBUS v

[lOrgaMon-, lOrgaMon-, lOrgaMon-, lOrgaMon-Instances]

^ local v

[Firebird] [FileSystem]

Textfeldfarben

wiess: kam so vom server rosa: ist auf dem Server jetzt anders gelb: wurde hier verändert

es soll so sein, dass eine edit gruppe einen ID bekommt, wenn der Server was geändert soll die ungültigkeit des ID durch einen Farbwechsel angezeigt werden. Die Notification soll per PSUH TREchnologie von HTTP/2 erfolgen.