#pragma section-numbers 2 <> = Mercurial Under Wine = How to use Wine for developing and testing Mercurial's Windows support under Linux and elsewhere. <> == Introduction == 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: * [[http://www.winehq.org/download/|Wine]] (obviously) * [[http://www.python.org/download/|Python 2.6 for Windows]] * [[http://www.mingw.org/|MinGW]] (for compiling extensions) Wine is a sufficiently good emulation of Windows to exercise at least the following: * most Mercurial functionality, including networking support * case sensitivity issues and other path naming issues * console and GUI charset and encoding behavior * 32-bit memory fragmentation and restrictions * subprocess and pipe oddities * EOL behavior == Getting a Wine command prompt == Once you have Wine installed, something like this should get you a command prompt: {{{ wineconsole 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/SessionManager/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 }}} == Tips == Create a 'win' (or 'lose' if you prefer) script in your host environment like the following to make starting Wine in console mode more convenient: {{{ cd ~/.wine/drive_c wineconsole cmd > /dev/null 2>&1 & }}} Create an 'hg.bat' script in 'c:\windows' to make running hg easier: {{{ @c:\python26\python c:\hg\hg %1 %2 %3 %4 %5 %6 %7 %8 %9 }}} == 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). == See also == * HackableMercurial ---- CategoryDeveloper CategoryWindows CategoryTesting CategoryHowTo