##// END OF EJS Templates
setup: refactor handling of modules with C/Python implementations...
Gregory Szorc -
r27222:511a4384 default
parent child Browse files
Show More
@@ -313,11 +313,6 class hgbuildpy(build_py):
313 313 build_py.finalize_options(self)
314 314
315 315 if self.distribution.pure:
316 if self.py_modules is None:
317 self.py_modules = []
318 for ext in self.distribution.ext_modules:
319 if ext.name.startswith("mercurial."):
320 self.py_modules.append("mercurial.pure.%s" % ext.name[10:])
321 316 self.distribution.ext_modules = []
322 317 else:
323 318 h = os.path.join(get_python_inc(), 'Python.h')
@@ -325,14 +320,21 class hgbuildpy(build_py):
325 320 raise SystemExit('Python headers are required to build '
326 321 'Mercurial but weren\'t found in %s' % h)
327 322
328 def find_modules(self):
329 modules = build_py.find_modules(self)
330 for module in modules:
331 if module[0] == "mercurial.pure":
332 if module[1] != "__init__":
333 yield ("mercurial", module[1], module[2])
323 def copy_file(self, *args, **kwargs):
324 dst, copied = build_py.copy_file(self, *args, **kwargs)
325
326 if copied and dst.endswith('__init__.py'):
327 if self.distribution.pure:
328 modulepolicy = 'py'
334 329 else:
335 yield module
330 modulepolicy = 'c'
331 content = open(dst, 'rb').read()
332 content = content.replace(b'@MODULELOADPOLICY@',
333 modulepolicy.encode(libdir_escape))
334 with open(dst, 'wb') as fh:
335 fh.write(content)
336
337 return dst, copied
336 338
337 339 class buildhgextindex(Command):
338 340 description = 'generate prebuilt index of hgext (for frozen package)'
@@ -478,6 +480,7 cmdclass = {'build': hgbuild,
478 480 }
479 481
480 482 packages = ['mercurial', 'mercurial.hgweb', 'mercurial.httpclient',
483 'mercurial.pure',
481 484 'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf',
482 485 'hgext.largefiles']
483 486
General Comments 0
You need to be logged in to leave comments. Login now