setup.py
changeset 27222 511a4384b033
parent 27220 4374d819ccd5
child 27268 ed1660ce99d9
equal deleted inserted replaced
27221:ab776610fc6d 27222:511a4384b033
   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