hg
author Renato Cunha <renatoc@gmail.com>
Tue, 03 Aug 2010 13:18:16 -0300
changeset 11948 88d4911930bf
parent 10263 25e572394f5c
child 12661 10da5a1f25dd
permissions -rwxr-xr-x
contrib/setup3k.py: added script to build hg with py3k This patch implements a script that inherits most of its functionality from hg's setup.py and adds support to calling 2to3 during invocation with python3. The motivation of having this script around is twofold: 1) It enables py3k crazies to test mercurial in py3k and, hopefully, patch it more easily, so it can improve the py3k support to eventually run there. 2) Being separated from the main setup.py eliminates the need to make hg's setup.py even more cluttered, and enables "independent" development until the port is done. Some considerations about the structure of this patch: Mercurial already overrides the behavior of build_py, this patch tweaks it a bit more to add support to call 2to3 with a custom fixer* location for Mercurial. There is also a need of having the core C modules built *before* the translation process starts, otherwise 2to3 will think those are global modules. * A fixer is a python module that transforms python 2.x code in python 3.x code.

#!/usr/bin/env python
#
# mercurial - scalable distributed SCM
#
# Copyright 2005-2007 Matt Mackall <mpm@selenic.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

# enable importing on demand to reduce startup time
try:
    from mercurial import demandimport; demandimport.enable()
except ImportError:
    import sys
    sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" %
                     ' '.join(sys.path))
    sys.stderr.write("(check your install and PYTHONPATH)\n")
    sys.exit(-1)

import sys
import mercurial.util
import mercurial.dispatch

for fp in (sys.stdin, sys.stdout, sys.stderr):
    mercurial.util.set_binary(fp)

mercurial.dispatch.run()