If I understand correctly, the Calendar module knows about daylight savings time and other jumps in local time in different regions, which is has to in order to convert past moments in time between local and universal time, but it doesn't make use of the operating system for this (except to find out what the current local timezone is), only data provided with the source code (which as of 8.0.182 is from 2013).
2013?? As far as I know, Pike 8.0.182 should come with tzdata2016a.
OK, I may have made a hasty conclusion based on a date in the africa file.
Now, there is mkrules.pike, which compiles the tzdata files into a set of classes, but it apparently isn't run at build time and while I guess that one could use the generated classes directly, I can't see that they are used by Calendar.Timezone. The following comment suggests that mkrules.pike was discontinued but left in the source tree.
mkrules.pike should be run each time the tzdata files are updated.
Who's responsible? There's nothing in the source tree that runs it, neither in the makefiles nor in the packaging directory, and it's not mentioned in any documentation or FAQ. And the question remains: how are the generated files used?
// ================================================================ // this is to runtime-compile timezones // it's not very nice; based on the one-time-compilation // utility I wrote first - but that method was too slow :/ // ================================================================
Hmm... That comment is AFAIK incorrect.
Now, having the tzdata source package create a tzdata-pike package by running mkrules.pike would have created a bootstrapping problem as pike8.0-core would depend on a package that itself would be needed for to build, so perhaps it's only easier to create a package that simply installs the tzdata source files in the right location?
You could have the tzdata-pike package not depend on pike, and just have it being a noop it if pike isn't installed.
The tzdata source package would have to Build-Depend on pike8.0-core so that it can create a binary package with the compiled timezone rules. But if the tzdata sources are still needed by Pike, one could as well package them and compile them at install time.