Skip site navigation (1) Skip section navigation (2)

Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64

From: NISHIYAMA Tomoaki <tomoakin(at)staff(dot)kanazawa-u(dot)ac(dot)jp>
To: pgsql-hackers(at)postgresql(dot)org
Cc: Andrew Dunstan <andrew(at)dunslane(dot)net>, NISHIYAMA Tomoaki <tomoakin(at)staff(dot)kanazawa-u(dot)ac(dot)jp>, Magnus Hagander <magnus(at)hagander(dot)net>
Subject: Re: [PATCH] PostgreSQL fails to build with 32bit MinGW-w64
Date: 2011-12-04 08:14:50
Message-ID: FD5D4045-1924-4CAB-B81A-B4C90C24BF15@staff.kanazawa-u.ac.jp (view raw or flat)
Thread:
Lists: pgsql-hackers
Hi,

I found error on #define stat _stat64 occurs on Mingw-w64 (x86_64-w64-mingw32)
gcc version 4.7.0 20111203 (experimental) (GCC)

The code can be compiled with 

diff --git a/src/include/port.h b/src/include/port.h
index eceb4bf..78d5c92 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -332,7 +332,7 @@ extern bool rmtree(const char *path, bool rmtopdir);
  * Some frontends don't need the size from stat, so if UNSAFE_STAT_OK
  * is defined we don't bother with this.
  */
-#if defined(WIN32) && !defined(__CYGWIN__) && !defined(UNSAFE_STAT_OK)
+#if defined(WIN32_ONLY_COMPILER) && !defined(UNSAFE_STAT_OK)
 #include <sys/stat.h>
 extern int     pgwin32_safestat(const char *path, struct stat * buf);
 
but, surely we need to know if it is ok or not
as the comment before says:
 * stat() is not guaranteed to set the st_size field on win32, so we
 * redefine it to our own implementation that is.

Is there any simple test program that determines if the pgwin32_safestat
is required or the library stat is sufficient?
I presume the stat is a library function and therefore it depends on the
compiler rather than the WIN32 platform as a whole.


On 2011/12/04, at 12:55, NISHIYAMA Tomoaki wrote:

> Hi,
> 
> On 2011/12/04, at 9:45, Andrew Dunstan wrote:
>>> Yes, but there's a deal more work to do here. This whole thing is falling over in my build environment (64 bit Windows 7, MinGW/MSys, the machine that runs pitta on the buildfarm.)
>>> 
>>> This is a long way from a done deal.
>> 
>> In particular, it's a major mess because it does this (or at least the version I'm using does):
>> 
>>  #define stat _stat64
>> 
>> which plays merry hell with pgwin32_safestat(). Working around that looks very unpleasant indeed.
> 
> 
> Thank you for testing and reporting.
> Would you mind giving me a bit more information on the environment?
> --especially for the MinGW/MSYS versions and any other component that is required.
> 
> I tested on a virtual machine running 64 bit Windows 7 SP1,
> installing MinGW/MSYS in the clean state and then compile.  
> The versions coming with pre-packaged repository catalogues of 20110802
> (gcc 4.5.2) and latest catalogue (gcc-4.6.1-2) compiles successfully.
> 
> 
> On 2011/12/04, at 9:45, Andrew Dunstan wrote:
> 
>> 
>> 
>> On 12/03/2011 06:12 PM, Andrew Dunstan wrote:
>>> 
>>> 
>>> On 12/03/2011 09:59 AM, Magnus Hagander wrote:
>>>> On Sat, Dec 3, 2011 at 15:49, NISHIYAMA Tomoaki
>>>> <tomoakin(at)staff(dot)kanazawa-u(dot)ac(dot)jp>  wrote:
>>>>> Hi,
>>>>> 
>>>>>> Have you verified if tihs affects _MSC_VER<  1400? Suddently that
>>>>>> branch would care about HAVE_CRTDEFS_H, and I'm not sure if that's
>>>>>> something we need to worry about.
>>>>> 
>>>>> I have no MSVC. In that sense it is not verified in fact, and I hope
>>>>> those who knows well would kindly comment on it.
>>>>> 
>>>>> However, it appears that pg_config.h is not created through
>>>>> configure, but just copied from pg_config.h.win32 in those
>>>>> compilers and thus HAVE_CRTDEFS_H will not be defined.
>>>>> So, I think this code fragment will not be enabled in
>>>>> _MSC_VER<  1400
>>>> Hmm, true. Unless HAVE_CRTDEFS_H is defined by the sytem, which it
>>>> likely isn't - I was confusing it with the kind of defines that MSVC
>>>> tends to stick in their own headerfiles, and thought that's what you
>>>> were testing for.
>>>> 
>>> 
>>> 
>>> Yes, but there's a deal more work to do here. This whole thing is falling over in my build environment (64 bit Windows 7, MinGW/MSys, the machine that runs pitta on the buildfarm.)
>>> 
>>> This is a long way from a done deal.
>> 
>> 
>> In particular, it's a major mess because it does this (or at least the version I'm using does):
>> 
>>  #define stat _stat64
>> 
>> 
>> which plays merry hell with pgwin32_safestat(). Working around that looks very unpleasant indeed.
>> 
>> 
>> cheers
>> 
>> andrew
>> 
>> -- 
>> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-hackers
>> 
> 
> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
> 


In response to

Responses

pgsql-hackers by date

Next:From: Magnus HaganderDate: 2011-12-04 11:03:50
Subject: Re: Moving tablespaces
Previous:From: Pavel StehuleDate: 2011-12-04 07:49:24
Subject: Re: planner fails on HEAD

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group