[Astro] POSIX::tzset not implemented on this architecture at...

Begonnen von Thorsten Pferdekaemper, 08 Juli 2019, 16:53:27

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hi,
ein "define astro Astro" macht seit kurzem das hier im Log:

POSIX::tzset not implemented on this architecture at ./FHEM/95_Astro.pm line 1859.

...und das ist das letzte was FHEM dann tut.
Für mich ist das nicht wirklich schlimm, da das nur eine Wimdows-Testinstanz ist. Ich dachte aber, die Maintainer interessiert das vielleicht.
Gruß,
   Thorsten
FUIP

CoolTux

Hallo Thorsten,

Welche Perl ersion verwendest Du unter Windows?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

Hi,
das ist StrawberryPerl. "perl -v" sagt das hier:

This is perl 5, version 26, subversion 2 (v5.26.2) built for MSWin32-x64-multi-thread

Gruß,
   Thorsten
FUIP

CoolTux

Danke Dir.
Scheint aber so das es diese Funktion erst gar nicht gibt unter Windows Perl.
Weiß jemand ob es generell das POSIX unter Windows Perl gibt?
Muss da mal schauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Loredo

#5
tzset() wird aus Portabilitätsgründen explizit aufgerufen. Theoretisch ruft localtime() diese Funktion ebenfalls auf, womöglich hat localtime() bei StrawberryPerl eine spezielle Handhabung dafür.
Ich setze den Befehl mal als optional, so dass er nur ausgeführt wird, wenn er auch vorhanden ist. Entweder funktioniert die Veränderung der Zeitzone unter Windows damit oder nicht - im Zweifel bleibt es einfach bei der im System eingestellten Zeitzone, was sicherlich für die meisten auch kein Beinbruch ist. Die Funktion kommt ohnehin nur dann zum tragen, wenn man eine andere Zeitzone in FHEM konfiguriert hat oder beim Getter eine andere Zeitzone mit angeben möchte.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Thorsten Pferdekaemper

Hi,
ich bin jetzt mal wieder darüber gestolpert. Die Änderung hilft nichts, es kommt immer noch zum selben Fehler. In 95_Astro.pm findet man jetzt diese Zeile:

    tzset() if ( exists &{'tzset'} );

Das "if exists" bringt aber nichts, da die Funktion schon existiert aber halt beim Aufruf den Fehler produziert. Man müsste also entweder wirklich auf's OS abfragen oder sowas machen:

eval { tzset() };

Das mit dem eval habe ich ausprobiert.
Allerdings habe ich Hinweise darauf gefunden, dass man das tzset gar nicht mehr braucht:
Zitat
TL;DR: Starting with Perl v5.8.9 (released in 2011) calling tzset when changing $ENV{TZ} isn't needed anymore.
Das ist aus https://stackoverflow.com/questions/38276673/when-does-a-perl-script-need-to-call-tzset-before-calling-localtime

Letzteres habe ich allerdings nicht ausprobiert. Mit dem eval wäre man daher wahrscheinlich auf der sicheren Seite.

Wie vorher schon gesagt: Meine Windows-FHEM ist nur Spiel und Test. Für mich ist das also nicht wirklich wichtig.
Gruß,
   Thorsten

FUIP

Loredo

Ja, der explizite Befehl ist wie gesagt für die Kompatibilität da.
Ich habe das Eval mal in der Git Version hinzugefügt, wird dann bei Zeiten mal den Weg ins SVN finden.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Christoph Morrison

Zitat von: Loredo am 28 Dezember 2019, 15:44:05
Ja, der explizite Befehl ist wie gesagt für die Kompatibilität da.
Ich habe das Eval mal in der Git Version hinzugefügt, wird dann bei Zeiten mal den Weg ins SVN finden.

Ist das eigentlich geschehen?