rebuild.py (1484B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dateutil\zoneinfo\rebuild.py 2 import logging 3 import os 4 import tempfile 5 import shutil 6 import json 7 from subprocess import check_call 8 from dateutil.zoneinfo import tar_open, METADATA_FN, ZONEFILENAME 9 10 def rebuild(filename, tag = None, format = 'gz', zonegroups = [], metadata = None): 11 tmpdir = tempfile.mkdtemp() 12 zonedir = os.path.join(tmpdir, 'zoneinfo') 13 moduledir = os.path.dirname(__file__) 14 try: 15 with tar_open(filename) as tf: 16 for name in zonegroups: 17 tf.extract(name, tmpdir) 18 19 filepaths = [ os.path.join(tmpdir, n) for n in zonegroups ] 20 try: 21 check_call(['zic', '-d', zonedir] + filepaths) 22 except OSError as e: 23 _print_on_nosuchfile(e) 24 raise 25 26 with open(os.path.join(zonedir, METADATA_FN), 'w') as f: 27 json.dump(metadata, f, indent=4, sort_keys=True) 28 target = os.path.join(moduledir, ZONEFILENAME) 29 with tar_open(target, 'w:%s' % format) as tf: 30 for entry in os.listdir(zonedir): 31 entrypath = os.path.join(zonedir, entry) 32 tf.add(entrypath, entry) 33 34 finally: 35 shutil.rmtree(tmpdir) 36 37 38 def _print_on_nosuchfile(e): 39 if e.errno == 2: 40 logging.error("Could not find zic. Perhaps you need to install libc-bin or some other package that provides it, or it's not in your PATH?")