Free Pascal findet unit Dateien nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Free Pascal findet unit Dateien nicht

Beitrag von Cordess » 07.06.2022 04:00:52

Ich versuche hier ein altes Turbo Pascal Programm unter Debian 11 zu compilieren, allerdings scheint bereits die Defaultkonfiguration des fpc Pakets bei Debian broken zu sein.

Wenn ich nämlich versuche den .pas Code zu compilieren, dann findet er die Unit crt nicht.
Diese scheint es aber zu geben:

Code: Alles auswählen

find /usr/ -iname crt.ppu
/usr/lib/x86_64-linux-gnu/fpc/3.2.0/units/x86_64-linux/rtl-console/crt.ppu
Allerdings zeigt

Code: Alles auswählen

fppkg listsettings      
an, dass es das GobalInstallDir unter

Code: Alles auswählen

"/usr/local/lib/fpc/3.2.0/"
vermutet.

Und da liegt natürlich gar nichts. Hier ist die Default Konfiguration also Seitens Debian bereits broken.

Also habe ich das in ~/.fppkg/config/default mal auf folgendes angepasst, diese wurde zuvor von fpc oder irgendeinem anderen Free Pascal Programm, das dafür zuständig ist, automatisch angelegt:

Code: Alles auswählen

[Defaults]
ConfigVersion=5
# Alt
# GlobalPrefix=/usr/local/
# Neu
GlobalPrefix=/usr/lib/x86_64-linux-gnu/
LocalPrefix={LocalRepository}
# Alt
# GlobalInstallDir={GlobalPrefix}lib/fpc/{CompilerVersion}/
# Neu
GlobalInstallDir={GlobalPrefix}fpc/{CompilerVersion}/
LocalInstallDir={LocalPrefix}lib/fpc/{CompilerVersion}/
Compiler=/usr/bin/fpc
OS=linux
CPU=x86_64
Version=3.2.0
So dass

Code: Alles auswählen

fppkg listsettings       
Settings from configuration-files:
 Global-section:
  RemoteMirrorsURL:      https://www.freepascal.org/repository/mirrors.xml
  RemoteRepository:      auto
  LocalRepository:       "/home/nutzer/.fppkg/" -> "/home/nutzer/.fppkg/"
  BuildDir:              "/home/nutzer/.fppkg/build/" -> "/home/nutzer/.fppkg/build/"
  ArchivesDir:           "/home/nutzer/.fppkg/archives/" -> "/home/nutzer/.fppkg/archives/"
  CompilerConfigDir:     "/home/nutzer/.fppkg/config/" -> "/home/nutzer/.fppkg/config/"
  DefaultCompilerConfig: "default"
  FPMakeCompilerConfig:  "default"
  Downloader:            FPC
 Commandline-section:
Using compiler configuration file "/home/nutzer/.fppkg/config/default":
 Compiler:         "/usr/bin/fpc"
 Target:           x86_64-linux
 Version:          3.2.0
 GlobalPrefix:     "/usr/lib/x86_64-linux-gnu/" -> "/usr/lib/x86_64-linux-gnu/"
 LocalPrefix:      "{LocalRepository}" -> "/home/nutzer/.fppkg/"
 GlobalInstallDir: "{GlobalPrefix}fpc/{CompilerVersion}/" -> "/usr/lib/x86_64-linux-gnu/fpc/3.2.0/"
 LocalInstallDir:  "{LocalPrefix}lib/fpc/{CompilerVersion}/" -> "/home/nutzer/.fppkg/lib/fpc/3.2.0/"
 Options:          ""
Using fpmake-building compiler configuration file "/home/nutzer/.fppkg/config/default":
 Compiler:         "/usr/bin/fpc"
 Target:           x86_64-linux
 Version:          3.2.0
 GlobalPrefix:     "/usr/lib/x86_64-linux-gnu/" -> "/usr/lib/x86_64-linux-gnu/"
 LocalPrefix:      "{LocalRepository}" -> "/home/nutzer/.fppkg/"
 GlobalInstallDir: "{GlobalPrefix}fpc/{CompilerVersion}/" -> "/usr/lib/x86_64-linux-gnu/fpc/3.2.0/"
 LocalInstallDir:  "{LocalPrefix}lib/fpc/{CompilerVersion}/" -> "/home/nutzer/.fppkg/lib/fpc/3.2.0/"
 Options:          ""
Wenigstens etwas brauchbares anzeigt.
Aber

Code: Alles auswählen

fppkg list               
Name                 Installed      Available     
a52                  -              3.2           
ami-extra            -              3.2           
amunits              -              3.2           
arosunits            -              3.2           
aspell               -              3.2          
....usw.
Zeigt immer noch an, dass die units scheinbar nicht installiert sind. Die Version müsste direkt unter Installed angegeben werden.
So steht es zumindest hier beschrieben:
https://wiki.freepascal.org/Lazarus_Can ... _by_fcllaz

Und wenn ich das in der Free Pascal IDE fp versuche zu compilieren, meldet er natürlich immer noch den Fehler, dass er die unit nicht finden kann.

Meine letzten Erlebnisse mit Pascal waren mit Turbo Pascal unter DOS, FreePascal probiere ich daher heute zum ersten Mal aus und auf die Schnelle habe ich jetzt für das obige Problem auch keine Lösung mehr gefunden.

Wer kann hier helfen und sagen warum das nicht wie erwartet funktioniert.

Und es ist echt schade, das so etwas schon by default Seitens Debian broken ist. Das darf eigentlich nicht sein.
Man kann zu Recht erwarten, dass für FreePascal durch die Debian Pakete eine funktionierende globale Konfiguration angelegt wird, so dass man mit dem eigentlichen Programmieren gleich loslegen kann, aber das ist hier wohl nicht geschehen.
Und der Default Konfigurationsort /usr/local/ ist für distributionsspezifische Pakete meines Wissens nach eigentlich ohnehin falsch.


Und was mir an der obigen Default Config auch noch negativ aufstößt ist folgende Konfiguration:

Code: Alles auswählen

  RemoteRepository:      auto
  Downloader:            FPC
Warum muss das Debian Paket von Free Pascal defaultmäßig so eingerichtet sein, dass es scheinbar Code aus dem Netz nachladen kann? Oder wofür sollen diese beiden Einträge da sein?
Ich hätte jetzt erwartet, dass so etwas erst einmal nicht erlaubt ist. Das muss ich also auch noch ändern, aber das scheint wohl nicht in
~/.fppkg/config/default eingestellt zu werden.

In /etc/fpc.conf habe ich dazu aber auch nichts gefunden. Interessanterweise stimmen da aber wenigstens die Pfadangaben, nur werden die scheinbar von fp und fpc gekonnt ignoriert.

TuxPeter
Beiträge: 2016
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Free Pascal findet unit Dateien nicht

Beitrag von TuxPeter » 07.06.2022 08:40:54

Hi,
habe jetzt nicht ganz verstanden, was Du gemacht hast, aber da ich sowieso fpc mal auf meinem Schleppi (bullseye, aktueller update-Stand) haben wollte, (und mich noch nie um irgendwelche Änderungen von Pascal-Config-Files kümmern musste) hier mein Ergebnis:
Als root apt install fpc gesagt.
Das schaufelt dir ordentlich Zeug auf die Kiste. Dann, als User:
Verzeichnis pas angelegt, ein paar Sources rein , schön mit uses crt, und, diversen, anderen, standard_units; deklariert.
Und im Verzeichnis pas dann nur gesagt:
fpc testprog.pas
Das erzeugt dir das ObjFile testprog.o sowie auch gleich das ausführbare testprog einschließlich korrekt gesetzter x-Rechte.
Das einzige, was dann noch ein ganz klein bisschen tricky ist, es gibt evtl. keinen ExecPath nach ~/pas. Deshalb starte ich die Progs immer mit ~/pas/progname.
Ich finde, dass die Standard-Konfiguration sich damit eigentlich ziemlich brauchbar erwiesen hat.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Free Pascal findet unit Dateien nicht

Beitrag von Cordess » 07.06.2022 09:25:32

TuxPeter hat geschrieben: ↑ zum Beitrag ↑
07.06.2022 08:40:54
Ich finde, dass die Standard-Konfiguration sich damit eigentlich ziemlich brauchbar erwiesen hat.
Das kann nicht sein.
Vielleicht hattest du Konfigleichen von einer alten Installation?

Bei mir ist es ein frisches Bullseye und fpc wurde hier vorher nie benutzt, daher gibt's auch keine alten Configs.


Als root

Code: Alles auswählen

apt install fpc
So habe ich es auch gemacht.

Dann fp gestartet, die PAS Datei geladen und auf F5 Ausführen geklickt. Die IDE sollte dann das Binary bauen.
Ohne fp, direkt in der cli mit fpc scheitert das compilieren ebenfalls. Ich werde mir das heute Abend nochmal genauer anschauen.

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: Free Pascal findet unit Dateien nicht

Beitrag von tobo » 07.06.2022 10:17:25

Ich kann mich an früher erinnern, da war die IDE buggy und wurde rgendwie auch nicht weiterentwickelt. Ich glaube nicht, dass sich das inzwischen geändert hat. Was die Verzeichnisausgaben etc. betrifft (fppkg list und listsettings), das sieht bei mir genauso falsch aus, hat aber keinerlei Auswirkungen auf die Funktionstüchtigkeit des Compilers (Direktaufruf auf der Konsole, nicht in der IDE).
Gerade mal getestet, IDE compiliert nicht. Dann im IDE-Menü "Options/Directories/Units" "/usr/lib/x86_64-linux-gnu/fpc/3.2.0/units/x86_64-linux/*/" gesetzt -> compiliert. Das könnte auch dein Units-Pfad sein.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Free Pascal findet unit Dateien nicht

Beitrag von Cordess » 07.06.2022 18:04:27

tobo hat geschrieben: ↑ zum Beitrag ↑
07.06.2022 10:17:25
Dann im IDE-Menü "Options/Directories/Units" "/usr/lib/x86_64-linux-gnu/fpc/3.2.0/units/x86_64-linux/*/" gesetzt -> compiliert. Das könnte auch dein Units-Pfad sein.
Danke, das war es. :THX:

Da habe ich heute morgen nicht nachgeguckt.
Es ist schade, dass die IDE die Konfiguration in ~/.fppkg/config/default und /etc/fpc.cfg
nicht auswertet.

Guckt man in den About Dialog, dann scheinen die IDE Entwickler es auch nicht so genau zu nehmen, da steht z.B.

Code: Alles auswählen

Version 1.0.12 2021/01/25
Was für eine zumindest 17 Monate alte Version spricht.
Aber weiter unten steht dann:

Code: Alles auswählen

Copyright (C) 1998-2017
Müsste das letzte Datum des Copyright hier nicht auch angepasst werden und dann zumindest 2021 dranstehen?

Nun gut, es kann natürlich sein, dass die Turbo Pascal Programmierer immer weniger werden und keiner von den jungen Leuten nachrückt und die Entwicklung deswegen stagniert.
Wenn dem so sein sollte, dann wäre aber zumindest das Compilieren aus der IDE eine umso wichtigere Funktion, denn dies bestimmt auch den Nachwuchs von Morgen.
Ebenso wäre es möglich, dass Free Pascal hauptsächlich für DOS als TP Ersatz entwickelt wurde und man daher keine Unix/Linux typischen Konfigurationsdaten auswertet. Denn wenn man es ganz genau nimmt, dann müsste das Verzeichnis von ~/.fppkg auch in die nach der XDG Base Directory Specification entsprechenden XDG-Directories verlegt werden.
https://specifications.freedesktop.org/ ... atest.html

EDIT:
Und die Hilfe zur IDE wird bei dem entsprechenden Debian Paket leider auch nicht mitgeliefert.
Das wird angezeigt, wenn man in der IDE auf "Help->Index" klickt:

Code: Alles auswählen

To keep the size of the FPC download reasonably low, the CHM help files
which are necessary for the IDE help to function, are omitted.
To geht these docs, go to ftp://ftp.freepascal.org/pub/fpc/dist/ and get doc-chm.zip
for your version. Extract the CHM files and add them to the IDE using Help|Files,
add toc.chm first.
Das ist Irgendwie schade und auch, dass man hier immer noch *.chm als Dateiformat verwendet.
Das hätte man auf ein strukturiertes einfach gehaltenes HTML umstellen können, so dass es
leicht in die IDE zu implementieren ist.
Da stellt sich dann auch die Frage, ob diese CHM Hilfe überhaupt noch aktuell ist?

Dass die IDE nicht weiterentwickelt wird, wundert mich zudem auch nicht.
Wenn man im Quellcode bspw. nach einem bestimmten Wort sucht, dann passt das Keyboardlayout nicht zur üblichen Konvention
für die Wortsuche in einem Editor.
D.h. um weiter zu suchen, muss man umständlich Das Menü Search öffnen und auf "Search again" klicken oder alternativ, <ALT> + <S> drücken und dann noch einmal ein <ALT> + <S> gefolgt von einem <ENTER> auf der Tastatur eingeben. Dann geht die Suche aber nicht einfach mit dem Wort weiter, das man bei "Search->Find" zuvor festgelegt hat, sondern es wird genau der gleiche Eintrag noch einmal angezeigt. Bei modernen Editoren würde er zum nächsten Eintrag springen, wo das Wort vorkommt.
Und wenn man letzteres erreichen will, dann muss man immer, entweder sich mit der Maus in diesem Menü durchhangeln oder immer <ALT> + <S> gefolgt von <ENTER> drücken, wobei dann das Feld "Search again" im Menü selektiert sein muss.

In modernen Editoren kann man auch Pascal Code schreiben, da ist es dann kein Wunder, wenn diese IDE kaum noch weiterentwickelt wird. Man hat sich bei dieser wohl zum Ziel gesetzt, möglichst kompatibel zur damaligen TUI IDE von Turbo Pascal zu sein. Entsprechend
dürfte auch die Menüführung und Tastaturbelegung sein. Da hätte man mit der Zeit mitgehen sollen.
Denn die integrierte Debugger Funktion ist ja durchaus hilfreich und auf Free Pascal zugeschnitten.

Vielleicht ist es aber auch einfach so, dass die meisten unter Linux oder Windows nicht mehr fp als IDE verwenden, sondern gleich die grafische IDE Lazarus.
https://www.lazarus-ide.org/
Zuletzt geändert von Cordess am 07.06.2022 18:39:28, insgesamt 1-mal geändert.

TuxPeter
Beiträge: 2016
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Free Pascal findet unit Dateien nicht

Beitrag von TuxPeter » 07.06.2022 18:32:48

Cordess hat geschrieben: ↑ zum Beitrag ↑
07.06.2022 09:25:32
TuxPeter hat geschrieben: ↑ zum Beitrag ↑
07.06.2022 08:40:54
Ich finde, dass die Standard-Konfiguration sich damit eigentlich ziemlich brauchbar erwiesen hat.
Das kann nicht sein.
Vielleicht hattest du Konfigleichen von einer alten Installation? [...]
Ist aber doch so, und nein, keine Configleichen. Nach der Installation von Bullseye vor geraumer Zeit heute morgen frisch und erstmalig das Metapaket fpc im xfce-terminal auf dem Schleppi installiert, und gleich anschließend (als User, versteht sich) konnte ich mit fpc erfolgreich compilieren. Ich sehe aber einen Unterschied - du hast zunächst mit der IDE gearbeitet. Wenn wir beide Recht haben, wäre das ja schon ein schräger Fehler.

Auf meinem Desktop-PC benutze ich Geany, nach einem Tipp vor längerer Zeit hier aus dem Forum. Auch hier laufen die Compilierung und das Programme über die IDE starten problemlos, nach Eintrag des fpc über das Menü "Kommandos zum Erstellen konfigurieren".
Falls der Wunsch besteht, kann ich ja mal nachschauen, was da eigentlich steht, aber mir scheint, das Problem ist zwischenzeitlich gelöst. Beziehungsweise eingegrenzt.

Cordess
Beiträge: 422
Registriert: 09.01.2006 00:37:22

Re: Free Pascal findet unit Dateien nicht

Beitrag von Cordess » 07.06.2022 18:45:40

TuxPeter hat geschrieben: ↑ zum Beitrag ↑
07.06.2022 18:32:48
Falls der Wunsch besteht, kann ich ja mal nachschauen, was da eigentlich steht, aber mir scheint, das Problem ist zwischenzeitlich gelöst. Beziehungsweise eingegrenzt.
Nein, brauchst du nicht. Das Problem ist jetzt gelöst. Trotzdem Danke.

Jetzt compiliert es und ich wollte es ohnehin nur mal mit altem Code ausprobieren. Ich habe nicht vor in Free Pascal jetzt irgendwas neues zu entwickeln, da nehme ich dann lieber C, C++, Python oder Java.

Ich frage mich ohnehin, ob irgendjemand, der kein altes wichtiges Projekt zu pflegen hat und trotzdem auch andere Sprachen gut kennt, noch regelmäßig Pascal nutzt.

Gefühlt erscheint es mir so, als wäre diese Programmiersprache nur noch von historischer Bedeutung und für Altprojekte.
Zumindest unter Linux und Windows. Unter DOS könnte ich mir gut vorstellen, dass da Free Pascal noch vielfach benutzt wird, wenn DOS genutzt werden sollte.

Antworten