Subject: Re: What's cooking in git.git (Nov 2012, #03; Tue, 13)

From: Torsten Bögershausen <[email-masked]>
Date: Wed, 14 Nov 2012 22:13:28 +0100

On 14.11.12 20:02, Jeff King wrote:
> On Tue, Nov 13, 2012 at 08:18:53PM -0500, Mark Levedahl wrote:
> 
>> On 11/13/2012 03:45 PM, Torsten Bögershausen wrote:
>>>> * ml/cygwin-mingw-headers (2012-11-12) 1 commit
>>>>  - Update cygwin.c for new mingw-64 win32 api headers
>>>>
>>>>  Make git work on newer cygwin.
>>>>
>>>>  Will merge to 'next'.
>>> (Sorry for late answer, I managed to test the original patch minutes before Peff merged it to pu)
>>> (And thanks for maintaining git)
>>>
>>> Is everybody using cygwin happy with this?
>>>
>>> I managed to compile on a fresh installed cygwin,
>>> but failed to compile under 1.7.7, see below.
>>> Is there a way we can achieve to compile git both under "old" and "new" cygwin 1.7 ?
>>> Or is this not worth the effort?
>>>
>> I found no version info defined that could be used to automatically
>> switch between the old and current headers. You can always
>>
>>     make V15_MINGW_HEADERS=1 ...
>>
>> to force using the old set if you do not wish to update your installation.
> 
> Should we keep the code change, then, but not flip the default (i.e.,
> make people on the newer version opt into it)? I am not clear on how
> common the newer include system is. Of course, auto-detecting would be
> the ideal.
> 
> -Peff
There are a couple of things which we may want consider:
a) the name V15_MINGW_HEADERS:
  It indicates that this is true for Version 1.5 (of what?)
  If I assume Cygwin version 1.5 , then this name is confusing.
  Even cygwin versions like 1.7.7 use the same (or similar) include files as 1.5
  A better name could be CYGWIN_USE_MINGW_HEADERS (or the like) and to revert the logic.

b) Autodetection:
  (Just loud thinking), running 
$grep mingw /usr/include/w32api/winsock2.h
 * This file is part of the mingw-w64 runtime package.
#include <_mingw_unicode.h>

on cygwin 1.7.17 indicates that we can use grep in the Makefile to autodetect the "mingw headers"

Something like this in Makefile:
+ifeq ($(shell grep mingw /usr/include/w32api/winsock2.h />/dev/null 2>/dev/null && echo y),y)
+	CYGWIN_USE_MINGW_HEADERS=YesPlease
+endif

c) I'm not sure if we want to change cygwin.c or git-compat-util.h for this.

I can prepare a proper patch within the next couple of days

/Torsten