##// END OF EJS Templates
setup: install translation files as package data...
Dan Villiom Podlaski Christiansen -
r9999:f91e5630 default
parent child Browse files
Show More
1 NO CONTENT: file renamed from help/config.txt to mercurial/help/config.txt
1 NO CONTENT: file renamed from help/dates.txt to mercurial/help/dates.txt
1 NO CONTENT: file renamed from help/diffs.txt to mercurial/help/diffs.txt
1 NO CONTENT: file renamed from help/environment.txt to mercurial/help/environment.txt
1 NO CONTENT: file renamed from help/extensions.txt to mercurial/help/extensions.txt
1 NO CONTENT: file renamed from help/multirevs.txt to mercurial/help/multirevs.txt
1 NO CONTENT: file renamed from help/patterns.txt to mercurial/help/patterns.txt
1 NO CONTENT: file renamed from help/revisions.txt to mercurial/help/revisions.txt
1 NO CONTENT: file renamed from help/templates.txt to mercurial/help/templates.txt
1 NO CONTENT: file renamed from help/urls.txt to mercurial/help/urls.txt
1 NO CONTENT: file renamed from templates/atom/changelog.tmpl to mercurial/templates/atom/changelog.tmpl
1 NO CONTENT: file renamed from templates/atom/changelogentry.tmpl to mercurial/templates/atom/changelogentry.tmpl
1 NO CONTENT: file renamed from templates/atom/error.tmpl to mercurial/templates/atom/error.tmpl
1 NO CONTENT: file renamed from templates/atom/filelog.tmpl to mercurial/templates/atom/filelog.tmpl
1 NO CONTENT: file renamed from templates/atom/header.tmpl to mercurial/templates/atom/header.tmpl
1 NO CONTENT: file renamed from templates/atom/map to mercurial/templates/atom/map
1 NO CONTENT: file renamed from templates/atom/tagentry.tmpl to mercurial/templates/atom/tagentry.tmpl
1 NO CONTENT: file renamed from templates/atom/tags.tmpl to mercurial/templates/atom/tags.tmpl
1 NO CONTENT: file renamed from templates/coal/header.tmpl to mercurial/templates/coal/header.tmpl
1 NO CONTENT: file renamed from templates/coal/map to mercurial/templates/coal/map
1 NO CONTENT: file renamed from templates/gitweb/branches.tmpl to mercurial/templates/gitweb/branches.tmpl
1 NO CONTENT: file renamed from templates/gitweb/changelog.tmpl to mercurial/templates/gitweb/changelog.tmpl
1 NO CONTENT: file renamed from templates/gitweb/changelogentry.tmpl to mercurial/templates/gitweb/changelogentry.tmpl
1 NO CONTENT: file renamed from templates/gitweb/changeset.tmpl to mercurial/templates/gitweb/changeset.tmpl
1 NO CONTENT: file renamed from templates/gitweb/error.tmpl to mercurial/templates/gitweb/error.tmpl
1 NO CONTENT: file renamed from templates/gitweb/fileannotate.tmpl to mercurial/templates/gitweb/fileannotate.tmpl
1 NO CONTENT: file renamed from templates/gitweb/filediff.tmpl to mercurial/templates/gitweb/filediff.tmpl
1 NO CONTENT: file renamed from templates/gitweb/filelog.tmpl to mercurial/templates/gitweb/filelog.tmpl
1 NO CONTENT: file renamed from templates/gitweb/filerevision.tmpl to mercurial/templates/gitweb/filerevision.tmpl
1 NO CONTENT: file renamed from templates/gitweb/footer.tmpl to mercurial/templates/gitweb/footer.tmpl
1 NO CONTENT: file renamed from templates/gitweb/graph.tmpl to mercurial/templates/gitweb/graph.tmpl
1 NO CONTENT: file renamed from templates/gitweb/header.tmpl to mercurial/templates/gitweb/header.tmpl
1 NO CONTENT: file renamed from templates/gitweb/index.tmpl to mercurial/templates/gitweb/index.tmpl
1 NO CONTENT: file renamed from templates/gitweb/manifest.tmpl to mercurial/templates/gitweb/manifest.tmpl
1 NO CONTENT: file renamed from templates/gitweb/map to mercurial/templates/gitweb/map
1 NO CONTENT: file renamed from templates/gitweb/notfound.tmpl to mercurial/templates/gitweb/notfound.tmpl
1 NO CONTENT: file renamed from templates/gitweb/search.tmpl to mercurial/templates/gitweb/search.tmpl
1 NO CONTENT: file renamed from templates/gitweb/shortlog.tmpl to mercurial/templates/gitweb/shortlog.tmpl
1 NO CONTENT: file renamed from templates/gitweb/summary.tmpl to mercurial/templates/gitweb/summary.tmpl
1 NO CONTENT: file renamed from templates/gitweb/tags.tmpl to mercurial/templates/gitweb/tags.tmpl
1 NO CONTENT: file renamed from templates/map-cmdline.changelog to mercurial/templates/map-cmdline.changelog
1 NO CONTENT: file renamed from templates/map-cmdline.compact to mercurial/templates/map-cmdline.compact
1 NO CONTENT: file renamed from templates/map-cmdline.default to mercurial/templates/map-cmdline.default
1 NO CONTENT: file renamed from templates/monoblue/branches.tmpl to mercurial/templates/monoblue/branches.tmpl
1 NO CONTENT: file renamed from templates/monoblue/changelog.tmpl to mercurial/templates/monoblue/changelog.tmpl
1 NO CONTENT: file renamed from templates/monoblue/changelogentry.tmpl to mercurial/templates/monoblue/changelogentry.tmpl
1 NO CONTENT: file renamed from templates/monoblue/changeset.tmpl to mercurial/templates/monoblue/changeset.tmpl
1 NO CONTENT: file renamed from templates/monoblue/error.tmpl to mercurial/templates/monoblue/error.tmpl
1 NO CONTENT: file renamed from templates/monoblue/fileannotate.tmpl to mercurial/templates/monoblue/fileannotate.tmpl
1 NO CONTENT: file renamed from templates/monoblue/filediff.tmpl to mercurial/templates/monoblue/filediff.tmpl
1 NO CONTENT: file renamed from templates/monoblue/filelog.tmpl to mercurial/templates/monoblue/filelog.tmpl
1 NO CONTENT: file renamed from templates/monoblue/filerevision.tmpl to mercurial/templates/monoblue/filerevision.tmpl
1 NO CONTENT: file renamed from templates/monoblue/footer.tmpl to mercurial/templates/monoblue/footer.tmpl
1 NO CONTENT: file renamed from templates/monoblue/graph.tmpl to mercurial/templates/monoblue/graph.tmpl
1 NO CONTENT: file renamed from templates/monoblue/header.tmpl to mercurial/templates/monoblue/header.tmpl
1 NO CONTENT: file renamed from templates/monoblue/index.tmpl to mercurial/templates/monoblue/index.tmpl
1 NO CONTENT: file renamed from templates/monoblue/manifest.tmpl to mercurial/templates/monoblue/manifest.tmpl
1 NO CONTENT: file renamed from templates/monoblue/map to mercurial/templates/monoblue/map
1 NO CONTENT: file renamed from templates/monoblue/notfound.tmpl to mercurial/templates/monoblue/notfound.tmpl
1 NO CONTENT: file renamed from templates/monoblue/search.tmpl to mercurial/templates/monoblue/search.tmpl
1 NO CONTENT: file renamed from templates/monoblue/shortlog.tmpl to mercurial/templates/monoblue/shortlog.tmpl
1 NO CONTENT: file renamed from templates/monoblue/summary.tmpl to mercurial/templates/monoblue/summary.tmpl
1 NO CONTENT: file renamed from templates/monoblue/tags.tmpl to mercurial/templates/monoblue/tags.tmpl
1 NO CONTENT: file renamed from templates/paper/branches.tmpl to mercurial/templates/paper/branches.tmpl
1 NO CONTENT: file renamed from templates/paper/changeset.tmpl to mercurial/templates/paper/changeset.tmpl
1 NO CONTENT: file renamed from templates/paper/error.tmpl to mercurial/templates/paper/error.tmpl
1 NO CONTENT: file renamed from templates/paper/fileannotate.tmpl to mercurial/templates/paper/fileannotate.tmpl
1 NO CONTENT: file renamed from templates/paper/filediff.tmpl to mercurial/templates/paper/filediff.tmpl
1 NO CONTENT: file renamed from templates/paper/filelog.tmpl to mercurial/templates/paper/filelog.tmpl
1 NO CONTENT: file renamed from templates/paper/filelogentry.tmpl to mercurial/templates/paper/filelogentry.tmpl
1 NO CONTENT: file renamed from templates/paper/filerevision.tmpl to mercurial/templates/paper/filerevision.tmpl
1 NO CONTENT: file renamed from templates/paper/footer.tmpl to mercurial/templates/paper/footer.tmpl
1 NO CONTENT: file renamed from templates/paper/graph.tmpl to mercurial/templates/paper/graph.tmpl
1 NO CONTENT: file renamed from templates/paper/header.tmpl to mercurial/templates/paper/header.tmpl
1 NO CONTENT: file renamed from templates/paper/index.tmpl to mercurial/templates/paper/index.tmpl
1 NO CONTENT: file renamed from templates/paper/manifest.tmpl to mercurial/templates/paper/manifest.tmpl
1 NO CONTENT: file renamed from templates/paper/map to mercurial/templates/paper/map
1 NO CONTENT: file renamed from templates/paper/notfound.tmpl to mercurial/templates/paper/notfound.tmpl
1 NO CONTENT: file renamed from templates/paper/search.tmpl to mercurial/templates/paper/search.tmpl
1 NO CONTENT: file renamed from templates/paper/shortlog.tmpl to mercurial/templates/paper/shortlog.tmpl
1 NO CONTENT: file renamed from templates/paper/shortlogentry.tmpl to mercurial/templates/paper/shortlogentry.tmpl
1 NO CONTENT: file renamed from templates/paper/tags.tmpl to mercurial/templates/paper/tags.tmpl
1 NO CONTENT: file renamed from templates/raw/changeset.tmpl to mercurial/templates/raw/changeset.tmpl
1 NO CONTENT: file renamed from templates/raw/error.tmpl to mercurial/templates/raw/error.tmpl
1 NO CONTENT: file renamed from templates/raw/fileannotate.tmpl to mercurial/templates/raw/fileannotate.tmpl
1 NO CONTENT: file renamed from templates/raw/filediff.tmpl to mercurial/templates/raw/filediff.tmpl
1 NO CONTENT: file renamed from templates/raw/index.tmpl to mercurial/templates/raw/index.tmpl
1 NO CONTENT: file renamed from templates/raw/manifest.tmpl to mercurial/templates/raw/manifest.tmpl
1 NO CONTENT: file renamed from templates/raw/map to mercurial/templates/raw/map
1 NO CONTENT: file renamed from templates/raw/notfound.tmpl to mercurial/templates/raw/notfound.tmpl
1 NO CONTENT: file renamed from templates/rss/changelog.tmpl to mercurial/templates/rss/changelog.tmpl
1 NO CONTENT: file renamed from templates/rss/changelogentry.tmpl to mercurial/templates/rss/changelogentry.tmpl
1 NO CONTENT: file renamed from templates/rss/error.tmpl to mercurial/templates/rss/error.tmpl
1 NO CONTENT: file renamed from templates/rss/filelog.tmpl to mercurial/templates/rss/filelog.tmpl
1 NO CONTENT: file renamed from templates/rss/filelogentry.tmpl to mercurial/templates/rss/filelogentry.tmpl
1 NO CONTENT: file renamed from templates/rss/header.tmpl to mercurial/templates/rss/header.tmpl
1 NO CONTENT: file renamed from templates/rss/map to mercurial/templates/rss/map
1 NO CONTENT: file renamed from templates/rss/tagentry.tmpl to mercurial/templates/rss/tagentry.tmpl
1 NO CONTENT: file renamed from templates/rss/tags.tmpl to mercurial/templates/rss/tags.tmpl
1 NO CONTENT: file renamed from templates/spartan/branches.tmpl to mercurial/templates/spartan/branches.tmpl
1 NO CONTENT: file renamed from templates/spartan/changelog.tmpl to mercurial/templates/spartan/changelog.tmpl
1 NO CONTENT: file renamed from templates/spartan/changelogentry.tmpl to mercurial/templates/spartan/changelogentry.tmpl
1 NO CONTENT: file renamed from templates/spartan/changeset.tmpl to mercurial/templates/spartan/changeset.tmpl
1 NO CONTENT: file renamed from templates/spartan/error.tmpl to mercurial/templates/spartan/error.tmpl
1 NO CONTENT: file renamed from templates/spartan/fileannotate.tmpl to mercurial/templates/spartan/fileannotate.tmpl
1 NO CONTENT: file renamed from templates/spartan/filediff.tmpl to mercurial/templates/spartan/filediff.tmpl
1 NO CONTENT: file renamed from templates/spartan/filelog.tmpl to mercurial/templates/spartan/filelog.tmpl
1 NO CONTENT: file renamed from templates/spartan/filelogentry.tmpl to mercurial/templates/spartan/filelogentry.tmpl
1 NO CONTENT: file renamed from templates/spartan/filerevision.tmpl to mercurial/templates/spartan/filerevision.tmpl
1 NO CONTENT: file renamed from templates/spartan/footer.tmpl to mercurial/templates/spartan/footer.tmpl
1 NO CONTENT: file renamed from templates/spartan/graph.tmpl to mercurial/templates/spartan/graph.tmpl
1 NO CONTENT: file renamed from templates/spartan/header.tmpl to mercurial/templates/spartan/header.tmpl
1 NO CONTENT: file renamed from templates/spartan/index.tmpl to mercurial/templates/spartan/index.tmpl
1 NO CONTENT: file renamed from templates/spartan/manifest.tmpl to mercurial/templates/spartan/manifest.tmpl
1 NO CONTENT: file renamed from templates/spartan/map to mercurial/templates/spartan/map
1 NO CONTENT: file renamed from templates/spartan/notfound.tmpl to mercurial/templates/spartan/notfound.tmpl
1 NO CONTENT: file renamed from templates/spartan/search.tmpl to mercurial/templates/spartan/search.tmpl
1 NO CONTENT: file renamed from templates/spartan/shortlog.tmpl to mercurial/templates/spartan/shortlog.tmpl
1 NO CONTENT: file renamed from templates/spartan/shortlogentry.tmpl to mercurial/templates/spartan/shortlogentry.tmpl
1 NO CONTENT: file renamed from templates/spartan/tags.tmpl to mercurial/templates/spartan/tags.tmpl
1 NO CONTENT: file renamed from templates/static/background.png to mercurial/templates/static/background.png
1 NO CONTENT: file renamed from templates/static/coal-file.png to mercurial/templates/static/coal-file.png
1 NO CONTENT: file renamed from templates/static/coal-folder.png to mercurial/templates/static/coal-folder.png
1 NO CONTENT: file renamed from templates/static/excanvas.js to mercurial/templates/static/excanvas.js
1 NO CONTENT: file renamed from templates/static/graph.js to mercurial/templates/static/graph.js
1 NO CONTENT: file renamed from templates/static/hgicon.png to mercurial/templates/static/hgicon.png
1 NO CONTENT: file renamed from templates/static/hglogo.png to mercurial/templates/static/hglogo.png
1 NO CONTENT: file renamed from templates/static/style-coal.css to mercurial/templates/static/style-coal.css
1 NO CONTENT: file renamed from templates/static/style-gitweb.css to mercurial/templates/static/style-gitweb.css
1 NO CONTENT: file renamed from templates/static/style-monoblue.css to mercurial/templates/static/style-monoblue.css
1 NO CONTENT: file renamed from templates/static/style-paper.css to mercurial/templates/static/style-paper.css
1 NO CONTENT: file renamed from templates/static/style.css to mercurial/templates/static/style.css
1 NO CONTENT: file renamed from templates/template-vars.txt to mercurial/templates/template-vars.txt
@@ -1,283 +1,286 b''
1 1 #!/usr/bin/env python
2 2 #
3 3 # This is the mercurial setup script.
4 4 #
5 5 # 'python setup.py install', or
6 6 # 'python setup.py --help' for more options
7 7
8 8 import sys
9 9 if not hasattr(sys, 'version_info') or sys.version_info < (2, 4, 0, 'final'):
10 10 raise SystemExit("Mercurial requires Python 2.4 or later.")
11 11
12 12 # Solaris Python packaging brain damage
13 13 try:
14 14 import hashlib
15 15 sha = hashlib.sha1()
16 16 except:
17 17 try:
18 18 import sha
19 19 except:
20 20 raise SystemExit(
21 21 "Couldn't import standard hashlib (incomplete Python install).")
22 22
23 23 try:
24 24 import zlib
25 25 except:
26 26 raise SystemExit(
27 27 "Couldn't import standard zlib (incomplete Python install).")
28 28
29 29 import os, subprocess, time
30 30 import shutil
31 31 import tempfile
32 32 from distutils.core import setup, Extension
33 33 from distutils.dist import Distribution
34 34 from distutils.command.install_data import install_data
35 35 from distutils.command.build import build
36 36 from distutils.command.build_py import build_py
37 37 from distutils.spawn import spawn, find_executable
38 38 from distutils.ccompiler import new_compiler
39 39
40 40 extra = {}
41 41 scripts = ['hg']
42 42 if os.name == 'nt':
43 43 scripts.append('contrib/win32/hg.bat')
44 44
45 45 # simplified version of distutils.ccompiler.CCompiler.has_function
46 46 # that actually removes its temporary files.
47 47 def has_function(cc, funcname):
48 48 tmpdir = tempfile.mkdtemp(prefix='hg-install-')
49 49 devnull = oldstderr = None
50 50 try:
51 51 try:
52 52 fname = os.path.join(tmpdir, 'funcname.c')
53 53 f = open(fname, 'w')
54 54 f.write('int main(void) {\n')
55 55 f.write(' %s();\n' % funcname)
56 56 f.write('}\n')
57 57 f.close()
58 58 # Redirect stderr to /dev/null to hide any error messages
59 59 # from the compiler.
60 60 # This will have to be changed if we ever have to check
61 61 # for a function on Windows.
62 62 devnull = open('/dev/null', 'w')
63 63 oldstderr = os.dup(sys.stderr.fileno())
64 64 os.dup2(devnull.fileno(), sys.stderr.fileno())
65 65 objects = cc.compile([fname], output_dir=tmpdir)
66 66 cc.link_executable(objects, os.path.join(tmpdir, "a.out"))
67 67 except:
68 68 return False
69 69 return True
70 70 finally:
71 71 if oldstderr is not None:
72 72 os.dup2(oldstderr, sys.stderr.fileno())
73 73 if devnull is not None:
74 74 devnull.close()
75 75 shutil.rmtree(tmpdir)
76 76
77 77 # py2exe needs to be installed to work
78 78 try:
79 79 import py2exe
80 80
81 81 # Help py2exe to find win32com.shell
82 82 try:
83 83 import modulefinder
84 84 import win32com
85 85 for p in win32com.__path__[1:]: # Take the path to win32comext
86 86 modulefinder.AddPackagePath("win32com", p)
87 87 pn = "win32com.shell"
88 88 __import__(pn)
89 89 m = sys.modules[pn]
90 90 for p in m.__path__[1:]:
91 91 modulefinder.AddPackagePath(pn, p)
92 92 except ImportError:
93 93 pass
94 94
95 95 extra['console'] = ['hg']
96 96
97 97 except ImportError:
98 98 pass
99 99
100 100 def runcmd(cmd, env):
101 101 p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
102 102 stderr=subprocess.PIPE, env=env)
103 103 out, err = p.communicate()
104 104 # If root is executing setup.py, but the repository is owned by
105 105 # another user (as in "sudo python setup.py install") we will get
106 106 # trust warnings since the .hg/hgrc file is untrusted. That is
107 107 # fine, we don't want to load it anyway.
108 108 err = [e for e in err.splitlines()
109 109 if not e.startswith('Not trusting file')]
110 110 if err:
111 111 return ''
112 112 return out
113 113
114 114 version = ''
115 115
116 116 if os.path.isdir('.hg'):
117 117 # Execute hg out of this directory with a custom environment which
118 118 # includes the pure Python modules in mercurial/pure. We also take
119 119 # care to not use any hgrc files and do no localization.
120 120 pypath = ['mercurial', os.path.join('mercurial', 'pure')]
121 121 env = {'PYTHONPATH': os.pathsep.join(pypath),
122 122 'HGRCPATH': '',
123 123 'LANGUAGE': 'C'}
124 124 if 'LD_LIBRARY_PATH' in os.environ:
125 125 env['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH']
126 126 if 'SystemRoot' in os.environ:
127 127 # Copy SystemRoot into the custom environment for Python 2.6
128 128 # under Windows. Otherwise, the subprocess will fail with
129 129 # error 0xc0150004. See: http://bugs.python.org/issue3440
130 130 env['SystemRoot'] = os.environ['SystemRoot']
131 131 cmd = [sys.executable, 'hg', 'id', '-i', '-t']
132 132 l = runcmd(cmd, env).split()
133 133 while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags
134 134 l.pop()
135 135 if len(l) > 1: # tag found
136 136 version = l[-1]
137 137 if l[0].endswith('+'): # propagate the dirty status to the tag
138 138 version += '+'
139 139 elif len(l) == 1: # no tag found
140 140 cmd = [sys.executable, 'hg', 'parents', '--template',
141 141 '{latesttag}+{latesttagdistance}-']
142 142 version = runcmd(cmd, env) + l[0]
143 143 if version.endswith('+'):
144 144 version += time.strftime('%Y%m%d')
145 145 elif os.path.exists('.hg_archival.txt'):
146 146 kw = dict([t.strip() for t in l.split(':', 1)]
147 147 for l in open('.hg_archival.txt'))
148 148 if 'tag' in kw:
149 149 version = kw['tag']
150 150 elif 'latesttag' in kw:
151 151 version = '%(latesttag)s+%(latesttagdistance)s-%(node).12s' % kw
152 152 else:
153 153 version = kw.get('node', '')[:12]
154 154
155 155 if version:
156 156 f = open("mercurial/__version__.py", "w")
157 157 f.write('# this file is autogenerated by setup.py\n')
158 158 f.write('version = "%s"\n' % version)
159 159 f.close()
160 160
161 161
162 162 try:
163 163 from mercurial import __version__
164 164 version = __version__.version
165 165 except ImportError:
166 166 version = 'unknown'
167 167
168 class install_package_data(install_data):
169 def finalize_options(self):
170 self.set_undefined_options('install',
171 ('install_lib', 'install_dir'))
172 install_data.finalize_options(self)
173
174 168 class build_mo(build):
175 169
176 170 description = "build translations (.mo files)"
177 171
178 172 def run(self):
179 173 if not find_executable('msgfmt'):
180 174 self.warn("could not find msgfmt executable, no translations "
181 175 "will be built")
182 176 return
183 177
184 178 podir = 'i18n'
185 179 if not os.path.isdir(podir):
186 180 self.warn("could not find %s/ directory" % podir)
187 181 return
188 182
189 183 join = os.path.join
190 184 for po in os.listdir(podir):
191 185 if not po.endswith('.po'):
192 186 continue
193 187 pofile = join(podir, po)
194 188 modir = join('locale', po[:-3], 'LC_MESSAGES')
195 189 mofile = join(modir, 'hg.mo')
196 cmd = ['msgfmt', '-v', '-o', mofile, pofile]
190 mobuildfile = join('mercurial', mofile)
191 cmd = ['msgfmt', '-v', '-o', mobuildfile, pofile]
197 192 if sys.platform != 'sunos5':
198 193 # msgfmt on Solaris does not know about -c
199 194 cmd.append('-c')
200 self.mkpath(modir)
201 self.make_file([pofile], mofile, spawn, (cmd,))
202 self.distribution.data_files.append((join('mercurial', modir),
203 [mofile]))
195 self.mkpath(join('mercurial', modir))
196 self.make_file([pofile], mobuildfile, spawn, (cmd,))
204 197
205 build.sub_commands.append(('build_mo', None))
198 # Insert build_mo first so that files in mercurial/locale/ are found
199 # when build_py is run next.
200 build.sub_commands.insert(0, ('build_mo', None))
206 201
207 202 Distribution.pure = 0
208 203 Distribution.global_options.append(('pure', None, "use pure (slow) Python "
209 204 "code instead of C extensions"))
210 205
211 206 class hg_build_py(build_py):
212 207
213 208 def finalize_options(self):
214 209 build_py.finalize_options(self)
215 210
216 211 if self.distribution.pure:
217 212 if self.py_modules is None:
218 213 self.py_modules = []
219 214 for ext in self.distribution.ext_modules:
220 215 if ext.name.startswith("mercurial."):
221 216 self.py_modules.append("mercurial.pure.%s" % ext.name[10:])
222 217 self.distribution.ext_modules = []
223 218
224 219 def find_modules(self):
225 220 modules = build_py.find_modules(self)
226 221 for module in modules:
227 222 if module[0] == "mercurial.pure":
228 223 if module[1] != "__init__":
229 224 yield ("mercurial", module[1], module[2])
230 225 else:
231 226 yield module
232 227
233 cmdclass = {'install_data': install_package_data,
234 'build_mo': build_mo,
228 cmdclass = {'build_mo': build_mo,
235 229 'build_py': hg_build_py}
236 230
237 231 ext_modules=[
238 232 Extension('mercurial.base85', ['mercurial/base85.c']),
239 233 Extension('mercurial.bdiff', ['mercurial/bdiff.c']),
240 234 Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c']),
241 235 Extension('mercurial.mpatch', ['mercurial/mpatch.c']),
242 236 Extension('mercurial.parsers', ['mercurial/parsers.c']),
243 237 Extension('mercurial.osutil', ['mercurial/osutil.c']),
244 238 ]
245 239
246 240 packages = ['mercurial', 'mercurial.hgweb', 'hgext', 'hgext.convert',
247 241 'hgext.highlight', 'hgext.zeroconf', ]
248 242
249 243 if sys.platform == 'linux2' and os.uname()[2] > '2.6':
250 244 # The inotify extension is only usable with Linux 2.6 kernels.
251 245 # You also need a reasonably recent C library.
252 246 cc = new_compiler()
253 247 if has_function(cc, 'inotify_add_watch'):
254 248 ext_modules.append(Extension('hgext.inotify.linux._inotify',
255 249 ['hgext/inotify/linux/_inotify.c']))
256 250 packages.extend(['hgext.inotify', 'hgext.inotify.linux'])
257 251
252 packagedata = {'mercurial': ['locale/*/LC_MESSAGES/hg.mo',
253 'help/*.txt']}
254
255 def ordinarypath(p):
256 return p and p[0] != '.' and p[-1] != '~'
257
258 for root in ('templates', ):
259 for curdir, dirs, files in os.walk(os.path.join('mercurial', root)):
260 curdir = curdir.split(os.sep, 1)[1]
261 dirs[:] = filter(ordinarypath, dirs)
262 for f in filter(ordinarypath, files):
263 f = os.path.join(curdir, f)
264 packagedata['mercurial'].append(f)
265
258 266 datafiles = []
259 for root in ('templates', 'help'):
260 for dir, dirs, files in os.walk(root):
261 dirs[:] = [x for x in dirs if not x.startswith('.')]
262 files = [x for x in files if not x.startswith('.')]
263 datafiles.append((os.path.join('mercurial', dir),
264 [os.path.join(dir, file_) for file_ in files]))
265 267
266 268 setup(name='mercurial',
267 269 version=version,
268 270 author='Matt Mackall',
269 271 author_email='mpm@selenic.com',
270 272 url='http://mercurial.selenic.com/',
271 273 description='Scalable distributed SCM',
272 274 license='GNU GPL',
273 275 scripts=scripts,
274 276 packages=packages,
275 277 ext_modules=ext_modules,
276 278 data_files=datafiles,
279 package_data=packagedata,
277 280 cmdclass=cmdclass,
278 281 options=dict(py2exe=dict(packages=['hgext', 'email']),
279 282 bdist_mpkg=dict(zipdist=True,
280 283 license='COPYING',
281 284 readme='contrib/macosx/Readme.html',
282 285 welcome='contrib/macosx/Welcome.html')),
283 286 **extra)
General Comments 0
You need to be logged in to leave comments. Login now