public
Last active

Installing hg-git on Windows using MinGW

  • Download Gist
easy_install and MinGW
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
Here's how I installed hg-git on Windows using the MinGW compiler.
 
PREPARE
-------
 
- Install Python (http://www.activestate.com/activepython/downloads)
- Install the Python package manager, setuptools (http://pypi.python.org/pypi/setuptools)
- Install the MinGW installer (http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/mingw-get/)
- Install the C compiler, MinGW gcc, and a utility, pexports, to help create the import library
 
> mingw-get install gcc
> mingw-get install mingw-utils
 
Create an import library for MinGW gcc (http://mercurial.selenic.com/wiki/BuildingOnWindows)
 
> cd c:\python26\libs
> pexports c:\windows\system32\python26.dll > python26.def
> dlltool -C -d python26.def -l libpython26.a
> nm libpython26.a # shows you the exported symbols with "I" (as import symbol)
 
- Configure the package manager to use the new C compiler
 
In C:\Python26\Lib\distutils\, create distutils.cfg with this content:
 
[build]
compiler=mingw32
 
 
INSTALL (http://hg-git.github.com/)
-----------------------------------
 
> easy_install hg-git
> cd %USERPROFILE%
> notepad .hgrc
 
[extensions]
hgext.bookmarks =
hggit = C:\Python26\Lib\site-packages\hg_git-0.2.6-py2.6.egg\hggit
 
 
USE (http://hg-git.github.com/)
-------------------------------
 
$ cd hg-git # (a Mercurial repository)
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created
$ hg push git+ssh://git@github.com/schacon/hg-git.git
$ hg push

Trying to replicate this with Python2.7, I'm unable to perform "pexports" on my python27.dll. I get:

PS C:\python27\libs> pexports c:\windows\system32\python27.dll > python27.def
stat: No such file or directory
c:\mingw\bin\pexports.exe: c:\windows\system32\python27.dll: could not load PE image

(C:\windows\system32\python27.dll exists.)

Any ideas?

I'm also getting the same error as above with python2.7. Any help would be greatly appreciated.

I got it to work by ignorning the section

cd c:\python26\libs
pexports c:\windows\system32\python26.dll > python26.def
dlltool -C -d python26.def -l libpython26.a
nm libpython26.a # shows you the exported symbols with "I" (as import symbol)

and just running the easy_install command again once I had the entry

[build]
compiler=mingw32

In C:\Python27\Lib\distutils\distutils.cfg which uses the gcc compiler from mingw instead.

After following the instructions above on Python2.7 I get an error saying "unrecognized command line option '-mno-cygwin'" when gcc is called while installing dulwich.

@jimitndiaye
I had the same problem and fixed it using the suggestion from http://stackoverflow.com/a/6035864/1462615

To install hg-git on Python 2.7 on Windows 7 x64, I had to patch cygwinccompiler.py

--- C:\Python27\Lib\distutils\cygwinccompiler.py.orig.py
+++ C:\Python27\Lib\distutils\cygwinccompiler.py
@@ -325,7 +325,7 @@
             no_cygwin = ''

         self.set_executables(compiler='gcc%s -O -Wall' % no_cygwin,
-                             compiler_so='gcc%s -mdll -O -Wall' % no_cygwin,
+                             compiler_so='gcc%s -mdll -O -Wall -D MS_WIN64' % no_cygwin,
                              compiler_cxx='g++%s -O -Wall' % no_cygwin,
                              linker_exe='gcc%s' % no_cygwin,
                              linker_so='%s%s %s %s'

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.