Differences between revisions 14 and 15
Revision 14 as of 2005-09-17 10:48:14
Size: 5184
Comment:
Revision 15 as of 2005-09-21 01:40:18
Size: 5569
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:

If you are using [http://www.python.org python.org]'s Python, you will find that the [http://sourceforge.net/project/showfiles.php?group_id=78018&package_id=79063 win32 API extensions] make a huge performance difference when you use the {{{clone}}} command. These extensions are already shipped as part of Active``Python, but Active``Python is not completely open source software.

To install Mercurial from sources under Windows, you need

If you are using [http://www.python.org python.org]'s Python, you will find that the [http://sourceforge.net/project/showfiles.php?group_id=78018&package_id=79063 win32 API extensions] make a huge performance difference when you use the clone command. These extensions are already shipped as part of ActivePython, but ActivePython is not completely open source software.

This pages describes some issues you may meet when trying to install Mercurial, and how to solve them.

Normally, you would only need to run

python setup.py install

in the directory where you unpacked the sources, and everything would "just work".

Where is my Mercurial?

By default, Mercurial (the executable) gets installed in a Scripts folder under your Python installation folder.

You can create a small batch file in a folder which is present in your path (e.g. your Windows installation folder) to help you launch Mercurial.

If you are running a Windows of the 9x series (Windows 95, 98 or ME), create a file called hg.bat with the following content:

@echo off
shift
python <path-to-Scripts-folder>\hg %0 %1 %2 %3 %4 %5 %6 %7 %8 %9

For example, if you installed Python in c:\python, the content of the file would be

@echo off
shift
python c:\python\hg %0 %1 %2 %3 %4 %5 %6 %7 %8 %9

Under Windows NT, create a file called hg.cmd with the following content:

@python <path-to-Scripts-folder>\hg %*

For example, if you installed Python in c:\python, the content of the file would be

@python c:\python\Scripts\hg %*

Python and MingW32

By default, Python and ActivePython will look for Microsoft Visual C to compile the extensions, so you have to tell setup.py to use the MingW32 compiler instead. You can do this by running

python setup.py build -c mingw32
python setup.py install --skip-build

If you are not familiar with mingw32, you will first need to download and install the following packages, in the order given:

msys.exe
msysDTK.exe

Afterwards, download and install the following package, installing it in the directory where you installed the msys package (i.e. c:\msys\1.0\)

MinGW.exe

You can find them at http://www.mingw.org

Then add the Python and mingw directories to your PATH, and run your build from the command prompt:

set PATH=%PATH%;c:\python24;c:\msys\1.0\mingw\bin

ActivePython and MS Visual C

If you are going to use MS Visual C, you may need to install an appropriate version of ActivePython:

  • ActivePython 2.4.1 requires VC7.1

  • ActivePython 2.3.5 requires VC6

A less than ideal work-around for the version check is to change your distutils notion of what version of MSVC Python was built with. Do this by editing your msvccompiler.py file in your python/Lib/distutils directory to match the version of MSVC you actually have, for example:

   def __init__ (self, verbose=0, dry_run=0, force=0):
       CCompiler.__init__ (self, verbose, dry_run, force)
       self.__version = get_build_version()
 +     self.__version = 6 # override build version to match compiler

Other miscellaneous issues

WinZip7 does not seem to create empty files when extracting from .tar files. But WinZip9 is fine.

Fix the path problem on Windows

See the mail list thread "Fix the path problem on Windows..." but essentially Python on Windows ends up with the current directory automatically added to the python search path before the site libraries. So if you run hg in its own repository python gets confused, and can't find the extensions needed. There is a candidate patch that removes the current directory, but there is an arguably better workaround from K.Thananchayan. Simply add a registry entry (replacing 2.4 with the version of Python)

 HKLM/SOFTWARE/Python/PythonCore/2.4/PythonPath/XXX
   (Default) REG_SZ "YYY"

Mercurial now includes support for cloning with hardlinks on Windows. However for this to work, your filesystem needs to support them (i.e. NTFS) and you need a version of Python that supports the win32file module (e.g. ActiveState Python). If you have a filesystem that does not support hardlinks or don't have the win32file module, mercurial clone will still work just fine - but you won't get the benefits of hardlinking of course.

Unfortunately the regular python stat assumes that Windows doesn't support hardlinks so it returns the wrong answer for the number of links - so mercurial won't realise that it has to 'break' the links.

The upshot is that if you have repositories cloned with hardlinks you must not use pre-0.7 versions of mercurial on them (either the source or the destination clone), or use a version of python without win32file. If you do you are likely to get corruption.

A simple solution to break the hardlinks is to copy (using xcopy or File Explorer) one of the repositories, deleting the clone. Copying it back afterwards.

WindowsInstall (last edited 2013-07-19 10:57:21 by rcl)