Kiln » TortoiseHg » TortoiseHg
Clone URL:  
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# setup.py # A distutils setup script to install TortoiseHg in Windows and Posix # environments. # # On Windows, this script is mostly used to build a stand-alone # TortoiseHg package. See installer\build.txt for details. The other # use is to report the current version of the TortoiseHg source. import time import sys import os from distutils.core import setup def setup_windows(): # Specific definitios for Windows NT-alike installations _scripts = [] _data_files = [] _packages = ['hggtk', 'hggtk.logview', 'thgutil', 'thgutil.iniparse'] extra = {} hgextmods = [] try: import py2exe except ImportError: if '--version' not in sys.argv: raise if 'py2exe' in sys.argv: # FIXME: quick hack to include installed hg extensions in py2exe binary import hgext hgextdir = os.path.dirname(hgext.__file__) hgextmods = set(["hgext." + os.path.splitext(f)[0] for f in os.listdir(hgextdir)]) _data_files = [(root, [os.path.join(root, file_) for file_ in files]) for root, dirs, files in os.walk('icons')] # add library files to support PyGtk-based dialogs/windows includes = ['dbhash', 'pango', 'atk', 'pangocairo', 'cairo', 'gobject'] # Manually include other modules py2exe can't find by itself. if 'hgext.highlight' in hgextmods: includes += ['pygments.*', 'pygments.lexers.*', 'pygments.formatters.*', 'pygments.filters.*', 'pygments.styles.*'] if 'hgext.patchbomb' in hgextmods: includes += ['email.*', 'email.mime.*'] extra['options'] = { "py2exe" : { # This is one way to ensure that hgtk can find its icons when # running in a py2exe environment. It also makes debugging easier. "skip_archive" : 1, # Don't pull in all this MFC stuff used by the makepy UI. "excludes" : "pywin,pywin.dialogs,pywin.dialogs.list", # add library files to support PyGtk-based dialogs/windows # Note: # after py2exe build, copy GTK's etc and lib directories into # the dist directory created by py2exe. # also needed is the GTK's share/themes (as dist/share/themes), # for dialogs to display in MS-Windows XP theme. "includes" : includes + list(hgextmods), "optimize" : 1 } } return _scripts, _packages, _data_files, extra def setup_posix(): # Specific definitios for Posix installations _extra = {} _scripts = ['hgtk'] _packages = ['hggtk', 'hggtk.logview', 'thgutil', 'thgutil.iniparse'] _data_files = [(os.path.join('share/pixmaps/tortoisehg', root), [os.path.join(root, file_) for file_ in files]) for root, dirs, files in os.walk('icons')] _data_files += [('lib/nautilus/extensions-2.0/python', ['contrib/nautilus-thg.py'])] return _scripts, _packages, _data_files, _extra if os.name == "nt": (scripts, packages, data_files, extra) = setup_windows() desc='Windows shell extension for Mercurial VCS' else: (scripts, packages, data_files, extra) = setup_posix() desc='TortoiseHg dialogs for Mercurial VCS' try: l = os.popen('hg -R . id -it').read().split() while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags l.pop() version = l and l[-1] or 'unknown' # latest tag or revision number if version.endswith('+'): version += time.strftime('%Y%m%d') except OSError: version = "unknown" verfile = os.path.join("thgutil", "__version__.py") if version != 'unknown' or not os.path.exists(verfile): f = file(verfile, "w") f.write('# this file is autogenerated by setup.py\n') f.write('version = "%s"\n' % version) f.close() else: import thgutil.__version__ version = thgutil.__version__.version setup(name="tortoisehg", version=version, author='TK Soh', author_email='teekaysoh@gmail.com', url='http://bitbucket.org/tortoisehg/stable/', description=desc, license='GNU GPL2', scripts=scripts, packages=packages, data_files=data_files, **extra )