Snap for 4781566 from b3ff82bdc7cfb2c3bd1971d3ad5d843b7424b76a to pi-release

Change-Id: I0ff392a461ce726035dfa044e64459c98fb72de5
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'])