From fda43b2554272a53d019c82b65badc294d28a250 Mon Sep 17 00:00:00 2001 From: Jon Ciesla Date: Mon, 4 Aug 2014 12:09:52 -0500 Subject: [PATCH] Add patch. --- python-dateutil-2.0-system-zoneinfo.patch | 74 +++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 python-dateutil-2.0-system-zoneinfo.patch diff --git a/python-dateutil-2.0-system-zoneinfo.patch b/python-dateutil-2.0-system-zoneinfo.patch new file mode 100644 index 0000000..04277e0 --- /dev/null +++ b/python-dateutil-2.0-system-zoneinfo.patch @@ -0,0 +1,74 @@ +diff -up python-dateutil-1.5/dateutil/zoneinfo/__init__.py\~ python-dateutil-1.5/dateutil/zoneinfo/__init__.py +--- python-dateutil-1.5/dateutil/zoneinfo/__init__.py~ 2005-12-22 19:13:50.000000000 +0100 ++++ python-dateutil-1.5/dateutil/zoneinfo/__init__.py 2011-08-17 15:24:29.019214748 +0200 +@@ -15,6 +15,7 @@ __all__ = ["setcachesize", "gettz", "reb + + CACHE = [] + CACHESIZE = 10 ++USE_SYSTEM_ZONEINFO = True # XXX configure at build time + + class tzfile(tzfile): + def __reduce__(self): +@@ -29,7 +30,8 @@ def getzoneinfofile(): + return os.path.join(os.path.dirname(__file__), entry) + return None + +-ZONEINFOFILE = getzoneinfofile() ++ZONEINFOFILE = getzoneinfofile() if USE_SYSTEM_ZONEINFO else None ++ZONEINFODIR = (os.getenv("TZDIR") or "/usr/share/zoneinfo").rstrip(os.sep) + + del getzoneinfofile + +@@ -39,22 +40,37 @@ def setcachesize(size): + del CACHE[size:] + + def gettz(name): +- tzinfo = None +- if ZONEINFOFILE: +- for cachedname, tzinfo in CACHE: +- if cachedname == name: +- break ++ for cachedname, tzinfo in CACHE: ++ if cachedname == name: ++ return tzinfo ++ ++ name_parts = name.lstrip('/').split('/') ++ for part in name_parts: ++ if part == os.path.pardir or os.path.sep in part: ++ raise ValueError('Bad path segment: %r' % part) ++ filename = os.path.join(ZONEINFODIR, *name_parts) ++ try: ++ zonefile = open(filename, "rb") ++ except: ++ tzinfo = None ++ else: ++ tzinfo = tzfile(zonefile) ++ zonefile.close() ++ ++ if tzinfo is None and ZONEINFOFILE: ++ tf = TarFile.open(ZONEINFOFILE) ++ try: ++ zonefile = tf.extractfile(name) ++ except KeyError: ++ tzinfo = None + else: +- tf = TarFile.open(ZONEINFOFILE) +- try: +- zonefile = tf.extractfile(name) +- except KeyError: +- tzinfo = None +- else: +- tzinfo = tzfile(zonefile) +- tf.close() +- CACHE.insert(0, (name, tzinfo)) +- del CACHE[CACHESIZE:] ++ tzinfo = tzfile(zonefile) ++ tf.close() ++ ++ if tzinfo is not None: ++ CACHE.insert(0, (name, tzinfo)) ++ del CACHE[CACHESIZE:] ++ + return tzinfo + + def rebuild(filename, tag=None, format="gz"):