311 |
311 |
312 def finalize_options(self): |
312 def finalize_options(self): |
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') |
324 if not os.path.exists(h): |
319 if not os.path.exists(h): |
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)' |
339 user_options = [] |
341 user_options = [] |
340 _indexfilename = 'hgext/__index__.py' |
342 _indexfilename = 'hgext/__index__.py' |
476 'install_scripts': hginstallscripts, |
478 'install_scripts': hginstallscripts, |
477 'build_hgexe': buildhgexe, |
479 'build_hgexe': buildhgexe, |
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 |
484 common_depends = ['mercurial/util.h'] |
487 common_depends = ['mercurial/util.h'] |
485 |
488 |