setup.py
changeset 27222 511a4384b033
parent 27220 4374d819ccd5
child 27268 ed1660ce99d9
--- 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']