NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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?")