Mercurial > public > mercurial-scm > hg-stable
diff setup.py @ 17225:a06e2681dd17 stable 2.3-rc
merge default into stable for 2.3 code freeze
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 18 Jul 2012 19:08:25 -0500 |
parents | d13f47c800fd |
children | bf5bb38bcc7c |
line wrap: on
line diff
--- a/setup.py Thu Jul 19 00:53:27 2012 +0200 +++ b/setup.py Wed Jul 18 19:08:25 2012 -0500 @@ -23,24 +23,25 @@ try: import hashlib sha = hashlib.sha1() -except: +except ImportError: try: import sha - except: + except ImportError: raise SystemExit( "Couldn't import standard hashlib (incomplete Python install).") try: import zlib -except: +except ImportError: raise SystemExit( "Couldn't import standard zlib (incomplete Python install).") # The base IronPython distribution (as of 2.7.1) doesn't support bz2 isironpython = False try: - isironpython = platform.python_implementation().lower().find("ironpython") != -1 -except: + isironpython = (platform.python_implementation() + .lower().find("ironpython") != -1) +except AttributeError: pass if isironpython: @@ -48,7 +49,7 @@ else: try: import bz2 - except: + except ImportError: raise SystemExit( "Couldn't import standard bz2 (incomplete Python install).") @@ -64,6 +65,7 @@ from distutils.command.install_scripts import install_scripts from distutils.spawn import spawn, find_executable from distutils.ccompiler import new_compiler +from distutils import cygwinccompiler from distutils.errors import CCompilerError, DistutilsExecError from distutils.sysconfig import get_python_inc from distutils.version import StrictVersion @@ -107,7 +109,7 @@ os.dup2(devnull.fileno(), sys.stderr.fileno()) objects = cc.compile([fname], output_dir=tmpdir) cc.link_executable(objects, os.path.join(tmpdir, "a.out")) - except: + except Exception: return False return True finally: @@ -211,10 +213,12 @@ # Insert hgbuildmo first so that files in mercurial/locale/ are found # when build_py is run next. sub_commands = [('build_mo', None), - # We also need build_ext before build_py. Otherwise, when 2to3 is called (in - # build_py), it will not find osutil & friends, thinking that those modules are - # global and, consequently, making a mess, now that all module imports are - # global. + + # We also need build_ext before build_py. Otherwise, when 2to3 is + # called (in build_py), it will not find osutil & friends, + # thinking that those modules are global and, consequently, making + # a mess, now that all module imports are global. + ('build_ext', build.has_ext_modules), ] + build.sub_commands @@ -292,7 +296,8 @@ self.distribution.ext_modules = [] else: if not os.path.exists(os.path.join(get_python_inc(), 'Python.h')): - raise SystemExit("Python headers are required to build Mercurial") + raise SystemExit('Python headers are required to build ' + 'Mercurial') def find_modules(self): modules = build_py.find_modules(self) @@ -331,6 +336,19 @@ f.write(out) f.close() +class buildhgexe(build_ext): + description = 'compile hg.exe from mercurial/exewrapper.c' + + def build_extensions(self): + if os.name != 'nt': + return + objects = self.compiler.compile(['mercurial/exewrapper.c'], + output_dir=self.build_temp) + dir = os.path.dirname(self.get_ext_fullpath('dummy')) + target = os.path.join(dir, 'hg') + self.compiler.link_executable(objects, target, + output_dir=self.build_temp) + class hginstallscripts(install_scripts): ''' This is a specialization of install_scripts that replaces the @LIBDIR@ with @@ -382,10 +400,11 @@ 'build_ext': hgbuildext, 'build_py': hgbuildpy, 'build_hgextindex': buildhgextindex, - 'install_scripts': hginstallscripts} + 'install_scripts': hginstallscripts, + 'build_hgexe': buildhgexe, + } -packages = ['mercurial', 'mercurial.hgweb', - 'mercurial.httpclient', 'mercurial.httpclient.tests', +packages = ['mercurial', 'mercurial.hgweb', 'mercurial.httpclient', 'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf', 'hgext.largefiles'] @@ -411,6 +430,20 @@ extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'], extra_link_args=osutil_ldflags)) +# the -mno-cygwin option has been deprecated for years +Mingw32CCompiler = cygwinccompiler.Mingw32CCompiler + +class HackedMingw32CCompiler(cygwinccompiler.Mingw32CCompiler): + def __init__(self, *args, **kwargs): + Mingw32CCompiler.__init__(self, *args, **kwargs) + for i in 'compiler compiler_so linker_exe linker_so'.split(): + try: + getattr(self, i).remove('-mno-cygwin') + except ValueError: + pass + +cygwinccompiler.Mingw32CCompiler = HackedMingw32CCompiler + if sys.platform.startswith('linux') and os.uname()[2] > '2.6': # The inotify extension is only usable with Linux 2.6 kernels. # You also need a reasonably recent C library.