[Gelöst] Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)

Rund um die LCL und andere Komponenten
Antworten
Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

[Gelöst] Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)

Beitrag von Nimral »

Da ich grad sowieso an dem Thema "Sockets" dran bin, und die Doku zu dem Thema ein Paradebeispiel dafür ist, wie übel es um das Thema Doku bestellt ist, fange ich mal mit irgendwas an. Ich brauche einen Anschubs wie das sauber zu machen wäre.

Bisher versuche ich parallel, vier Links zu Librarries auszuwerten (fcl-net, fpweb, lNet, Sockets). fcl-net und Sockets sind offenbar tot, lNet bewegt sich nicht mehr seit 2011, fpweb löst ein anderes Problem.

Thema: Socket-Programmierung plattformübergreifend Win/Mac/Linux. In der Doku (https://wiki.freepascal.org/fcl-net + Verweise dahin) findet sich eine Library fcl-net, die eine Unit fpAsync zur Verfügung stellen soll. Die Unit existiert bei mir weder unter Linux noch unter Windows. Es fliegt aber noch ein Haufen gut aussehender Sample-Code durchs Netz, der aber nicht compiliert. Folgt man diesem Hinweis https://forum.lazarus.freepascal.org/in ... ic=30974.0 wurde fcl-net möglicherweise irgendwann um 2010 herum aufgegeben, wobei die Wiki Doku noch Änderungen bis ca. 2015 listet.

Ich würde nun diese Info gerne verifizieren. Ich möchte das Entfernen sicherheitshalber im Source-Repository nachvollziehen. Ich hab jetzt erfolglos die Sourcen des Verzeichnisses "Componets" aller Releases von 2005 bis 2012 manuell durchgesehen, aber nirgends eine Spur von der Geister-Library gefunden. Da muss es doch im Jahr 2021 und angesichts dessen dass das Projekt unter Source-Control steht, eine effizientere Möglichkeit geben. Hat Sourceforge keine Möglichkeit, in der Commit-Historie zu suchen?

Thnx, Armin.
Zuletzt geändert von Nimral am Do 16. Dez 2021, 08:03, insgesamt 2-mal geändert.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Verbesserung Dokumentation/Wiki (WAS: Make...)

Beitrag von wp_xyz »

Nimral hat geschrieben:
Mi 1. Dez 2021, 12:02
Thema: Socket-Programmierung plattformübergreifend Win/Max/Linux. In der Doku (https://wiki.freepascal.org/fcl-net + Verweise dahin) findet sich eine Library fcl-net, die eine Unit fpAsync zur Verfügung stellen soll. Die Unit existiert bei mir weder unter Linux noch unter Windows. Es fliegt aber noch ein Haufen gut aussehender Sample-Code durchs Netz, der aber nicht compiliert. Folgt man diesem Hinweis https://forum.lazarus.freepascal.org/in ... ic=30974.0 wurde fcl-net möglicherweise irgendwann um 2010 herum aufgegeben, wobei die Wiki Doku noch Änderungen bis ca. 2015 listet.
Das folgende habe ich unter Windows gemacht (geht natürlich entsprechend auch unter Linux)
  • Alle Libs mit Namen fcl-* gehören zu FPC. Ich gehe im Explorer ins Verzeichnis der aktuellen fpc-main Installation (es geht aber sicher auch mit einer halbwegs aktuellen Lazarus oder fpc-Installation) und suche nach "fcl-net" (ja, man kann mit dem Explorer nach Dateien suchen...). Es werden einige Einträge gefunden, der aussichtsreichste ist (fpc-dir)\packages\fcl-net. Hätte man sich denken können... Allerdings gibt es dort keine Datei die nach fpasync aussieht.
  • Also im Explorer zurück ins FPC-Installationsverzeichnis. Nun nach "fpasync" suchen. Das wird tatsächlich gefunden (fpasync.pp), aber im Ordner (fpc-dir)\packages\fcl-async\src.
  • Um zu erfahren, was mit der Datei geschehen ist: Rechtsklick auf der gefundenen Datei, "TortoiseGit" > "Git show log". Es kommt nur ein Eintrag, "created fcl-async and fcl-process packages" vom 28.10.2007; in der Dateiliste steht noch "(from packages/fpc-base/inc/fpasync.pp)". Das heißt, dass die Datei wahrscheinlich früher im fcl-base Ordner war, von fcl-net ist nicht die Rede.
Also: Die Datei existiert, aber im Ordner fcl-async. Wo das im wiki falsch steht, habe ich nicht nachvollzogen. "Jemand" sollte das ggfs. .ändern

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: Verbesserung Dokumentation/Wiki (WAS: Make...)

Beitrag von Nimral »

wp_xyz hat geschrieben:
Mi 1. Dez 2021, 14:22
Also: Die Datei existiert, aber im Ordner fcl-async. Wo das im wiki falsch steht, habe ich nicht nachvollzogen. "Jemand" sollte das ggfs. .ändern
Mach ich gerne, aber es fehlt mir noch ein Baustein: wie finde und installiere ich ein Package, das fcl-async oder fpAsync enthält? Eine lpk konnte ich erst mal nicht finden. Auch der Package Manager weiß von nichts. Dafür gibt es in der Source ein fpmake.pp file, das wierderum zu einem fpmake system zu gehören scheint, für das Lazarus keine Unterstützung hat? Wie ist das gedacht mit dem inhalt von fpc\....\source\packages, wie verwendet man das was dort liegt?

Armin.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Verbesserung Dokumentation/Wiki (WAS: Make...)

Beitrag von wp_xyz »

FPC und Lazarus sind unterschiedliche Produkte und haben unterschiedliche Package-Systeme. Wenn du unter "Components" (gemeint ist: Lazarus/components) suchst, dann suchst du Lazarus-Packages. Auch der OPM gehört zu Lazarus, arbeitet also mit Lazarus Packages.

Die FPC-Packages stehen in der Regel im Ordner packages der FPC-Installation und sind gewöhnlich in der "FCL" (= Free Pascal Component Library) automatisch installiert. Das heißt, du musst bei den üblichen Projekt-Templates nur die entsprechende Unit in die uses-Anweisung aufnehmen, und los geht's. (Schlimmstenfalls musst du noch FCL zu den Anforderungen des Projekts hinzufügen). Einige wenige Packages sind nicht mit dabei, wahrscheinlich weil sie nicht unter den wichtigsten Plattformen funktionieren. fcl-async scheint eins davon zu sein.

Da diese Packages nirgendwo in der FLC noch in der LCL gebraucht werden, würde ich einfach das src-Verzeichnis des entsprechenden FCL-Packages in mein Projekt kopieren und den Unit-Pfad ggfs. erweitern (du kannst es auch an Ort und Stelle lassen und nur den Unit-Pfad erweitern, aber damit wäre dein Projekt auf eine feste Ordner-Struktur festgenagelt - das fällt dir irgendwann auf die Füße).

Alternativ - aber das habe ich noch nie ausprobiert - kann man auch versuchen, das Package in die FCL zu installieren. Das ist auf dieser Seite dokumentiert: https://fppkg.cnoc.nl/documentation

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: Verbesserung Dokumentation/Wiki (WAS: Make...)

Beitrag von af0815 »

Schau mal in die \fpcsrc\packages\fcl-async\fpmake.pp

Code: Alles auswählen

    P:=AddPackage('fcl-async');
    P.ShortName:='fcla';
{$ifdef ALLPACKAGES}
    P.Directory:=ADirectory;
{$endif ALLPACKAGES}
    P.Version:='3.2.2';

    P.Author := 'Mostly Sebastian Guenther';
    P.License := 'LGPL with modification, ';
    P.HomepageURL := 'www.freepascal.org';
    P.Email := '';
    P.Description := 'Asynchronous event management of Free Component Libraries (FCL), FPC''s OOP library.';
    P.NeedLibC:= false;
    P.OSes:=AllUnixOses;
    if Defaults.CPU=jvm then
      P.OSes := P.OSes - [java,android];

 
Da sieht man IMHO an "P.OSes:=AllUnixOses;" das es nur für Unixes ist. Zum Beispiel im fcl-image\fpmake steht dort "P.OSes := P.OSes - [embedded,nativent,msdos,win16,macosclassic,palmos];". Daran sieht man, das das für alle Betriebssystem ist, bis auf die aufgezählten. Wenn man weis nach was man sucht, geht es relativ einfach.

Edit: https://fppkg.cnoc.nl/about dürfte auch nicht ganz aktuell sein. Der Link auf https://svn.freepascal.org/svn/fpcproje ... rver/trunk sollte doch auf git umgestellt sein ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Nimral
Beiträge: 390
Registriert: Mi 10. Jun 2015, 11:33

Re: Umgang mit FCL-Packages (WAS: Verbesserung Dokumentation/Wiki)

Beitrag von Nimral »

Das war der entscheidende Hinweis, Danke mal wieder!

HG, Armin

Antworten