[Bug 236874] [installer] The country Cyprus in timezone settings is in wrong continent.

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 27 Jul 2023 12:47:37 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236874

Pierre Pronchery <pierre@freebsdfoundation.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pierre@freebsdfoundation.or
                   |                            |g

--- Comment #2 from Pierre Pronchery <pierre@freebsdfoundation.org> ---
I have just investigated this a bit now, and found that FreeBSD is not directly
responsible for this behaviour. There is a catch and possible solution however.

First, what the installer really does is call tzsetup(8) from the installation
step `time` (as in the script in `src/bsdinstall/scripts/time`). This in turn
calls tzsetup from within the newly installed system, with chroot(8):

```sh
 33 # Select timezone
 34 chroot $BSDINSTALL_CHROOT tzsetup
```

So this bug should really be filed to tzsetup(8), where the
`src/usr.sbin/tzsetup/baseline` file effectively lists Cyprus in Asia. However,
the `baseline` file is generated from the database in
`src/contrib/zone1970.tab`, which comes from outside the project.

As it turns out, this "tz database" (https://en.wikipedia.org/wiki/Tz_database)
is a public project, and a de facto standard across most major Operating
Systems. This is where Cyprus is listed as a part of Asia:

```
CY      +3510+03322     Asia/Nicosia    most of Cyprus
CY      +3507+03357     Asia/Famagusta  Northern Cyprus
```

"Determining the boundaries between the continents is generally a matter of
geographical convention" and this is also where the corresponding Wikipedia
article situates Cyprus as well
(https://en.wikipedia.org/wiki/Boundaries_between_the_continents).

With this in mind, I can see two different ways to go about this issue.

1. As far as I can tell, you are free to ask for the decision to place Cyprus
in Asia in the tz database to be reconsidered; after all, Istanbul was placed
in Europe (as "Europe/Istanbul") according to this list. This means residents
of the Anatolian region of Türkiye have to choose their timezone under
"Europe", extending the scope of this issue to them as well.

2. Another way to look at this situation was already envisioned by the
maintainers of the tz database: listing some locations in more than one
continent (or "area" really). From the `zone1970.tab` file, one can read the
following comments:

```
# The next section contains experimental tab-separated comments for
# use by user agents like tzselect that identify continents and oceans.
[...]
# If more than one country code is affected each is listed separated
# by commas, e.g., #@IS,SH<tab>Atlantic/".  If a country code is in
# more than one continent or ocean, each is listed separated by
# commas, e.g., the second column of "#@CY,TR<tab>Asia/,Europe/".
```

And then:

```
#@CY,TR Asia/,Europe/
```

As you can see, this means both Cyprus and Türkiye should effectively be listed
in both the Asia and Europe areas. Therefore tzsetup(8) should be taught about
these special comments, and reflect them in the selection process. The
corresponding timezone will remain known as "Asia/Nicosia" or "Asia/Famagusta"
though. (That is, unless it is officially changed as per 1.)

-- 
You are receiving this mail because:
You are the assignee for the bug.