diff --git a/python-dateutil-1.5-system-zoneinfo.patch b/python-dateutil-1.5-system-zoneinfo.patch new file mode 100644 index 0000000..08f0f8d --- /dev/null +++ b/python-dateutil-1.5-system-zoneinfo.patch @@ -0,0 +1,103 @@ +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 = False # 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"): +diff -up python-dateutil-1.5/setup.py\~ python-dateutil-1.5/setup.py +--- python-dateutil-1.5/setup.py~ 2010-01-11 10:43:22.000000000 +0100 ++++ python-dateutil-1.5/setup.py 2011-08-17 15:38:13.206304651 +0200 +@@ -15,6 +15,16 @@ TOPDIR = os.path.dirname(__file__) or ". + VERSION = re.search('__version__ = "([^"]+)"', + open(TOPDIR + "/dateutil/__init__.py").read()).group(1) + ++# XXX We would like to bind this to something like ++# --system-zoneinfo=/path/to/zoneinfo. Any way of doing this short of ++# overriding build and install commands? ++if False: ++ extra_options = dict( ++ package_data={"": ["*.tar.gz"]}, ++ ) ++else: ++ extra_options = {} ++ + + setup(name="python-dateutil", + version = VERSION, +@@ -29,7 +39,7 @@ The dateutil module provides powerful ex + datetime module, available in Python 2.3+. + """, + packages = ["dateutil", "dateutil.zoneinfo"], +- package_data={"": ["*.tar.gz"]}, + include_package_data=True, + zip_safe=False, ++ **extra_options + ) diff --git a/python-dateutil.spec b/python-dateutil.spec index 62b817a..eda2156 100644 --- a/python-dateutil.spec +++ b/python-dateutil.spec @@ -1,12 +1,13 @@ Name: python-dateutil Version: 1.5 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Powerful extensions to the standard datetime module Group: Development/Languages License: Python URL: http://labix.org/python-dateutil Source0: http://labix.org/download/%{name}/%{name}-%{version}.tar.gz +Patch0: python-dateutil-1.5-system-zoneinfo.patch BuildArch: noarch BuildRequires: python-devel,python-setuptools @@ -17,6 +18,7 @@ module available in Python 2.3+. %prep %setup -q +%patch0 -p1 iconv --from=ISO-8859-1 --to=UTF-8 NEWS > NEWS.new mv NEWS.new NEWS @@ -30,9 +32,13 @@ mv NEWS.new NEWS %files %doc example.py LICENSE NEWS README %{python_sitelib}/dateutil/ +%exclude %{python_sitelib}/dateutil/zoneinfo/zoneinfo-2010g.tar.gz %{python_sitelib}/*.egg-info %changelog +* Wed Sep 15 2011 Jef Spaleta - 1.5-2 +- Added a patch to respect systemwide tzdata. Ref bug 729786 + * Wed Jul 13 2011 Rahul Sundaram - 1.5-1 - New upstream release - Fix UTF8 encoding correctly