Update Android to tzdata 2018e

Update ICU to tzdata 2018e.

  Briefly:

    North Korea switches back to +09 on 2018-05-05.
    The main format uses negative DST again, for Ireland etc.
    'make tarballs' now also builds a rearguard tarball.
    New 's' and 'd' suffixes in SAVE columns of Rule and Zone lines.

This change contains manual edits to countryzones.txt, the
update to input_data/iana/ files and edits to update-tzdata.py
to support the new-for-this-release rearguard tzdata format which
retains the existing "isDst == summer" logic required by various
APIs.

All other files were generated by running
system/timezone/update-tzdata.py

See the related external/icu change too.

Bug: 79222038
Test: CTS: run cts -m CtsIcuTestCases
Test: CTS: run cts -m CtsLibcoreTestCases
Test: CTS: run cts -m CtsBionicTestCases
Merged-In: Iaff40eff33fc51b30eb1aaade8d64df422640bc8
Change-Id: Iaff40eff33fc51b30eb1aaade8d64df422640bc8
(cherry picked from commit a591fb03ae2beb5c5bc8696eaf64e67cc0c73fc1)
diff --git a/input_data/android/countryzones.txt b/input_data/android/countryzones.txt
index 0d1f59d..33be426 100644
--- a/input_data/android/countryzones.txt
+++ b/input_data/android/countryzones.txt
@@ -25,7 +25,7 @@
 # a time zone for an Android device.
 
 # ianaVersion: The version of the IANA rules this file matches.
-ianaVersion:"2018d"
+ianaVersion:"2018e"
 
 # countries:
 #
@@ -1765,7 +1765,7 @@
 countries:<
   isoCode:"kp"
   timeZoneMappings:<
-    utcOffset:"8:30"
+    utcOffset:"9:00"
     id:"Asia/Pyongyang"
   >
 >
diff --git a/input_data/iana/tzdata2018d.tar.gz b/input_data/iana/tzdata2018d.tar.gz
deleted file mode 100644
index f050229..0000000
--- a/input_data/iana/tzdata2018d.tar.gz
+++ /dev/null
Binary files differ
diff --git a/input_data/iana/tzdata2018d.tar.gz.asc b/input_data/iana/tzdata2018d.tar.gz.asc
deleted file mode 100644
index b5e55f6..0000000
--- a/input_data/iana/tzdata2018d.tar.gz.asc
+++ /dev/null
@@ -1,17 +0,0 @@
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1
-
-iQIcBAABAgAGBQJas7pNAAoJEO2X6Q5iqn40BqwP/A8PU9mzxssBdQirWsuGhN3E
-+3hk6i7UFLrCHixbpN03y7r8ujkhRvkjLSrA2tcrYEK9t8NLkhQIrnmlVjEOQEcz
-+qiZWJV55kd2dhk2EE+pc8xXuqRsnId4r/xCF+D2wxl6IZpMEFelRCRiCGgszhDS
-FSv3UjlnpBv3uB5UgKdOFJKYcTvfOZ5jmpt1O6Ma9YNxqlc2+s8hUBR3VEtzancU
-+AyCoL/sUrijfGOZPSznhGJJ3lC5LkjkWqC0BYB5EI3YeClVtGWoZlD64jShJhWT
-pe3CAimaEibz1ty1tGz4Agdd0vQErvyCPQY6wy1pRYPW5wb++JomMVub7Uh7w/6o
-pvrkVaVqeiWeENoI6NRnmC+ANSaz6/lF61HM36VZ1XaCgmeCDaLHn31WKHRPctse
-r26++PyCIJwllaTNfGynjkAKUeBJJwwR8a/sjPeqEfEgoDKV1EpQVCBbPna3hmTq
-8nzt11WsTNG+aocYr3hevSYiyxEWOLp5O9UaiTtVDc91Mhk2U9E9Fa7Zva35ZhjJ
-oRPS+AU5GFfWzgiW8XOLURqvwRNqUUudNaXy2wVuzwROdmboyewzB//MBavkI+r+
-raI+coG2ZJoPcQmuRCUcjs1+JnNBL3sZT68/jTy2w0LURfUP9V+dUuJgjtRbMCtb
-Myzq3RCYNI/x3EjU/xcb
-=ibli
------END PGP SIGNATURE-----
diff --git a/input_data/iana/tzdata2018e.tar.gz b/input_data/iana/tzdata2018e.tar.gz
new file mode 100644
index 0000000..8955eea
--- /dev/null
+++ b/input_data/iana/tzdata2018e.tar.gz
Binary files differ
diff --git a/input_data/iana/tzdata2018e.tar.gz.asc b/input_data/iana/tzdata2018e.tar.gz.asc
new file mode 100644
index 0000000..1450a6b
--- /dev/null
+++ b/input_data/iana/tzdata2018e.tar.gz.asc
@@ -0,0 +1,17 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQIcBAABAgAGBQJa6V9nAAoJEO2X6Q5iqn40qYUQAI21DF4x+Qr9uhMf5UL3u/UI
+BnLTeDqc4t1oLbuuJsbtgausc/m6EIgo2j9+uadXefnguP4fwKHJ2doReuRZ3njI
+hGnqP2+yCfTRNrZYBU3p6U+/OJq8r/UBsn9aGxNStcZHe6FswnxXWlzpRNbPdNBC
+nGeYMs2HOQjcdG08BF1sjGm4FC/NS6bugNhs0EcrMLaVa+c0keRWNg9o7Y/SvrZB
+awFAMz4LhOog2qxhGWtFgSVRAAj5aEDqugOXZL27VszgGPexiAaMCFyQARIHigIw
+959D7RYmpeNuEeP6XbzGFgDO6aMbxahoUpP9cCOUI6qKShtDKnY2XkjPmVQiAfjZ
+zvpsE1dYbWyVTWqWhWL3z0lPCFN6B4eneY6UXY/KtENRl1jEafKN5/7JqKOMBSRo
+umE1Jy6qSSz5jLuz5pX59iOXWZETIlwtAW6lKe2s6l9xWPL9R8xXoPvbQRadqDxB
+uANcGZSrKD1jKuybPJa/6BZRF+FlldCkZVVKSSdXuPLF1HhohlvFZqi1WPmWvGd+
+s/1+3OhWzB4BHyrp3Wbtj+ZwCtg9UVbJLBM2bgL9nGEyv/1XSxgLJEp3rneIMpJv
+AMK8rr3XehXLDkXAfx68Mzs3F4lYEdXk6y9f9ZsVj+IdBotwzzjJWeCfnlmJM52y
+8cCrPGUjdneFidV9OZ+J
+=4LFO
+-----END PGP SIGNATURE-----
diff --git a/output_data/android/tzlookup.xml b/output_data/android/tzlookup.xml
index 9ee459d..43dfb98 100644
--- a/output_data/android/tzlookup.xml
+++ b/output_data/android/tzlookup.xml
@@ -2,7 +2,7 @@
 
  **** Autogenerated file - DO NOT EDIT ****
 
---><timezones ianaversion="2018d">
+--><timezones ianaversion="2018e">
  <countryzones>
   <country code="ad" default="Europe/Andorra" everutc="n">
    <id>Europe/Andorra</id>
diff --git a/output_data/distro/distro.zip b/output_data/distro/distro.zip
index 63ca161..c62d9a5 100644
--- a/output_data/distro/distro.zip
+++ b/output_data/distro/distro.zip
Binary files differ
diff --git a/output_data/iana/tzdata b/output_data/iana/tzdata
index 208963d..5c17a8b 100644
--- a/output_data/iana/tzdata
+++ b/output_data/iana/tzdata
Binary files differ
diff --git a/output_data/icu_overlay/icu_tzdata.dat b/output_data/icu_overlay/icu_tzdata.dat
index 753abd9..c50ba20 100644
--- a/output_data/icu_overlay/icu_tzdata.dat
+++ b/output_data/icu_overlay/icu_tzdata.dat
Binary files differ
diff --git a/testing/data/test1/output_data/distro/distro.zip b/testing/data/test1/output_data/distro/distro.zip
index 490e60e..3532844 100644
--- a/testing/data/test1/output_data/distro/distro.zip
+++ b/testing/data/test1/output_data/distro/distro.zip
Binary files differ
diff --git a/testing/data/test1/output_data/iana/tzdata b/testing/data/test1/output_data/iana/tzdata
index 2e26628..95236a9 100644
--- a/testing/data/test1/output_data/iana/tzdata
+++ b/testing/data/test1/output_data/iana/tzdata
Binary files differ
diff --git a/testing/data/test1/output_data/icu_overlay/icu_tzdata.dat b/testing/data/test1/output_data/icu_overlay/icu_tzdata.dat
index 4676bca..f156998 100644
--- a/testing/data/test1/output_data/icu_overlay/icu_tzdata.dat
+++ b/testing/data/test1/output_data/icu_overlay/icu_tzdata.dat
Binary files differ
diff --git a/testing/data/test2/output_data/distro/distro.zip b/testing/data/test2/output_data/distro/distro.zip
index 2140498..ea6b02e 100644
--- a/testing/data/test2/output_data/distro/distro.zip
+++ b/testing/data/test2/output_data/distro/distro.zip
Binary files differ
diff --git a/testing/data/test2/output_data/iana/tzdata b/testing/data/test2/output_data/iana/tzdata
index 8440af0..393191b 100644
--- a/testing/data/test2/output_data/iana/tzdata
+++ b/testing/data/test2/output_data/iana/tzdata
Binary files differ
diff --git a/testing/data/test2/output_data/icu_overlay/icu_tzdata.dat b/testing/data/test2/output_data/icu_overlay/icu_tzdata.dat
index 8db1e68..8c365bc 100644
--- a/testing/data/test2/output_data/icu_overlay/icu_tzdata.dat
+++ b/testing/data/test2/output_data/icu_overlay/icu_tzdata.dat
Binary files differ
diff --git a/update-tzdata.py b/update-tzdata.py
index 7a420e8..20986c7 100755
--- a/update-tzdata.py
+++ b/update-tzdata.py
@@ -29,11 +29,6 @@
 import icuutil
 import tzdatautil
 
-regions = ['africa', 'antarctica', 'asia', 'australasia',
-           'etcetera', 'europe', 'northamerica', 'southamerica',
-           # This deliberately comes last so it can override what came
-           # before.
-           'backward' ]
 
 # Calculate the paths that are referred to by multiple functions.
 android_build_top = i18nutil.GetAndroidRootOrDie()
@@ -53,20 +48,33 @@
 
 tmp_dir = tempfile.mkdtemp('-tzdata')
 
+def GenerateZicInputFile(extracted_iana_data_dir):
+  # Android APIs assume DST means "summer time" so we follow the rearguard format
+  # introduced in 2018e.
+  zic_input_file_name = 'rearguard.zi'
 
-def WriteSetupFile(extracted_iana_data_dir):
+  # 'NDATA=' is used to remove unnecessary rules files.
+  subprocess.check_call(['make', '-C', extracted_iana_data_dir, 'NDATA=', zic_input_file_name])
+
+  zic_input_file = '%s/%s' % (extracted_iana_data_dir, zic_input_file_name)
+  if not os.path.exists(zic_input_file):
+    print 'Could not find %s' % zic_input_file
+    sys.exit(1)
+  return zic_input_file
+
+
+def WriteSetupFile(zic_input_file):
   """Writes the list of zones that ZoneCompactor should process."""
   links = []
   zones = []
-  for region in regions:
-    for line in open('%s/%s' % (extracted_iana_data_dir, region)):
-      fields = line.split()
-      if fields:
-        if fields[0] == 'Link':
-          links.append('%s %s %s' % (fields[0], fields[1], fields[2]))
-          zones.append(fields[2])
-        elif fields[0] == 'Zone':
-          zones.append(fields[1])
+  for line in open(zic_input_file):
+    fields = line.split()
+    if fields:
+      if fields[0] == 'Link':
+        links.append('%s %s %s' % (fields[0], fields[1], fields[2]))
+        zones.append(fields[2])
+      elif fields[0] == 'Zone':
+        zones.append(fields[1])
   zones.sort()
 
   zone_compactor_setup_file = '%s/setup' % tmp_dir
@@ -128,23 +136,23 @@
 
   zic_binary_file = '%s/zic' % zic_build_dir
   if not os.path.exists(zic_binary_file):
-    print 'Could not find %s' %s
-    system.exit(1)
+    print 'Could not find %s' % zic_binary_file
+    sys.exit(1)
   return zic_binary_file
 
 
 def BuildTzdata(zic_binary_file, extracted_iana_data_dir, iana_data_version):
+  print 'Generating zic input file...'
+  zic_input_file = GenerateZicInputFile(extracted_iana_data_dir)
+
   print 'Calling zic...'
   zic_output_dir = '%s/data' % tmp_dir
   os.mkdir(zic_output_dir)
-  zic_generator_template = '%s/%%s' % extracted_iana_data_dir
-  zic_inputs = [zic_generator_template % x for x in regions]
-  zic_cmd = [zic_binary_file, '-d', zic_output_dir]
-  zic_cmd.extend(zic_inputs)
+  zic_cmd = [zic_binary_file, '-d', zic_output_dir, zic_input_file]
   subprocess.check_call(zic_cmd)
 
   # ZoneCompactor
-  zone_compactor_setup_file = WriteSetupFile(extracted_iana_data_dir)
+  zone_compactor_setup_file = WriteSetupFile(zic_input_file)
 
   print 'Calling ZoneCompactor to update tzdata to %s...' % iana_data_version
   subprocess.check_call(['make', '-C', android_build_top, '-j30', 'zone_compactor'])