For reasons unknown, cygwin decided to use our sockaddr_storage. As it is redefined to sockaddr_in it'd cause compilation errors in cygwin headers. Fixed by first patch, which uses a more git-related name (can we claim rights for the symbol, being first to use it? :-) For the other, probably unrelated, reasons, they decided to leave declarations of DT_* macros in dirent.h without providing dirent->d_type. This is what NO_DTYPE in the 0002-patch is all about. And on top of that, they removed dirent->d_ino (or probably replaced it by __ino32, if at all). BTW, can we somehow avoid using d_ino? It is referenced only in fsck-objects.c Anyway, to workaround this I put COMPAT_CFLAGS += -Dd_ino=__ino32 It helps, but surely is not the solution. P.S. For all you poor souls on Win2k, my config.mak contains: NO_MMAP = YesPlease NO_DTYPE = YesPlease COMPAT_CFLAGS += -Dd_ino=__ino32 Just to make it work (at least it's enough for me, even the tests run...)