commit: 95238ca682eadca3dd1b839b69e375d61e16af24
parent d04f5611ffb2ef6ebfe2a1f4315e7b9ce7c4b0be
Author: Michael Forney <mforney@mforney.org>
Date: Wed, 10 Jul 2019 00:52:58 -0700
tz: Specify zic outputs explicitly
Diffstat:
4 files changed, 532 insertions(+), 32 deletions(-)
diff --git a/pkg/tz/data.awk b/pkg/tz/data.awk
@@ -0,0 +1,17 @@
+BEGIN { print "return {" }
+
+FNR == 1 {
+ if (n)
+ print "\t},"
+ n = split(FILENAME, src, "/")
+ printf "\t%s={\n", src[n]
+}
+
+$1 == "Link" { printf "\t\t[\"%s\"]=\"%s\",\n", $3, $2 }
+$1 == "Zone" { printf "\t\t[\"%s\"]=false,\n", $2 }
+
+END {
+ if (n)
+ print "\t},"
+ print "}"
+}
diff --git a/pkg/tz/data.lua b/pkg/tz/data.lua
@@ -0,0 +1,497 @@
+-- 2,<cd src && awk -f ../data.awk africa antarctica asia australasia europe northamerica southamerica etcetera systemv factory
+return {
+ africa={
+ ["Africa/Algiers"]=false,
+ ["Atlantic/Cape_Verde"]=false,
+ ["Africa/Ndjamena"]=false,
+ ["Africa/Abidjan"]=false,
+ ["Africa/Bamako"]="Africa/Abidjan",
+ ["Africa/Banjul"]="Africa/Abidjan",
+ ["Africa/Conakry"]="Africa/Abidjan",
+ ["Africa/Dakar"]="Africa/Abidjan",
+ ["Africa/Freetown"]="Africa/Abidjan",
+ ["Africa/Lome"]="Africa/Abidjan",
+ ["Africa/Nouakchott"]="Africa/Abidjan",
+ ["Africa/Ouagadougou"]="Africa/Abidjan",
+ ["Atlantic/St_Helena"]="Africa/Abidjan",
+ ["Africa/Cairo"]=false,
+ ["Africa/Accra"]=false,
+ ["Africa/Bissau"]=false,
+ ["Africa/Nairobi"]=false,
+ ["Africa/Addis_Ababa"]="Africa/Nairobi",
+ ["Africa/Asmara"]="Africa/Nairobi",
+ ["Africa/Dar_es_Salaam"]="Africa/Nairobi",
+ ["Africa/Djibouti"]="Africa/Nairobi",
+ ["Africa/Kampala"]="Africa/Nairobi",
+ ["Africa/Mogadishu"]="Africa/Nairobi",
+ ["Indian/Antananarivo"]="Africa/Nairobi",
+ ["Indian/Comoro"]="Africa/Nairobi",
+ ["Indian/Mayotte"]="Africa/Nairobi",
+ ["Africa/Monrovia"]=false,
+ ["Africa/Tripoli"]=false,
+ ["Indian/Mauritius"]=false,
+ ["Africa/Casablanca"]=false,
+ ["Africa/El_Aaiun"]=false,
+ ["Africa/Maputo"]=false,
+ ["Africa/Blantyre"]="Africa/Maputo",
+ ["Africa/Bujumbura"]="Africa/Maputo",
+ ["Africa/Gaborone"]="Africa/Maputo",
+ ["Africa/Harare"]="Africa/Maputo",
+ ["Africa/Kigali"]="Africa/Maputo",
+ ["Africa/Lubumbashi"]="Africa/Maputo",
+ ["Africa/Lusaka"]="Africa/Maputo",
+ ["Africa/Windhoek"]=false,
+ ["Africa/Lagos"]=false,
+ ["Africa/Bangui"]="Africa/Lagos",
+ ["Africa/Brazzaville"]="Africa/Lagos",
+ ["Africa/Douala"]="Africa/Lagos",
+ ["Africa/Kinshasa"]="Africa/Lagos",
+ ["Africa/Libreville"]="Africa/Lagos",
+ ["Africa/Luanda"]="Africa/Lagos",
+ ["Africa/Malabo"]="Africa/Lagos",
+ ["Africa/Niamey"]="Africa/Lagos",
+ ["Africa/Porto-Novo"]="Africa/Lagos",
+ ["Indian/Reunion"]=false,
+ ["Africa/Sao_Tome"]=false,
+ ["Indian/Mahe"]=false,
+ ["Africa/Johannesburg"]=false,
+ ["Africa/Maseru"]="Africa/Johannesburg",
+ ["Africa/Mbabane"]="Africa/Johannesburg",
+ ["Africa/Khartoum"]=false,
+ ["Africa/Juba"]=false,
+ ["Africa/Tunis"]=false,
+ },
+ antarctica={
+ ["Antarctica/Casey"]=false,
+ ["Antarctica/Davis"]=false,
+ ["Antarctica/Mawson"]=false,
+ ["Indian/Kerguelen"]=false,
+ ["Antarctica/DumontDUrville"]=false,
+ ["Antarctica/Syowa"]=false,
+ ["Antarctica/Troll"]=false,
+ ["Antarctica/Vostok"]=false,
+ ["Antarctica/Rothera"]=false,
+ },
+ asia={
+ ["Asia/Kabul"]=false,
+ ["Asia/Yerevan"]=false,
+ ["Asia/Baku"]=false,
+ ["Asia/Dhaka"]=false,
+ ["Asia/Thimphu"]=false,
+ ["Indian/Chagos"]=false,
+ ["Asia/Brunei"]=false,
+ ["Asia/Yangon"]=false,
+ ["Asia/Shanghai"]=false,
+ ["Asia/Urumqi"]=false,
+ ["Asia/Hong_Kong"]=false,
+ ["Asia/Taipei"]=false,
+ ["Asia/Macau"]=false,
+ ["Asia/Nicosia"]=false,
+ ["Asia/Famagusta"]=false,
+ ["Europe/Nicosia"]="Asia/Nicosia",
+ ["Asia/Tbilisi"]=false,
+ ["Asia/Dili"]=false,
+ ["Asia/Kolkata"]=false,
+ ["Asia/Jakarta"]=false,
+ ["Asia/Pontianak"]=false,
+ ["Asia/Makassar"]=false,
+ ["Asia/Jayapura"]=false,
+ ["Asia/Tehran"]=false,
+ ["Asia/Baghdad"]=false,
+ ["Asia/Jerusalem"]=false,
+ ["Asia/Tokyo"]=false,
+ ["Asia/Amman"]=false,
+ ["Asia/Almaty"]=false,
+ ["Asia/Qyzylorda"]=false,
+ ["Asia/Qostanay"]=false,
+ ["Asia/Aqtobe"]=false,
+ ["Asia/Aqtau"]=false,
+ ["Asia/Atyrau"]=false,
+ ["Asia/Oral"]=false,
+ ["Asia/Bishkek"]=false,
+ ["Asia/Seoul"]=false,
+ ["Asia/Pyongyang"]=false,
+ ["Asia/Beirut"]=false,
+ ["Asia/Kuala_Lumpur"]=false,
+ ["Asia/Kuching"]=false,
+ ["Indian/Maldives"]=false,
+ ["Asia/Hovd"]=false,
+ ["Asia/Ulaanbaatar"]=false,
+ ["Asia/Choibalsan"]=false,
+ ["Asia/Kathmandu"]=false,
+ ["Asia/Karachi"]=false,
+ ["Asia/Gaza"]=false,
+ ["Asia/Hebron"]=false,
+ ["Asia/Manila"]=false,
+ ["Asia/Qatar"]=false,
+ ["Asia/Bahrain"]="Asia/Qatar",
+ ["Asia/Riyadh"]=false,
+ ["Asia/Aden"]="Asia/Riyadh",
+ ["Asia/Kuwait"]="Asia/Riyadh",
+ ["Asia/Singapore"]=false,
+ ["Asia/Colombo"]=false,
+ ["Asia/Damascus"]=false,
+ ["Asia/Dushanbe"]=false,
+ ["Asia/Bangkok"]=false,
+ ["Asia/Phnom_Penh"]="Asia/Bangkok",
+ ["Asia/Vientiane"]="Asia/Bangkok",
+ ["Asia/Ashgabat"]=false,
+ ["Asia/Dubai"]=false,
+ ["Asia/Muscat"]="Asia/Dubai",
+ ["Asia/Samarkand"]=false,
+ ["Asia/Tashkent"]=false,
+ ["Asia/Ho_Chi_Minh"]=false,
+ },
+ australasia={
+ ["Australia/Darwin"]=false,
+ ["Australia/Perth"]=false,
+ ["Australia/Eucla"]=false,
+ ["Australia/Brisbane"]=false,
+ ["Australia/Lindeman"]=false,
+ ["Australia/Adelaide"]=false,
+ ["Australia/Hobart"]=false,
+ ["Australia/Currie"]=false,
+ ["Australia/Melbourne"]=false,
+ ["Australia/Sydney"]=false,
+ ["Australia/Broken_Hill"]=false,
+ ["Australia/Lord_Howe"]=false,
+ ["Antarctica/Macquarie"]=false,
+ ["Indian/Christmas"]=false,
+ ["Indian/Cocos"]=false,
+ ["Pacific/Fiji"]=false,
+ ["Pacific/Gambier"]=false,
+ ["Pacific/Marquesas"]=false,
+ ["Pacific/Tahiti"]=false,
+ ["Pacific/Guam"]=false,
+ ["Pacific/Saipan"]="Pacific/Guam",
+ ["Pacific/Tarawa"]=false,
+ ["Pacific/Enderbury"]=false,
+ ["Pacific/Kiritimati"]=false,
+ ["Pacific/Majuro"]=false,
+ ["Pacific/Kwajalein"]=false,
+ ["Pacific/Chuuk"]=false,
+ ["Pacific/Pohnpei"]=false,
+ ["Pacific/Kosrae"]=false,
+ ["Pacific/Nauru"]=false,
+ ["Pacific/Noumea"]=false,
+ ["Pacific/Auckland"]=false,
+ ["Pacific/Chatham"]=false,
+ ["Antarctica/McMurdo"]="Pacific/Auckland",
+ ["Pacific/Rarotonga"]=false,
+ ["Pacific/Niue"]=false,
+ ["Pacific/Norfolk"]=false,
+ ["Pacific/Palau"]=false,
+ ["Pacific/Port_Moresby"]=false,
+ ["Pacific/Bougainville"]=false,
+ ["Pacific/Pitcairn"]=false,
+ ["Pacific/Pago_Pago"]=false,
+ ["Pacific/Midway"]="Pacific/Pago_Pago",
+ ["Pacific/Apia"]=false,
+ ["Pacific/Guadalcanal"]=false,
+ ["Pacific/Fakaofo"]=false,
+ ["Pacific/Tongatapu"]=false,
+ ["Pacific/Funafuti"]=false,
+ ["Pacific/Wake"]=false,
+ ["Pacific/Efate"]=false,
+ ["Pacific/Wallis"]=false,
+ },
+ europe={
+ ["Europe/London"]=false,
+ ["Europe/Jersey"]="Europe/London",
+ ["Europe/Guernsey"]="Europe/London",
+ ["Europe/Isle_of_Man"]="Europe/London",
+ ["Europe/Dublin"]=false,
+ ["WET"]=false,
+ ["CET"]=false,
+ ["MET"]=false,
+ ["EET"]=false,
+ ["Europe/Tirane"]=false,
+ ["Europe/Andorra"]=false,
+ ["Europe/Vienna"]=false,
+ ["Europe/Minsk"]=false,
+ ["Europe/Brussels"]=false,
+ ["Europe/Sofia"]=false,
+ ["Europe/Prague"]=false,
+ ["Europe/Copenhagen"]=false,
+ ["Atlantic/Faroe"]=false,
+ ["America/Danmarkshavn"]=false,
+ ["America/Scoresbysund"]=false,
+ ["America/Godthab"]=false,
+ ["America/Thule"]=false,
+ ["Europe/Tallinn"]=false,
+ ["Europe/Helsinki"]=false,
+ ["Europe/Mariehamn"]="Europe/Helsinki",
+ ["Europe/Paris"]=false,
+ ["Europe/Berlin"]=false,
+ ["Europe/Busingen"]="Europe/Zurich",
+ ["Europe/Gibraltar"]=false,
+ ["Europe/Athens"]=false,
+ ["Europe/Budapest"]=false,
+ ["Atlantic/Reykjavik"]=false,
+ ["Europe/Rome"]=false,
+ ["Europe/Vatican"]="Europe/Rome",
+ ["Europe/San_Marino"]="Europe/Rome",
+ ["Europe/Riga"]=false,
+ ["Europe/Vaduz"]="Europe/Zurich",
+ ["Europe/Vilnius"]=false,
+ ["Europe/Luxembourg"]=false,
+ ["Europe/Malta"]=false,
+ ["Europe/Chisinau"]=false,
+ ["Europe/Monaco"]=false,
+ ["Europe/Amsterdam"]=false,
+ ["Europe/Oslo"]=false,
+ ["Arctic/Longyearbyen"]="Europe/Oslo",
+ ["Europe/Warsaw"]=false,
+ ["Europe/Lisbon"]=false,
+ ["Atlantic/Azores"]=false,
+ ["Atlantic/Madeira"]=false,
+ ["Europe/Bucharest"]=false,
+ ["Europe/Kaliningrad"]=false,
+ ["Europe/Moscow"]=false,
+ ["Europe/Simferopol"]=false,
+ ["Europe/Astrakhan"]=false,
+ ["Europe/Volgograd"]=false,
+ ["Europe/Saratov"]=false,
+ ["Europe/Kirov"]=false,
+ ["Europe/Samara"]=false,
+ ["Europe/Ulyanovsk"]=false,
+ ["Asia/Yekaterinburg"]=false,
+ ["Asia/Omsk"]=false,
+ ["Asia/Barnaul"]=false,
+ ["Asia/Novosibirsk"]=false,
+ ["Asia/Tomsk"]=false,
+ ["Asia/Novokuznetsk"]=false,
+ ["Asia/Krasnoyarsk"]=false,
+ ["Asia/Irkutsk"]=false,
+ ["Asia/Chita"]=false,
+ ["Asia/Yakutsk"]=false,
+ ["Asia/Vladivostok"]=false,
+ ["Asia/Khandyga"]=false,
+ ["Asia/Sakhalin"]=false,
+ ["Asia/Magadan"]=false,
+ ["Asia/Srednekolymsk"]=false,
+ ["Asia/Ust-Nera"]=false,
+ ["Asia/Kamchatka"]=false,
+ ["Asia/Anadyr"]=false,
+ ["Europe/Belgrade"]=false,
+ ["Europe/Ljubljana"]="Europe/Belgrade",
+ ["Europe/Podgorica"]="Europe/Belgrade",
+ ["Europe/Sarajevo"]="Europe/Belgrade",
+ ["Europe/Skopje"]="Europe/Belgrade",
+ ["Europe/Zagreb"]="Europe/Belgrade",
+ ["Europe/Bratislava"]="Europe/Prague",
+ ["Europe/Madrid"]=false,
+ ["Africa/Ceuta"]=false,
+ ["Atlantic/Canary"]=false,
+ ["Europe/Stockholm"]=false,
+ ["Europe/Zurich"]=false,
+ ["Europe/Istanbul"]=false,
+ ["Asia/Istanbul"]="Europe/Istanbul",
+ ["Europe/Kiev"]=false,
+ ["Europe/Uzhgorod"]=false,
+ ["Europe/Zaporozhye"]=false,
+ },
+ northamerica={
+ ["EST"]=false,
+ ["MST"]=false,
+ ["HST"]=false,
+ ["EST5EDT"]=false,
+ ["CST6CDT"]=false,
+ ["MST7MDT"]=false,
+ ["PST8PDT"]=false,
+ ["America/New_York"]=false,
+ ["America/Chicago"]=false,
+ ["America/North_Dakota/Center"]=false,
+ ["America/North_Dakota/New_Salem"]=false,
+ ["America/North_Dakota/Beulah"]=false,
+ ["America/Denver"]=false,
+ ["America/Los_Angeles"]=false,
+ ["America/Juneau"]=false,
+ ["America/Sitka"]=false,
+ ["America/Metlakatla"]=false,
+ ["America/Yakutat"]=false,
+ ["America/Anchorage"]=false,
+ ["America/Nome"]=false,
+ ["America/Adak"]=false,
+ ["Pacific/Honolulu"]=false,
+ ["America/Phoenix"]=false,
+ ["America/Boise"]=false,
+ ["America/Indiana/Indianapolis"]=false,
+ ["America/Indiana/Marengo"]=false,
+ ["America/Indiana/Vincennes"]=false,
+ ["America/Indiana/Tell_City"]=false,
+ ["America/Indiana/Petersburg"]=false,
+ ["America/Indiana/Knox"]=false,
+ ["America/Indiana/Winamac"]=false,
+ ["America/Indiana/Vevay"]=false,
+ ["America/Kentucky/Louisville"]=false,
+ ["America/Kentucky/Monticello"]=false,
+ ["America/Detroit"]=false,
+ ["America/Menominee"]=false,
+ ["America/St_Johns"]=false,
+ ["America/Goose_Bay"]=false,
+ ["America/Halifax"]=false,
+ ["America/Glace_Bay"]=false,
+ ["America/Moncton"]=false,
+ ["America/Blanc-Sablon"]=false,
+ ["America/Toronto"]=false,
+ ["America/Thunder_Bay"]=false,
+ ["America/Nipigon"]=false,
+ ["America/Rainy_River"]=false,
+ ["America/Atikokan"]=false,
+ ["America/Winnipeg"]=false,
+ ["America/Regina"]=false,
+ ["America/Swift_Current"]=false,
+ ["America/Edmonton"]=false,
+ ["America/Vancouver"]=false,
+ ["America/Dawson_Creek"]=false,
+ ["America/Fort_Nelson"]=false,
+ ["America/Creston"]=false,
+ ["America/Pangnirtung"]=false,
+ ["America/Iqaluit"]=false,
+ ["America/Resolute"]=false,
+ ["America/Rankin_Inlet"]=false,
+ ["America/Cambridge_Bay"]=false,
+ ["America/Yellowknife"]=false,
+ ["America/Inuvik"]=false,
+ ["America/Whitehorse"]=false,
+ ["America/Dawson"]=false,
+ ["America/Cancun"]=false,
+ ["America/Merida"]=false,
+ ["America/Matamoros"]=false,
+ ["America/Monterrey"]=false,
+ ["America/Mexico_City"]=false,
+ ["America/Ojinaga"]=false,
+ ["America/Chihuahua"]=false,
+ ["America/Hermosillo"]=false,
+ ["America/Mazatlan"]=false,
+ ["America/Bahia_Banderas"]=false,
+ ["America/Tijuana"]=false,
+ ["America/Nassau"]=false,
+ ["America/Barbados"]=false,
+ ["America/Belize"]=false,
+ ["Atlantic/Bermuda"]=false,
+ ["America/Costa_Rica"]=false,
+ ["America/Havana"]=false,
+ ["America/Santo_Domingo"]=false,
+ ["America/El_Salvador"]=false,
+ ["America/Guatemala"]=false,
+ ["America/Port-au-Prince"]=false,
+ ["America/Tegucigalpa"]=false,
+ ["America/Jamaica"]=false,
+ ["America/Martinique"]=false,
+ ["America/Managua"]=false,
+ ["America/Panama"]=false,
+ ["America/Cayman"]="America/Panama",
+ ["America/Puerto_Rico"]=false,
+ ["America/Miquelon"]=false,
+ ["America/Grand_Turk"]=false,
+ },
+ southamerica={
+ ["America/Argentina/Buenos_Aires"]=false,
+ ["America/Argentina/Cordoba"]=false,
+ ["America/Argentina/Salta"]=false,
+ ["America/Argentina/Tucuman"]=false,
+ ["America/Argentina/La_Rioja"]=false,
+ ["America/Argentina/San_Juan"]=false,
+ ["America/Argentina/Jujuy"]=false,
+ ["America/Argentina/Catamarca"]=false,
+ ["America/Argentina/Mendoza"]=false,
+ ["America/Argentina/San_Luis"]=false,
+ ["America/Argentina/Rio_Gallegos"]=false,
+ ["America/Argentina/Ushuaia"]=false,
+ ["America/Aruba"]="America/Curacao",
+ ["America/La_Paz"]=false,
+ ["America/Noronha"]=false,
+ ["America/Belem"]=false,
+ ["America/Santarem"]=false,
+ ["America/Fortaleza"]=false,
+ ["America/Recife"]=false,
+ ["America/Araguaina"]=false,
+ ["America/Maceio"]=false,
+ ["America/Bahia"]=false,
+ ["America/Sao_Paulo"]=false,
+ ["America/Campo_Grande"]=false,
+ ["America/Cuiaba"]=false,
+ ["America/Porto_Velho"]=false,
+ ["America/Boa_Vista"]=false,
+ ["America/Manaus"]=false,
+ ["America/Eirunepe"]=false,
+ ["America/Rio_Branco"]=false,
+ ["America/Santiago"]=false,
+ ["America/Punta_Arenas"]=false,
+ ["Pacific/Easter"]=false,
+ ["Antarctica/Palmer"]=false,
+ ["America/Bogota"]=false,
+ ["America/Curacao"]=false,
+ ["America/Lower_Princes"]="America/Curacao",
+ ["America/Kralendijk"]="America/Curacao",
+ ["America/Guayaquil"]=false,
+ ["Pacific/Galapagos"]=false,
+ ["Atlantic/Stanley"]=false,
+ ["America/Cayenne"]=false,
+ ["America/Guyana"]=false,
+ ["America/Asuncion"]=false,
+ ["America/Lima"]=false,
+ ["Atlantic/South_Georgia"]=false,
+ ["America/Paramaribo"]=false,
+ ["America/Port_of_Spain"]=false,
+ ["America/Anguilla"]="America/Port_of_Spain",
+ ["America/Antigua"]="America/Port_of_Spain",
+ ["America/Dominica"]="America/Port_of_Spain",
+ ["America/Grenada"]="America/Port_of_Spain",
+ ["America/Guadeloupe"]="America/Port_of_Spain",
+ ["America/Marigot"]="America/Port_of_Spain",
+ ["America/Montserrat"]="America/Port_of_Spain",
+ ["America/St_Barthelemy"]="America/Port_of_Spain",
+ ["America/St_Kitts"]="America/Port_of_Spain",
+ ["America/St_Lucia"]="America/Port_of_Spain",
+ ["America/St_Thomas"]="America/Port_of_Spain",
+ ["America/St_Vincent"]="America/Port_of_Spain",
+ ["America/Tortola"]="America/Port_of_Spain",
+ ["America/Montevideo"]=false,
+ ["America/Caracas"]=false,
+ },
+ etcetera={
+ ["Etc/GMT"]=false,
+ ["Etc/UTC"]=false,
+ ["GMT"]="Etc/GMT",
+ ["Etc/Universal"]="Etc/UTC",
+ ["Etc/Zulu"]="Etc/UTC",
+ ["Etc/Greenwich"]="Etc/GMT",
+ ["Etc/GMT-0"]="Etc/GMT",
+ ["Etc/GMT+0"]="Etc/GMT",
+ ["Etc/GMT0"]="Etc/GMT",
+ ["Etc/GMT-14"]=false,
+ ["Etc/GMT-13"]=false,
+ ["Etc/GMT-12"]=false,
+ ["Etc/GMT-11"]=false,
+ ["Etc/GMT-10"]=false,
+ ["Etc/GMT-9"]=false,
+ ["Etc/GMT-8"]=false,
+ ["Etc/GMT-7"]=false,
+ ["Etc/GMT-6"]=false,
+ ["Etc/GMT-5"]=false,
+ ["Etc/GMT-4"]=false,
+ ["Etc/GMT-3"]=false,
+ ["Etc/GMT-2"]=false,
+ ["Etc/GMT-1"]=false,
+ ["Etc/GMT+1"]=false,
+ ["Etc/GMT+2"]=false,
+ ["Etc/GMT+3"]=false,
+ ["Etc/GMT+4"]=false,
+ ["Etc/GMT+5"]=false,
+ ["Etc/GMT+6"]=false,
+ ["Etc/GMT+7"]=false,
+ ["Etc/GMT+8"]=false,
+ ["Etc/GMT+9"]=false,
+ ["Etc/GMT+10"]=false,
+ ["Etc/GMT+11"]=false,
+ ["Etc/GMT+12"]=false,
+ },
+ systemv={
+ },
+ factory={
+ ["Factory"]=false,
+ },
+}
diff --git a/pkg/tz/gen.lua b/pkg/tz/gen.lua
@@ -7,7 +7,7 @@ exe('zic', {'zic.c'})
file('bin/zic', '755', '$outdir/zic')
man{'zic.8'}
-local tzdata = {
+local srcs = {
'africa',
'antarctica',
'asia',
@@ -19,12 +19,22 @@ local tzdata = {
'systemv',
'factory',
}
-rule('tzdata', 'lua5.2 $dir/tzdata.lua $repo $outdir/zoneinfo $in >$out.tmp && mv $out.tmp $out')
-build('tzdata', '$outdir/tzdata.index', {
- expand{'$srcdir/', tzdata},
- '|', '$dir/tzdata.lua', 'scripts/hash.sh',
- '||', '$builddir/root.stamp',
-})
-table.insert(pkg.inputs.index, '$outdir/tzdata.index')
+
+local zones = {}
+local data = load 'data.lua'
+for _, src in ipairs(srcs) do
+ for name, target in pairs(data[src]) do
+ if target then
+ target = name:gsub('[^/]+', '..'):sub(1, -3)..target
+ sym('share/zoneinfo/'..name, target)
+ else
+ file('share/zoneinfo/'..name, '644', '$outdir/zoneinfo/'..name)
+ table.insert(zones, name)
+ end
+ end
+end
+
+rule('zic', 'zic -d $outdir/zoneinfo $in')
+build('zic', expand{'$outdir/zoneinfo/', zones}, expand{'$srcdir/', srcs})
fetch 'git'
diff --git a/pkg/tz/tzdata.lua b/pkg/tz/tzdata.lua
@@ -1,24 +0,0 @@
-local function execute(cmd)
- if not os.execute(cmd) then
- error('command failed: '..cmd)
- end
-end
-
-local hash = 'sh ./scripts/hash.sh %s %s share/zoneinfo/%s %s'
-local repo = arg[1]
-local outdir = arg[2]
-for i = 3, #arg do
- execute(string.format('zic -d %s %s', outdir, arg[i]))
- for line in io.lines(arg[i]) do
- local target, name = line:match('^Link%s+(%g+)%s+(%g+)')
- if target then
- target = name:gsub('[^/]+', '..'):sub(1, -3)..target
- execute(hash:format(repo, 120000, name, target))
- else
- name = line:match('^Zone%s+(%g+)')
- if name then
- execute(hash:format(repo, 100644, name, outdir..'/'..name))
- end
- end
- end
-end