logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
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:

Apkg/tz/data.awk17+++++++++++++++++
Apkg/tz/data.lua497+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpkg/tz/gen.lua26++++++++++++++++++--------
Dpkg/tz/tzdata.lua24------------------------
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