[FIX] setup.py: copying pytz timezone data into the library.zip.
- This copy-pasted from the 5.0 setup.py. lp bug: https://launchpad.net/bugs/701407 fixed bzr revid: vmt@openerp.com-20110330153316-zh440p3nrur0qbad
This commit is contained in:
@@ -248,3 +248,31 @@ setup(name = name,
|
||||
**py2exe_keywords
|
||||
)
|
||||
|
||||
if has_py2exe:
|
||||
# Sometime between pytz-2008a and pytz-2008i common_timezones started to
|
||||
# include only names of zones with a corresponding data file in zoneinfo.
|
||||
# pytz installs the zoneinfo directory tree in the same directory
|
||||
# as the pytz/__init__.py file. These data files are loaded using
|
||||
# pkg_resources.resource_stream. py2exe does not copy this to library.zip so
|
||||
# resource_stream can't find the files and common_timezones is empty when
|
||||
# read in the py2exe executable.
|
||||
# This manually copies zoneinfo into the zip. See also
|
||||
# http://code.google.com/p/googletransitdatafeed/issues/detail?id=121
|
||||
import pytz
|
||||
import zipfile
|
||||
# Make sure the layout of pytz hasn't changed
|
||||
assert (pytz.__file__.endswith('__init__.pyc') or
|
||||
pytz.__file__.endswith('__init__.py')), pytz.__file__
|
||||
zoneinfo_dir = os.path.join(os.path.dirname(pytz.__file__), 'zoneinfo')
|
||||
# '..\\Lib\\pytz\\__init__.py' -> '..\\Lib'
|
||||
disk_basedir = os.path.dirname(os.path.dirname(pytz.__file__))
|
||||
zipfile_path = os.path.join(complementary_arguments['options']['py2exe']['dist_dir'], 'library.zip')
|
||||
z = zipfile.ZipFile(zipfile_path, 'a')
|
||||
|
||||
for absdir, directories, filenames in os.walk(zoneinfo_dir):
|
||||
assert absdir.startswith(disk_basedir), (absdir, disk_basedir)
|
||||
zip_dir = absdir[len(disk_basedir):]
|
||||
for f in filenames:
|
||||
z.write(os.path.join(absdir, f), os.path.join(zip_dir, f))
|
||||
|
||||
z.close()
|
||||
|
||||
Reference in New Issue
Block a user