diff -r ab776610fc6d -r 511a4384b033 setup.py --- a/setup.py Tue Nov 24 22:53:55 2015 -0800 +++ b/setup.py Thu Dec 03 21:48:12 2015 -0800 @@ -313,11 +313,6 @@ build_py.finalize_options(self) if self.distribution.pure: - if self.py_modules is None: - self.py_modules = [] - for ext in self.distribution.ext_modules: - if ext.name.startswith("mercurial."): - self.py_modules.append("mercurial.pure.%s" % ext.name[10:]) self.distribution.ext_modules = [] else: h = os.path.join(get_python_inc(), 'Python.h') @@ -325,14 +320,21 @@ raise SystemExit('Python headers are required to build ' 'Mercurial but weren\'t found in %s' % h) - def find_modules(self): - modules = build_py.find_modules(self) - for module in modules: - if module[0] == "mercurial.pure": - if module[1] != "__init__": - yield ("mercurial", module[1], module[2]) + def copy_file(self, *args, **kwargs): + dst, copied = build_py.copy_file(self, *args, **kwargs) + + if copied and dst.endswith('__init__.py'): + if self.distribution.pure: + modulepolicy = 'py' else: - yield module + modulepolicy = 'c' + content = open(dst, 'rb').read() + content = content.replace(b'@MODULELOADPOLICY@', + modulepolicy.encode(libdir_escape)) + with open(dst, 'wb') as fh: + fh.write(content) + + return dst, copied class buildhgextindex(Command): description = 'generate prebuilt index of hgext (for frozen package)' @@ -478,6 +480,7 @@ } packages = ['mercurial', 'mercurial.hgweb', 'mercurial.httpclient', + 'mercurial.pure', 'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf', 'hgext.largefiles']