##// END OF EJS Templates
setup: add command to generate index of extensions...
setup: add command to generate index of extensions It generates prebuilt index of all extensions, which will be used by frozen exe when running 'hg help extensions'. Now py2exe invokes this command automatically.

File last commit:

r14538:3818c67a default
r14538:3818c67a default
Show More
setup.py
441 lines | 15.0 KiB | text/x-python | PythonLexer
mpm@selenic.com
More whitespace cleanups...
r575 #
# This is the mercurial setup script.
mpm@selenic.com
Add back links from file revisions to changeset revisions...
r0 #
Christian Ebert
setup.py not executable: change instructions at beginning of file
r4816 # 'python setup.py install', or
# 'python setup.py --help' for more options
mpm@selenic.com
Add back links from file revisions to changeset revisions...
r0
Zachary Gramana
setup.py: workaround for missing bz2 module in IronPython...
r14295 import sys, platform
Martin Geisler
setup: require Python 2.4
r8286 if not hasattr(sys, 'version_info') or sys.version_info < (2, 4, 0, 'final'):
raise SystemExit("Mercurial requires Python 2.4 or later.")
Thomas Arendsen Hein
Added check for minimal python version to setup.py
r1873
Renato Cunha
setup.py: Adjustments to make setup.py run in py3k....
r11532 if sys.version_info[0] >= 3:
def b(s):
'''A helper function to emulate 2.6+ bytes literals using string
literals.'''
return s.encode('latin1')
else:
def b(s):
'''A helper function to emulate 2.6+ bytes literals using string
literals.'''
return s
Matt Mackall
setup: warn about missing standard Python components
r7558 # Solaris Python packaging brain damage
try:
import hashlib
sha = hashlib.sha1()
except:
try:
import sha
except:
raise SystemExit(
"Couldn't import standard hashlib (incomplete Python install).")
try:
import zlib
except:
raise SystemExit(
"Couldn't import standard zlib (incomplete Python install).")
Zachary Gramana
setup.py: workaround for missing bz2 module in IronPython...
r14295 # The base IronPython distribution (as of 2.7.1) doesn't support bz2
isironpython = False
Dirkjan Ochtman
setup: fail if bz2 is not available
r10761 try:
Zachary Gramana
setup.py: workaround for missing bz2 module in IronPython...
r14295 isironpython = platform.python_implementation().lower().find("ironpython") != -1
Dirkjan Ochtman
setup: fail if bz2 is not available
r10761 except:
Zachary Gramana
setup.py: workaround for missing bz2 module in IronPython...
r14295 pass
if isironpython:
print "warning: IronPython detected (no bz2 support)"
else:
try:
import bz2
except:
raise SystemExit(
"Couldn't import standard bz2 (incomplete Python install).")
Dirkjan Ochtman
setup: fail if bz2 is not available
r10761
Christian Ebert
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print...
r8547 import os, subprocess, time
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 import shutil
import tempfile
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 from distutils import log
Yuya Nishihara
setup: add command to generate index of extensions...
r14538 from distutils.core import setup, Command, Extension
Martin Geisler
add --pure flag to setup.py...
r7722 from distutils.dist import Distribution
Martin Geisler
i18n: new build_mo command for setup.py...
r7649 from distutils.command.build import build
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 from distutils.command.build_ext import build_ext
Martin Geisler
add --pure flag to setup.py...
r7722 from distutils.command.build_py import build_py
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661 from distutils.command.install_scripts import install_scripts
Martin Geisler
i18n: new build_mo command for setup.py...
r7649 from distutils.spawn import spawn, find_executable
Alexis S. L. Carvalho
setup.py: skip inotify if there's no inotify_add_watch...
r6245 from distutils.ccompiler import new_compiler
Yuya Nishihara
setup: add command to generate index of extensions...
r14538 from distutils.errors import CCompilerError, DistutilsExecError
Nicolas Dumazet
setup: user-friendly error message if Python headers are missing
r12649 from distutils.sysconfig import get_python_inc
Dirkjan Ochtman
setup.py: use StrictVersion instead of manual comparison
r13594 from distutils.version import StrictVersion
mpm@selenic.com
Install the templates where they can be found by hgweb.py...
r157
Paul Moore
Add a batch file driver for Windows
r6513 scripts = ['hg']
if os.name == 'nt':
scripts.append('contrib/win32/hg.bat')
Matt Mackall
Fix setup.py warning
r3893
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 # simplified version of distutils.ccompiler.CCompiler.has_function
# that actually removes its temporary files.
Martin Geisler
setup: cleanup coding style
r10000 def hasfunction(cc, funcname):
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 tmpdir = tempfile.mkdtemp(prefix='hg-install-')
Alexis S. L. Carvalho
setup.py: hide compiler error messages while searching for inotify
r6373 devnull = oldstderr = None
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 try:
try:
Alexis S. L. Carvalho
setup.py: hide compiler error messages while searching for inotify
r6373 fname = os.path.join(tmpdir, 'funcname.c')
f = open(fname, 'w')
f.write('int main(void) {\n')
f.write(' %s();\n' % funcname)
f.write('}\n')
f.close()
# Redirect stderr to /dev/null to hide any error messages
# from the compiler.
# This will have to be changed if we ever have to check
# for a function on Windows.
devnull = open('/dev/null', 'w')
oldstderr = os.dup(sys.stderr.fileno())
os.dup2(devnull.fileno(), sys.stderr.fileno())
Bryan O'Sullivan
setup.py: don't pollute the current directory with temporary files
r9124 objects = cc.compile([fname], output_dir=tmpdir)
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 cc.link_executable(objects, os.path.join(tmpdir, "a.out"))
except:
return False
return True
finally:
Alexis S. L. Carvalho
setup.py: hide compiler error messages while searching for inotify
r6373 if oldstderr is not None:
os.dup2(oldstderr, sys.stderr.fileno())
if devnull is not None:
devnull.close()
Alexis S. L. Carvalho
setup.py: use a simplified custom version of CCompiler.has_function...
r6251 shutil.rmtree(tmpdir)
Volker.Kleinfeld@gmx.de
Support for the distutils extention 'py2exe' added....
r1283 # py2exe needs to be installed to work
try:
Bryan O'Sullivan
Clean up whitespace damage.
r1294 import py2exe
Adrian Buehlmann
setup.py: fixing version info for Windows hg.exe (py2exe)...
r10400 py2exeloaded = True
Bryan O'Sullivan
Fix Volker's modifications to setup.py for non-Windows systems.
r1284 except ImportError:
Adrian Buehlmann
setup.py: fixing version info for Windows hg.exe (py2exe)...
r10400 py2exeloaded = False
Volker.Kleinfeld@gmx.de
Support for the distutils extention 'py2exe' added....
r1283
Christian Boos
setup: fix f51d1822d6fd refactoring, propagate env to runcmd
r9807 def runcmd(cmd, env):
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, env=env)
out, err = p.communicate()
Jon M. Dugan
setup: fix mac build broken by e42d18538e1d...
r13636 return out, err
def runhg(cmd, env):
out, err = runcmd(cmd, env)
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 # If root is executing setup.py, but the repository is owned by
# another user (as in "sudo python setup.py install") we will get
# trust warnings since the .hg/hgrc file is untrusted. That is
Steve Borho
setup: ignore 'not importing' warnings during version detection...
r10120 # fine, we don't want to load it anyway. Python may warn about
# a missing __init__.py in mercurial/locale, we also ignore that.
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 err = [e for e in err.splitlines()
Renato Cunha
setup.py: Adjustments to make setup.py run in py3k....
r11532 if not e.startswith(b('Not trusting file')) \
and not e.startswith(b('warning: Not importing'))]
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 if err:
return ''
return out
version = ''
Jeremy Whitlock
setup: read .hg_archival.txt for version info (issue1670)...
r8548
Christian Ebert
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print...
r8547 if os.path.isdir('.hg'):
Martin Geisler
setup: execute hg in C locale
r8629 # Execute hg out of this directory with a custom environment which
# includes the pure Python modules in mercurial/pure. We also take
# care to not use any hgrc files and do no localization.
pypath = ['mercurial', os.path.join('mercurial', 'pure')]
env = {'PYTHONPATH': os.pathsep.join(pypath),
'HGRCPATH': '',
'LANGUAGE': 'C'}
Christian Boos
setup: pass LD_LIBRARY_PATH to subprocess when determining version.
r9856 if 'LD_LIBRARY_PATH' in os.environ:
env['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH']
Garth Roxburgh-Kidd
fixed 0xc0150004 error building Mercurial under Python 2.6 for Windows
r8648 if 'SystemRoot' in os.environ:
# Copy SystemRoot into the custom environment for Python 2.6
# under Windows. Otherwise, the subprocess will fail with
# error 0xc0150004. See: http://bugs.python.org/issue3440
env['SystemRoot'] = os.environ['SystemRoot']
Christian Ebert
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print...
r8547 cmd = [sys.executable, 'hg', 'id', '-i', '-t']
Jon M. Dugan
setup: fix mac build broken by e42d18538e1d...
r13636 l = runhg(cmd, env).split()
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags
l.pop()
if len(l) > 1: # tag found
version = l[-1]
if l[0].endswith('+'): # propagate the dirty status to the tag
version += '+'
elif len(l) == 1: # no tag found
cmd = [sys.executable, 'hg', 'parents', '--template',
'{latesttag}+{latesttagdistance}-']
Jon M. Dugan
setup: fix mac build broken by e42d18538e1d...
r13636 version = runhg(cmd, env) + l[0]
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 if version.endswith('+'):
version += time.strftime('%Y%m%d')
elif os.path.exists('.hg_archival.txt'):
Martin Geisler
setup.py: keep Python 2.3 compatibility...
r10124 kw = dict([[t.strip() for t in l.split(':', 1)]
for l in open('.hg_archival.txt')])
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 if 'tag' in kw:
version = kw['tag']
elif 'latesttag' in kw:
version = '%(latesttag)s+%(latesttagdistance)s-%(node).12s' % kw
Christian Ebert
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print...
r8547 else:
Gilles Moris
setup: refactor the version string to a subset of tag+tagdist-hash+date...
r9615 version = kw.get('node', '')[:12]
Matt Mackall
refactor version code...
r7632
Jeremy Whitlock
setup: read .hg_archival.txt for version info (issue1670)...
r8548 if version:
Alejandro Santos
compat: use open() instead of file() everywhere
r9031 f = open("mercurial/__version__.py", "w")
Jeremy Whitlock
setup: read .hg_archival.txt for version info (issue1670)...
r8548 f.write('# this file is autogenerated by setup.py\n')
f.write('version = "%s"\n' % version)
f.close()
Jeremy Whitlock
Fix how setup.py identifies the Mercurial version....
r8493
try:
from mercurial import __version__
version = __version__.version
except ImportError:
version = 'unknown'
Matt Mackall
refactor version code...
r7632
Martin Geisler
setup: cleanup coding style
r10000 class hgbuildmo(build):
Martin Geisler
i18n: new build_mo command for setup.py...
r7649
description = "build translations (.mo files)"
def run(self):
if not find_executable('msgfmt'):
self.warn("could not find msgfmt executable, no translations "
"will be built")
return
podir = 'i18n'
if not os.path.isdir(podir):
self.warn("could not find %s/ directory" % podir)
return
join = os.path.join
for po in os.listdir(podir):
if not po.endswith('.po'):
continue
pofile = join(podir, po)
modir = join('locale', po[:-3], 'LC_MESSAGES')
mofile = join(modir, 'hg.mo')
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 mobuildfile = join('mercurial', mofile)
cmd = ['msgfmt', '-v', '-o', mobuildfile, pofile]
Martin Geisler
setup: do not use -c with msgfmt on Solaris (issue1489)
r7720 if sys.platform != 'sunos5':
# msgfmt on Solaris does not know about -c
cmd.append('-c')
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 self.mkpath(join('mercurial', modir))
self.make_file([pofile], mobuildfile, spawn, (cmd,))
Martin Geisler
i18n: new build_mo command for setup.py...
r7649
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661
Martin Geisler
setup: cleanup coding style
r10000 # Insert hgbuildmo first so that files in mercurial/locale/ are found
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 # when build_py is run next.
build.sub_commands.insert(0, ('build_mo', None))
Martin Geisler
i18n: new build_mo command for setup.py...
r7649
Martin Geisler
add --pure flag to setup.py...
r7722 Distribution.pure = 0
Distribution.global_options.append(('pure', None, "use pure (slow) Python "
"code instead of C extensions"))
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 class hgbuildext(build_ext):
def build_extension(self, ext):
try:
build_ext.build_extension(self, ext)
except CCompilerError:
Martin Geisler
setup: slight simplification
r12501 if not getattr(ext, 'optional', False):
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 raise
log.warn("Failed to build optional extension '%s' (skipping)",
ext.name)
Martin Geisler
setup: cleanup coding style
r10000 class hgbuildpy(build_py):
Martin Geisler
add --pure flag to setup.py...
r7722
def finalize_options(self):
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 = []
Nicolas Dumazet
setup: user-friendly error message if Python headers are missing
r12649 else:
if not os.path.exists(os.path.join(get_python_inc(), 'Python.h')):
raise SystemExit("Python headers are required to build Mercurial")
Martin Geisler
add --pure flag to setup.py...
r7722
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])
else:
yield module
Yuya Nishihara
setup: add command to generate index of extensions...
r14538 class buildhgextindex(Command):
description = 'generate prebuilt index of hgext (for frozen package)'
user_options = []
_indexfilename = 'hgext/__index__.py'
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
if os.path.exists(self._indexfilename):
os.unlink(self._indexfilename)
# here no extension enabled, disabled() lists up everything
code = ('import pprint; from mercurial import extensions; '
'pprint.pprint(extensions.disabled())')
out, err = runcmd([sys.executable, '-c', code], env)
if err:
raise DistutilsExecError(err)
f = open(self._indexfilename, 'w')
f.write('# this file is autogenerated by setup.py\n')
f.write('docs = ')
f.write(out)
f.close()
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661 class hginstallscripts(install_scripts):
'''
This is a specialization of install_scripts that replaces the @LIBDIR@ with
the configured directory for modules. If possible, the path is made relative
to the directory for scripts.
'''
def initialize_options(self):
install_scripts.initialize_options(self)
self.install_lib = None
def finalize_options(self):
install_scripts.finalize_options(self)
self.set_undefined_options('install',
('install_lib', 'install_lib'))
def run(self):
install_scripts.run(self)
if (os.path.splitdrive(self.install_dir)[0] !=
os.path.splitdrive(self.install_lib)[0]):
# can't make relative paths from one drive to another, so use an
# absolute path instead
libdir = self.install_lib
else:
common = os.path.commonprefix((self.install_dir, self.install_lib))
rest = self.install_dir[len(common):]
uplevel = len([n for n in os.path.split(rest) if n])
libdir = uplevel * ('..' + os.sep) + self.install_lib[len(common):]
for outfile in self.outfiles:
Dan Villiom Podlaski Christiansen
explicitly close files...
r13400 fp = open(outfile, 'rb')
data = fp.read()
fp.close()
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661
# skip binary files
if '\0' in data:
continue
Patrick Mezard
setup.py: write libdir as a python string literal
r12676 data = data.replace('@LIBDIR@', libdir.encode('string_escape'))
Dan Villiom Podlaski Christiansen
explicitly close files...
r13400 fp = open(outfile, 'wb')
fp.write(data)
fp.close()
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661
Martin Geisler
setup: cleanup coding style
r10000 cmdclass = {'build_mo': hgbuildmo,
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 'build_ext': hgbuildext,
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661 'build_py': hgbuildpy,
Yuya Nishihara
setup: add command to generate index of extensions...
r14538 'build_hgextindex': buildhgextindex,
Dan Villiom Podlaski Christiansen
setup/hg: always load Mercurial from where it was installed....
r12661 'install_scripts': hginstallscripts}
Thomas Arendsen Hein
Applied coding style to setup.py
r3238
Augie Fackler
Import new http library as mercurial.httpclient....
r14243 packages = ['mercurial', 'mercurial.hgweb',
'mercurial.httpclient', 'mercurial.httpclient.tests',
'hgext', 'hgext.convert', 'hgext.highlight', 'hgext.zeroconf']
Benoit Boissinot
Do not use osutil.c with python 2.4 and Windows (issue1364)...
r10521
pymodules = []
Martin Geisler
setup: cleanup coding style
r10000 extmodules = [
Bryan O'Sullivan
manifest: improve parsing performance by 8x via a new C extension
r6389 Extension('mercurial.base85', ['mercurial/base85.c']),
Bryan O'Sullivan
Add osutil module, containing a listdir function....
r5396 Extension('mercurial.bdiff', ['mercurial/bdiff.c']),
Bryan O'Sullivan
manifest: improve parsing performance by 8x via a new C extension
r6389 Extension('mercurial.diffhelpers', ['mercurial/diffhelpers.c']),
Extension('mercurial.mpatch', ['mercurial/mpatch.c']),
Extension('mercurial.parsers', ['mercurial/parsers.c']),
Bryan O'Sullivan
Add osutil module, containing a listdir function....
r5396 ]
Dan Villiom Podlaski Christiansen
util: add Mac-specific check whether we're in a GUI session (issue2553)...
r13734 osutil_ldflags = []
if sys.platform == 'darwin':
osutil_ldflags += ['-framework', 'ApplicationServices']
Benoit Boissinot
Do not use osutil.c with python 2.4 and Windows (issue1364)...
r10521 # disable osutil.c under windows + python 2.4 (issue1364)
if sys.platform == 'win32' and sys.version_info < (2, 5, 0, 'final'):
pymodules.append('mercurial.pure.osutil')
else:
Dan Villiom Podlaski Christiansen
util: add Mac-specific check whether we're in a GUI session (issue2553)...
r13734 extmodules.append(Extension('mercurial.osutil', ['mercurial/osutil.c'],
extra_link_args=osutil_ldflags))
Bryan O'Sullivan
Add inotify extension
r6239
Martin Geisler
setup: cleanup old left-over code
r8283 if sys.platform == 'linux2' 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.
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 # In any case, if it fails to build the error will be skipped ('optional').
Martin Geisler
setup: cleanup old left-over code
r8283 cc = new_compiler()
Martin Geisler
setup: cleanup coding style
r10000 if hasfunction(cc, 'inotify_add_watch'):
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 inotify = Extension('hgext.inotify.linux._inotify',
Renato Cunha
setup.py: Add 'mercurial' as include dir for the inotify compiler....
r11533 ['hgext/inotify/linux/_inotify.c'],
['mercurial'])
Christian Boos
setup: ignore failures to build optional inotify extension
r11468 inotify.optional = True
extmodules.append(inotify)
Martin Geisler
setup: cleanup old left-over code
r8283 packages.extend(['hgext.inotify', 'hgext.inotify.linux'])
Bryan O'Sullivan
Add osutil module, containing a listdir function....
r5396
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 packagedata = {'mercurial': ['locale/*/LC_MESSAGES/hg.mo',
'help/*.txt']}
def ordinarypath(p):
return p and p[0] != '.' and p[-1] != '~'
Matt Mackall
many, many trivial check-code fixups
r10282 for root in ('templates',):
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 for curdir, dirs, files in os.walk(os.path.join('mercurial', root)):
curdir = curdir.split(os.sep, 1)[1]
dirs[:] = filter(ordinarypath, dirs)
for f in filter(ordinarypath, files):
f = os.path.join(curdir, f)
packagedata['mercurial'].append(f)
Martin Geisler
i18n: let Makefile generate i18n/hg.pot...
r7648 datafiles = []
Adrian Buehlmann
setup.py: fixing version info for Windows hg.exe (py2exe)...
r10400 setupversion = version
extra = {}
if py2exeloaded:
extra['console'] = [
{'script':'hg',
'copyright':'Copyright (C) 2005-2010 Matt Mackall and others',
'product_version':version}]
Yuya Nishihara
setup: add command to generate index of extensions...
r14538 # sub command of 'build' because 'py2exe' does not handle sub_commands
build.sub_commands.insert(0, ('build_hgextindex', None))
Adrian Buehlmann
setup.py: fixing version info for Windows hg.exe (py2exe)...
r10400
if os.name == 'nt':
# Windows binary file versions for exe/dll files must have the
# form W.X.Y.Z, where W,X,Y,Z are numbers in the range 0..65535
setupversion = version.split('+', 1)[0]
Martin Geisler
i18n: let Makefile generate i18n/hg.pot...
r7648
Alexander Solovyov
fix compiling of extensions for OS X and XCode 4.0
r13583 if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'):
# XCode 4.0 dropped support for ppc architecture, which is hardcoded in
# distutils.sysconfig
Jon M. Dugan
setup: fix mac build broken by e42d18538e1d...
r13636 version = runcmd(['/usr/bin/xcodebuild', '-version'], {})[0].splitlines()[0]
Alexander Solovyov
fix compiling of extensions for OS X and XCode 4.0
r13583 # Also parse only first digit, because 3.2.1 can't be parsed nicely
if (version.startswith('Xcode') and
Dirkjan Ochtman
setup.py: use StrictVersion instead of manual comparison
r13594 StrictVersion(version.split()[1]) >= StrictVersion('4.0')):
Brendan Cully
Hardcoding ARCHFLAGS breaks the build against fink's python...
r14324 os.environ['ARCHFLAGS'] = ''
Alexander Solovyov
fix compiling of extensions for OS X and XCode 4.0
r13583
Thomas Arendsen Hein
Don't forget version at the end of setup.py, write it only if changed....
r1977 setup(name='mercurial',
Adrian Buehlmann
setup.py: fixing version info for Windows hg.exe (py2exe)...
r10400 version=setupversion,
Thomas Arendsen Hein
Applied coding style to setup.py
r3238 author='Matt Mackall',
author_email='mpm@selenic.com',
Dirkjan Ochtman
change wiki/bts URLs to point to new hostname
r8936 url='http://mercurial.selenic.com/',
Thomas Arendsen Hein
Applied coding style to setup.py
r3238 description='Scalable distributed SCM',
Matt Mackall
Update license to GPLv2+
r10263 license='GNU GPLv2+',
Paul Moore
Add a batch file driver for Windows
r6513 scripts=scripts,
Bryan O'Sullivan
Add inotify extension
r6239 packages=packages,
Benoit Boissinot
Do not use osutil.c with python 2.4 and Windows (issue1364)...
r10521 py_modules=pymodules,
Martin Geisler
setup: cleanup coding style
r10000 ext_modules=extmodules,
Martin Geisler
i18n: let Makefile generate i18n/hg.pot...
r7648 data_files=datafiles,
Dan Villiom Podlaski Christiansen
setup: install translation files as package data...
r9999 package_data=packagedata,
Thomas Arendsen Hein
Applied coding style to setup.py
r3238 cmdclass=cmdclass,
Paul Moore
Force email package to be loaded in py2exe...
r6789 options=dict(py2exe=dict(packages=['hgext', 'email']),
Lee Cantey
Fix for including hgext in Windows compiled version....
r4628 bdist_mpkg=dict(zipdist=True,
Thomas Arendsen Hein
Applied coding style to setup.py
r3238 license='COPYING',
readme='contrib/macosx/Readme.html',
welcome='contrib/macosx/Welcome.html')),
Matt Mackall
Fix setup.py warning
r3893 **extra)