Startup: Include-Pfade mittels FindBin ermitteln
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 8 Nov 2016 11:58:44 +0000 (12:58 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 8 Nov 2016 14:57:23 +0000 (15:57 +0100)
commitcff913a1c984f82558a7d59dec0b8b1a06c5530d
tree5b425d93cc8adc39fc01c381a3de9923916fa48e
parent7c3c6e8d70ee3c45305700eb90f020a16b1dcdd1
Startup: Include-Pfade mittels FindBin ermitteln

Neue Perl-Versionen werden das aktuelle Verzeichnis '.' aus dem
Standard-Include-Pfad @INC entfernen. Das bedeutet für uns, dass wir
nicht mehr einfach »use SL::Dispatcher;« und ähnliche Konstrukte machen
können.

Daher stellt dieser Commit all diejenigen Perl-Dateien, die als externe
Einstiegsquelle dienen, auf die Verwendung von FindBin um. Es werden
nicht nur die Verzeichnisse »modules/override« und »modules/fallback«
behandelt, sondern auch das Installationsverzeichins selber mit in @INC
aufgenommen, um für die Entfernung von '.' gewappnet zu sein.

Zusätzlich wurden die meisten Scripte so modifiziert, dass sie nicht
mehr direkt aus dem kivitendo-Installationsverzeichnis heraus aufgerufen
werden müssen sondern aus beliebigen Verzeichnissen heraus aufgerufen
werden können. Sie wechseln schlicht zu allererst das aktuelle
Verzeichnis ins kivitendo-Installationsverzeichnis.

Perl-Module, die nicht direkt Scripte sind und den Pfad zum
Installationsverzeichnis benötigen (also z.B. SL/DBUpgrade2.pm), dürfen
allerdings FindBin nicht benutzen, weil $FindBin::Bin das Verzeichnis
zum aufgerufenen Perl-Script enthält, und das kann mal dispatcher.pl
sein, mal scripts/dbupgrade2.pl. Für diese Module gibt es weiterhin
SL::System::Process->exe_dir, die das kivitendo-Installationsverzeichnis
zuverlässig ermittelt.

Leider ist es nicht möglich, nur SL::System::Process->exe_dir anstelle
von $FindBin::Bin zu nutzen, da zuerst SL::System::Process eingebunden
werden muss, und um das zu tun, muss das Installationsverzeichnis ja
bereits im Include-Pfad vorhanden sein — typical case of catch 22.
16 files changed:
SL/DBUpgrade2.pm
SL/Dispatcher.pm
SL/LxOfficeConf.pm
SL/System/Process.pm
dispatcher.fpl
dispatcher.pl
scripts/dbconnect.pl
scripts/dbupgrade2_tool.pl
scripts/find-use.pl
scripts/generate_client_js_actions.pl
scripts/installation_check.pl
scripts/locales.pl
scripts/make_docs.pl [changed mode: 0644->0755]
scripts/rose_auto_create_model.pl
scripts/task_server.pl
t/test.pl