helloSystem / hello

Desktop system for creators with a focus on simplicity, elegance, and usability. Based on FreeBSD. Less, but better!
2.31k stars 57 forks source link

Ticking the checkbox to automatically set the timezone during installation crashes Install FreeBSD.app #165

Open schusz opened 3 years ago

probonopd commented 3 years ago

Thanks @schusz. Could you run the installer from the command line and see whether you get any backtrace/error messages there?

schusz commented 3 years ago

@probonopd I could not find how to start the 'Install FreeBSD.app' from the command line. I dragged the app icon into a shell window and pressed enter. That started the app. This is probably not what you meant. So please tell me how to start the app from the command line.

In the mean time I can tell you that when I tick the checkbox and click 'Yes', the app crashes. When I tick the checkbox and click 'No', the checkbox remains ticked, and I can install to hard drive. But it doesn't seem to have any effect on the timezone setting, because the system time still does not reflect the actaul time (CET+ 1; summer time) when the installed system has rebooted. The system time is 2 hours earlier than the actual time.

probonopd commented 3 years ago

Please run in a QTerminal window (you can copy and paste this):

/Applications/Utilities/Install\ FreeBSD.app/Install\ FreeBSD

Then you should see output on the command line when the crash happens. Can you please copy & paste this here?

I suspect there is a bug which I cannot reproduce because it may happen only under certain circumstances.

schusz commented 3 years ago

@probonopd Output of /Applications/Utilities/Install\ FreeBSD.app/Install\ FreeBSD:

User has agreed to geolocate
Geolocating using https://ipapi.co/json/
Traceback (most recent call last):
  File "/Applications/Utilities/Install FreeBSD.app/Resources/freebsd-install.py", line 240, in _geolocate
    if os.path.exists("/usr/share/zoneinfo/" + data["timezone"]):
TypeError: can only concatenate str (not "NoneType") to str

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Applications/Utilities/Install FreeBSD.app/Resources/freebsd-install.py", line 960, in setTimezone
    wizard.ask_user_to_geolocate()
  File "/Applications/Utilities/Install FreeBSD.app/Resources/freebsd-install.py", line 264, in ask_user_to_geolocate
    self._geolocate()
  File "/Applications/Utilities/Install FreeBSD.app/Resources/freebsd-install.py", line 243, in _geolocate
    except urllib.error as e:
TypeError: catching classes that do not inherit from BaseException is not allowed
zsh: abort      /Applications/Utilities/Install\ FreeBSD.app/Install\ FreeBSD
probonopd commented 3 years ago

It seems that data["timezone"] is None in your case, which leads to the crash. I need to investigate why this happpens. Does https://ipapi.co/json/ return the correct timezone value for you?

probonopd commented 3 years ago

So we have a try statement but the except is wrong...

https://github.com/helloSystem/Utilities/blob/590666300e41502278d8bebbe7b38628a2beb5b2/Utilities/Install%20FreeBSD.app/Resources/freebsd-install.py#L236

catching classes that do not inherit from BaseException is not allowed

Whatever that means...

schusz commented 3 years ago

It seems that data["timezone"] is None in your case, which leads to the crash. I need to investigate why this happpens. Does https://ipapi.co/json/ return the correct timezone value for you?

{ "ip": "xxx.xxx.xxx.xxx", "version": "IPv4", "city": "Loo", "region": "Overijssel", "region_code": null, "country": "NL", "country_name": "Netherlands", "country_code": "NL", "country_code_iso3": "NLD", "country_capital": "Amsterdam", "country_tld": ".nl", "continent_code": "EU", "in_eu": true, "postal": null, "latitude": null, "longitude": null, "timezone": null, "utc_offset": null, "country_calling_code": "+31", "currency": "EUR", "currency_name": "Euro", "languages": "nl-NL,fy-NL", "country_area": 41526.0, "country_population": 17231017.0, "asn": "AS206238", "org": "Freedom Internet BV" }

probonopd commented 3 years ago

"timezone": null

Now that's quite strange, one would assume that it's not that hard for a web service to find out the timezone for the Netherlands...

schusz commented 3 years ago

@probonopd Hi, I ran the Live version of hello-0.5.0_0E208-FreeBSD-13.0-amd64.iso. The FreeBSD Installer app did not crash anymore when I checked the "Set time zone based on current location". And it found my location Europe/Amsterdam. But it does not change time, which is 6 hours too early. It's EDT time zone in stead of CEST which it should be. In the installed version I changed the time to a wrong value with terminal command sudo date 0412131627 and then tried to set the correct date and time with sudo ntpdate -v -b nl.pool.ntp.org, but that only set the date and time back to the original value in the EDT time zone.