Tang Cheng | 1aa15ee | 2012-09-06 10:12:23 +0800 | [diff] [blame] | 1 | # -*- coding: utf-8
|
| 2 |
|
| 3 | import sys
|
| 4 | import os
|
| 5 | from zipfile import ZipFile, ZIP_DEFLATED
|
Tang Cheng | 02b9642 | 2012-12-20 14:04:04 +0800 | [diff] [blame] | 6 | import distutils.util
|
Tang Cheng | 1aa15ee | 2012-09-06 10:12:23 +0800 | [diff] [blame] | 7 |
|
| 8 |
|
Tang Cheng | 02b9642 | 2012-12-20 14:04:04 +0800 | [diff] [blame] | 9 | def get_build_path():
|
| 10 | os_name = distutils.util.get_platform()
|
| 11 | version = sys.version_info
|
| 12 | if isinstance(version, tuple):
|
| 13 | os_ver = '%d.%d' % (version[0], version[1])
|
| 14 | else:
|
| 15 | os_ver = '%d.%d' % (version.major, version.minor)
|
| 16 | return os.path.join('build', 'exe.%s-%s' % (os_name, os_ver))
|
| 17 |
|
| 18 |
|
| 19 | build_path = get_build_path()
|
Tang Cheng | 1aa15ee | 2012-09-06 10:12:23 +0800 | [diff] [blame] | 20 |
|
| 21 |
|
| 22 | def _make_zip_file(args, dirname, names):
|
| 23 | zip, build_dir, dist_version_name = args
|
| 24 | # print "build dir : %s, %s" % (build_dir, dirname)
|
| 25 | for file_name in names:
|
| 26 | full_name = os.path.join(dirname, file_name)
|
| 27 | if build_dir == dirname:
|
| 28 | arcname = os.path.join(dist_version_name, file_name)
|
| 29 | else:
|
| 30 | d = dirname[len(build_dir) + 1:]
|
| 31 | temp = os.path.join(dist_version_name, d)
|
| 32 | arcname = os.path.join(temp, file_name)
|
| 33 | zip.write(full_name, arcname)
|
| 34 | print "zip file %s to %s" % (full_name, arcname)
|
| 35 |
|
| 36 |
|
| 37 | def make_dist(name, version, dist_dir='dist'):
|
| 38 |
|
Tang Cheng | 02b9642 | 2012-12-20 14:04:04 +0800 | [diff] [blame] | 39 | dist_version_name = "%s-%s-%s" % (name, version, distutils.util.get_platform())
|
Tang Cheng | 1aa15ee | 2012-09-06 10:12:23 +0800 | [diff] [blame] | 40 | dist_name = os.path.join(dist_dir, dist_version_name + '.zip')
|
| 41 | print "Make zip file ...[%s]" % os.path.relpath(dist_name)
|
| 42 | zip_file_name = os.path.basename(dist_name)
|
| 43 | zip_file_name = os.path.join(dist_dir, zip_file_name)
|
| 44 | if not os.path.exists(dist_dir):
|
| 45 | os.mkdir(dist_dir)
|
| 46 | zip = ZipFile(zip_file_name, 'w', ZIP_DEFLATED)
|
| 47 | build_dir = os.path.realpath(build_path)
|
| 48 | os.path.walk(build_dir, _make_zip_file, (zip, build_dir, dist_version_name))
|
Tang Cheng | 02b9642 | 2012-12-20 14:04:04 +0800 | [diff] [blame] | 49 | zip.close()
|