setup.py
changeset 21038 440fbe52b4a8
parent 20697 1cd5bff45db2
child 21229 54d7657d7d1e
equal deleted inserted replaced
21037:b775a2029e8d 21038:440fbe52b4a8
    59     except ImportError:
    59     except ImportError:
    60         raise SystemExit(
    60         raise SystemExit(
    61             "Couldn't import standard bz2 (incomplete Python install).")
    61             "Couldn't import standard bz2 (incomplete Python install).")
    62 
    62 
    63 import os, subprocess, time
    63 import os, subprocess, time
       
    64 import re
    64 import shutil
    65 import shutil
    65 import tempfile
    66 import tempfile
    66 from distutils import log
    67 from distutils import log
    67 from distutils.core import setup, Command, Extension
    68 from distutils.core import setup, Command, Extension
    68 from distutils.dist import Distribution
    69 from distutils.dist import Distribution
    71 from distutils.command.build_py import build_py
    72 from distutils.command.build_py import build_py
    72 from distutils.command.install_scripts import install_scripts
    73 from distutils.command.install_scripts import install_scripts
    73 from distutils.spawn import spawn, find_executable
    74 from distutils.spawn import spawn, find_executable
    74 from distutils import cygwinccompiler
    75 from distutils import cygwinccompiler
    75 from distutils.errors import CCompilerError, DistutilsExecError
    76 from distutils.errors import CCompilerError, DistutilsExecError
    76 from distutils.sysconfig import get_python_inc
    77 from distutils.sysconfig import get_python_inc, get_config_var
    77 from distutils.version import StrictVersion
    78 from distutils.version import StrictVersion
    78 
    79 
    79 convert2to3 = '--c2to3' in sys.argv
    80 convert2to3 = '--c2to3' in sys.argv
    80 if convert2to3:
    81 if convert2to3:
    81     try:
    82     try:
   503     # Windows binary file versions for exe/dll files must have the
   504     # Windows binary file versions for exe/dll files must have the
   504     # form W.X.Y.Z, where W,X,Y,Z are numbers in the range 0..65535
   505     # form W.X.Y.Z, where W,X,Y,Z are numbers in the range 0..65535
   505     setupversion = version.split('+', 1)[0]
   506     setupversion = version.split('+', 1)[0]
   506 
   507 
   507 if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'):
   508 if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'):
   508     # XCode 4.0 dropped support for ppc architecture, which is hardcoded in
       
   509     # distutils.sysconfig
       
   510     version = runcmd(['/usr/bin/xcodebuild', '-version'], {})[0].splitlines()
   509     version = runcmd(['/usr/bin/xcodebuild', '-version'], {})[0].splitlines()
   511     if version:
   510     if version:
   512         version = version[0]
   511         version = version[0]
   513         xcode4 = (version.startswith('Xcode') and
   512         xcode4 = (version.startswith('Xcode') and
   514                   StrictVersion(version.split()[1]) >= StrictVersion('4.0'))
   513                   StrictVersion(version.split()[1]) >= StrictVersion('4.0'))
       
   514         xcode51 = re.match(r'^Xcode\s+5\.1\.', version) is not None
   515     else:
   515     else:
   516         # xcodebuild returns empty on OS X Lion with XCode 4.3 not
   516         # xcodebuild returns empty on OS X Lion with XCode 4.3 not
   517         # installed, but instead with only command-line tools. Assume
   517         # installed, but instead with only command-line tools. Assume
   518         # that only happens on >= Lion, thus no PPC support.
   518         # that only happens on >= Lion, thus no PPC support.
   519         xcode4 = True
   519         xcode4 = True
   520 
   520         xcode51 = False
       
   521 
       
   522     # XCode 4.0 dropped support for ppc architecture, which is hardcoded in
       
   523     # distutils.sysconfig
   521     if xcode4:
   524     if xcode4:
   522         os.environ['ARCHFLAGS'] = ''
   525         os.environ['ARCHFLAGS'] = ''
       
   526 
       
   527     # XCode 5.1 changes clang such that it now fails to compile if the
       
   528     # -mno-fused-madd flag is passed, but the version of Python shipped with
       
   529     # OS X 10.9 Mavericks includes this flag. This causes problems in all
       
   530     # C extension modules, and a bug has been filed upstream at
       
   531     # http://bugs.python.org/issue21244. We also need to patch this here
       
   532     # so Mercurial can continue to compile in the meantime.
       
   533     if xcode51:
       
   534         cflags = get_config_var('CFLAGS')
       
   535         if re.search(r'-mno-fused-madd\b', cflags) is not None:
       
   536             os.environ['CFLAGS'] = (
       
   537                 os.environ.get('CFLAGS', '') + ' -Qunused-arguments')
   523 
   538 
   524 setup(name='mercurial',
   539 setup(name='mercurial',
   525       version=setupversion,
   540       version=setupversion,
   526       author='Matt Mackall and many others',
   541       author='Matt Mackall and many others',
   527       author_email='mercurial@selenic.com',
   542       author_email='mercurial@selenic.com',