Autor Thema: [Astro] POSIX::tzset not implemented on this architecture at...  (Gelesen 584 mal)

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6032
  • Finger weg von der fhem.cfg
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
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25728
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #1 am: 08 Juli 2019, 16:55:45 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6032
  • Finger weg von der fhem.cfg
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #2 am: 08 Juli 2019, 17:02:45 »
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
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25728
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #3 am: 08 Juli 2019, 17:04:38 »
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25728
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://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #5 am: 08 Juli 2019, 17:38:56 »
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.
« Letzte Änderung: 08 Juli 2019, 17:58:30 von Loredo »
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

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6032
  • Finger weg von der fhem.cfg
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #6 am: 30 Oktober 2019, 10:30:36 »
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

RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline Loredo

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3753
  • ~ Challenging Innovation ~
Antw:[Astro] POSIX::tzset not implemented on this architecture at...
« Antwort #7 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.
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

 

decade-submarginal