##// 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 build_py.finalize_options(self)
313 build_py.finalize_options(self)
314
314
315 if self.distribution.pure:
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 self.distribution.ext_modules = []
316 self.distribution.ext_modules = []
322 else:
317 else:
323 h = os.path.join(get_python_inc(), 'Python.h')
318 h = os.path.join(get_python_inc(), 'Python.h')
@@ -325,14 +320,21 class hgbuildpy(build_py):
325 raise SystemExit('Python headers are required to build '
320 raise SystemExit('Python headers are required to build '
326 'Mercurial but weren\'t found in %s' % h)
321 'Mercurial but weren\'t found in %s' % h)
327
322
328 def find_modules(self):
323 def copy_file(self, *args, **kwargs):
329 modules = build_py.find_modules(self)
324 dst, copied = build_py.copy_file(self, *args, **kwargs)
330 for module in modules:
325
331 if module[0] == "mercurial.pure":
326 if copied and dst.endswith('__init__.py'):
332 if module[1] != "__init__":
327 if self.distribution.pure:
333 yield ("mercurial", module[1], module[2])
328 modulepolicy = 'py'
334 else:
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 class buildhgextindex(Command):
339 class buildhgextindex(Command):
338 description = 'generate prebuilt index of hgext (for frozen package)'
340 description = 'generate prebuilt index of hgext (for frozen package)'
@@ -478,6 +480,7 cmdclass = {'build': hgbuild,
478 }
480 }
479
481
480 packages = ['mercurial', 'mercurial.hgweb', 'mercurial.httpclient',
482 packages = ['mercurial', 'mercurial.hgweb', 'mercurial.httpclient',
483 'mercurial.pure',
481 'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf',
484 'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf',
482 'hgext.largefiles']
485 'hgext.largefiles']
483
486
General Comments 0
You need to be logged in to leave comments. Login now