From c5267eb283e8467dff44cfc726681c0fbfb47a69 Mon Sep 17 00:00:00 2001 From: JackDandy Date: Sun, 20 Sep 2020 08:13:39 +0100 Subject: [PATCH] =?UTF-8?q?Update=20dateutil=202.8.1=20(43b7838)=20?= =?UTF-8?q?=E2=86=92=202.8.1=20(c496b4f).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 1 + lib/dateutil/zoneinfo/rebuild.py | 34 ++++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index bbeb6bf..a1e9fc1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,7 @@ * Update attr 20.1.0.dev0 (4bd6827) to 20.2.0 (4f74fba) * Update Beautiful Soup 4.8.2 (r559) to 4.9.1 (r585) +* Update dateutil 2.8.1 (43b7838) to 2.8.1 (c496b4f) * Change add diskcache_py3 5.0.1 (9670fbb) * Change add diskcache_py2 4.1.0 (b0451e0) * Update feedparser_py3 6.0.0b3 (7e255f0) to 6.0.1 (98d189fa) diff --git a/lib/dateutil/zoneinfo/rebuild.py b/lib/dateutil/zoneinfo/rebuild.py index d43d164..73342d8 100644 --- a/lib/dateutil/zoneinfo/rebuild.py +++ b/lib/dateutil/zoneinfo/rebuild.py @@ -3,7 +3,7 @@ import os import tempfile import shutil import json -from subprocess import check_call +from subprocess import check_call, check_output from tarfile import TarFile from dateutil.zoneinfo import METADATA_FN, ZONEFILENAME @@ -23,11 +23,9 @@ def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): for name in zonegroups: tf.extract(name, tmpdir) filepaths = [os.path.join(tmpdir, n) for n in zonegroups] - try: - check_call(["zic", "-d", zonedir] + filepaths) - except OSError as e: - _print_on_nosuchfile(e) - raise + + _run_zic(zonedir, filepaths) + # write metadata file with open(os.path.join(zonedir, METADATA_FN), 'w') as f: json.dump(metadata, f, indent=4, sort_keys=True) @@ -40,6 +38,30 @@ def rebuild(filename, tag=None, format="gz", zonegroups=[], metadata=None): shutil.rmtree(tmpdir) +def _run_zic(zonedir, filepaths): + """Calls the ``zic`` compiler in a compatible way to get a "fat" binary. + + Recent versions of ``zic`` default to ``-b slim``, while older versions + don't even have the ``-b`` option (but default to "fat" binaries). The + current version of dateutil does not support Version 2+ TZif files, which + causes problems when used in conjunction with "slim" binaries, so this + function is used to ensure that we always get a "fat" binary. + """ + + try: + help_text = check_output(["zic", "--help"]) + except OSError as e: + _print_on_nosuchfile(e) + raise + + if b"-b " in help_text: + bloat_args = ["-b", "fat"] + else: + bloat_args = [] + + check_call(["zic"] + bloat_args + ["-d", zonedir] + filepaths) + + def _print_on_nosuchfile(e): """Print helpful troubleshooting message