It's possible to get Mercurial working under Wine with no Windows components. This is useful for cross-platform testing if you don't want use Windows.

You'll need the following packages:

Getting a Wine Command Prompt

Once you have Wine installed, something like this should get you a command prompt:

wineconsole --backend=user cmd

You'll probably want to start with 'cd c:\' to get to Wine's fake Windows install, where you can install new packages safely. From here, you should be able to run the installers for Python, etc. This is stored in $HOME/.wine/drive_c if you want to get at these files from the Linux side.

You'll also want to setup your PATH variable. Run 'start regedit' and edit the key under HKLM/System/CurrentControlSet/SeessionManager/Environment/Path.

Building Mercurial Extensions

Once you've got Python and MinGW installed and a Mercurial tree unpacked in an appropriate place, you can build Mercurial's extensions with something like the following:

python setup.py build_ext -i -f -c mingw32

Making Mercurial Networking Work

At the time of this writing, Python's random library triggers a bug in Wine. We'll need to work around it to get networking up and running. Add the following to mercurial.ini:

hgext.fixrandom = c:\mercurial\fixrandom.py

And then create a fixrandom.py containing the following:

import os
def ni(i): raise NotImplementedError
os.urandom = ni

Py2Exe and InnoSetup

These programs install just fine but won't yet work correctly in Wine (as of Wine 0.9.25) due to emulation of BeginUpdateResource being incomplete (see http://bugs.winehq.org/show_bug.cgi?id=3897).


CategoryWindows