Subject: bug#68411: Timezone not detected from /etc/localtime

From: Distopico <[email-masked]>
Date: Fri, 12 Jan 2024 17:41:58 -0500

Apps such as Icecat or ungoogled-chromium are not able to get the
correct timezone from /etc/localtime when `/etc/localtime` is a realpath
maybe because it expect /etc/share/zoneinfo, with readlink partially
works fine some apps, maybe related with an icu bug.[1]

I just removed manually `/etc/localtime` and crate an symlink `sudo ln
-s $TZDIR/$(cat /etc/timezone) /etc/localtime` and ungoogled-chromium
works fine.

Icecat in other hand has an additional bug related with icu[2][3]
and folder policy where `/gnu` is not allowed so in order to make it
work is necessary disable sandbox `MOZ_DISABLE_CONTENT_SANDBOX=1 icecat`
or set manually TZ env `TZ=$(cat /etc/timezone) icecat`, btw I have
`privacy.resistFingerprinting` false.

The weird thing is that in almost all of those reported the error is
the opposite where having a realpath solves it but in guix it is the
problem, perhaps it could be because these apps have updated their code
to make it work with `icu` v72 and guix has v71.

Steps to reproduce it:

- guix pull && guix package -u
- Install last icecat or ungoogled-chromium version
- Verify that you don't have $TZ set, unset it.
- If it's Icecat open `about:config` and set `privacy.resistFingerprinting` to false
- Open  https://webbrowsertools.com/timezone/ in the browser
- Check the timezone
- sudo rm -r /etc/localtime && sudo ln -s $TZDIR/$(cat /etc/timezone) /etc/localtime
- Open chromium or `MOZ_DISABLE_CONTENT_SANDBOX=1 icecat`
- Visit https://webbrowsertools.com/timezone/ again, check the timezone.

See also:
- https://github.com/NixOS/nixpkgs/issues/238025
- https://github.com/NixOS/nixpkgs/pull/238700

Footnotes:
[1]  https://github.com/unicode-org/icu/pull/2323

[2]  https://bugzilla.mozilla.org/show_bug.cgi?id=1848615

[3]  https://hg.mozilla.org/releases/mozilla-esr115/rev/d7948b142f43