pgsql: Add compat file for dynamically loading the functions that MinGW
Log Message:
-----------
Add compat file for dynamically loading the functions that MinGW is missing
the imports for. Add RegisterWaitForSingleObject() to the list of such
functions, which should take care of the current buildfarm breakage.
Modified Files:
--------------
pgsql/src/backend/port/win32:
Makefile (r1.10 -> r1.11)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/port/win32/Makefile?r1=1.10&r2=1.11)
Added Files:
-----------
pgsql/src/backend/port/win32:
mingwcompat.c (r1.1)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/port/win32/mingwcompat.c?rev=1.1&content-type=text/x-cvsweb-markup)
mha@postgresql.org (Magnus Hagander) writes:
Add compat file for dynamically loading the functions that MinGW is missing
the imports for. Add RegisterWaitForSingleObject() to the list of such
functions, which should take care of the current buildfarm breakage.
Trivial stylistic complaint: shouldn't the _RegisterWaitForSingleObject
variable be declared static? IMHO variables (and functions) should
always be static unless there is an explicit intent to access them from
other modules.
regards, tom lane
Tom Lane wrote:
mha@postgresql.org (Magnus Hagander) writes:
Add compat file for dynamically loading the functions that MinGW is missing
the imports for. Add RegisterWaitForSingleObject() to the list of such
functions, which should take care of the current buildfarm breakage.Trivial stylistic complaint: shouldn't the _RegisterWaitForSingleObject
variable be declared static? IMHO variables (and functions) should
always be static unless there is an explicit intent to access them from
other modules.
Yup, it certainly should. Fixing. Thanks.
//Magnus
Hi Magnus.
Ooops, error happen by MinGW (gcc)....CVS-HEAD
$ make -s
signal.c: In function `pg_signal_thread':
signal.c:254: warning: unsigned int format, DWORD arg (arg 4)
mingwcompat.c:48: error: syntax error before "WAITORTIMERCALLBACK"
mingwcompat.c:54: error: syntax error before "WAITORTIMERCALLBACK"
mingwcompat.c:58: warning: no previous prototype for 'RegisterWaitForSingleObject'
mingwcompat.c: In function `RegisterWaitForSingleObject':
mingwcompat.c:73: error: `phNewWaitObject' undeclared (first use in this function)
mingwcompat.c:73: error: (Each undeclared identifier is reported only once
mingwcompat.c:73: error: for each function it appears in.)
mingwcompat.c:73: error: `hObject' undeclared (first use in this function)
mingwcompat.c:73: error: `Callback' undeclared (first use in this function)
mingwcompat.c:73: error: `Context' undeclared (first use in this function)
mingwcompat.c:73: error: `dwMilliseconds' undeclared (first use in this function)
mingwcompat.c:73: error: `dwFlags' undeclared (first use in this function)
make[4]: *** [mingwcompat.o] Error 1
make[3]: *** [win32.dir] Error 2
make[2]: *** [port-recursive] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2
/END
However, this patch is good.
*** src/backend/port/win32/mingwcompat.c.orig Wed Oct 31 14:28:51 2007
--- src/backend/port/win32/mingwcompat.c Wed Oct 31 14:55:43 2007
***************
*** 20,25 ****
--- 20,27 ----
*/
#ifndef WIN32_ONLY_COMPILER
+ typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
+
static HMODULE kernel32 = NULL;
/*
Furthermore, .....
make[3]: Entering directory `/home/hiroshi/pgsql/src/backend/postmaster'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline -Wdeclaration-after-statement -Wendif-labels
-fno-strict-aliasing -I../../../src/include -I./src/include/port/win32 -DEXEC_BACKEND
"-I../../../src/include/port/win32" -DBUILDING_DLL -c -o postmaster.o postmaster.c
postmaster.c: In function `internal_forkexec':
postmaster.c:3466: warning: implicit declaration of function `RegisterWaitForSingleObject'
postmaster.c:3471: error: `WT_EXECUTEONLYONCE' undeclared (first use in this function)
postmaster.c:3471: error: (Each undeclared identifier is reported only once
postmaster.c:3471: error: for each function it appears in.)
postmaster.c:3471: error: `WT_EXECUTEINWAITTHREAD' undeclared (first use in this function)
postmaster.c: In function `pgwin32_deadchild_callback':
postmaster.c:4520: warning: implicit declaration of function `UnregisterWaitEx'
make[3]: *** [postmaster.o] Error 1
make[3]: Leaving directory `/home/hiroshi/pgsql/src/backend/postmaster'
make[2]: *** [postmaster-recursive] Error 2
make[2]: Leaving directory `/home/hiroshi/pgsql/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/hiroshi/pgsql/src'
make: *** [all] Error 2
/END
Umm, define _WIN32_WINNT 0x0500(c.h) is ignore?_?
Regards,
Hiroshi Saito
From: "Magnus Hagander" <mha@postgresql.org>
Show quoted text
Log Message:
-----------
Add compat file for dynamically loading the functions that MinGW is missing
the imports for. Add RegisterWaitForSingleObject() to the list of such
functions, which should take care of the current buildfarm breakage.Modified Files:
--------------
pgsql/src/backend/port/win32:
Makefile (r1.10 -> r1.11)Added Files:
-----------
pgsql/src/backend/port/win32:
mingwcompat.c (r1.1)---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
Hiroshi Saito wrote:
Hi Magnus.
Ooops, error happen by MinGW (gcc)....CVS-HEAD
$ make -s
signal.c: In function `pg_signal_thread':
signal.c:254: warning: unsigned int format, DWORD arg (arg 4)
mingwcompat.c:48: error: syntax error before "WAITORTIMERCALLBACK"
mingwcompat.c:54: error: syntax error before "WAITORTIMERCALLBACK"
mingwcompat.c:58: warning: no previous prototype for
'RegisterWaitForSingleObject'
mingwcompat.c: In function `RegisterWaitForSingleObject':
mingwcompat.c:73: error: `phNewWaitObject' undeclared (first use in this
function)
mingwcompat.c:73: error: (Each undeclared identifier is reported only once
mingwcompat.c:73: error: for each function it appears in.)
mingwcompat.c:73: error: `hObject' undeclared (first use in this function)
mingwcompat.c:73: error: `Callback' undeclared (first use in this function)
mingwcompat.c:73: error: `Context' undeclared (first use in this function)
mingwcompat.c:73: error: `dwMilliseconds' undeclared (first use in this
function)
mingwcompat.c:73: error: `dwFlags' undeclared (first use in this function)
make[4]: *** [mingwcompat.o] Error 1
make[3]: *** [win32.dir] Error 2
make[2]: *** [port-recursive] Error 2
make[1]: *** [all] Error 2
make: *** [all] Error 2/END
However, this patch is good.*** src/backend/port/win32/mingwcompat.c.orig Wed Oct 31 14:28:51 2007 --- src/backend/port/win32/mingwcompat.c Wed Oct 31 14:55:43 2007 *************** *** 20,25 **** --- 20,27 ---- */ #ifndef WIN32_ONLY_COMPILER+ typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK; + static HMODULE kernel32 = NULL;/*
Furthermore, .....
make[3]: Entering directory `/home/hiroshi/pgsql/src/backend/postmaster'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Winline
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-I../../../src/include -I./src/include/port/win32 -DEXEC_BACKEND
"-I../../../src/include/port/win32" -DBUILDING_DLL -c -o postmaster.o
postmaster.c
postmaster.c: In function `internal_forkexec':
postmaster.c:3466: warning: implicit declaration of function
`RegisterWaitForSingleObject'
postmaster.c:3471: error: `WT_EXECUTEONLYONCE' undeclared (first use in
this function)
postmaster.c:3471: error: (Each undeclared identifier is reported only once
postmaster.c:3471: error: for each function it appears in.)
postmaster.c:3471: error: `WT_EXECUTEINWAITTHREAD' undeclared (first use
in this function)
postmaster.c: In function `pgwin32_deadchild_callback':
postmaster.c:4520: warning: implicit declaration of function
`UnregisterWaitEx'
make[3]: *** [postmaster.o] Error 1
make[3]: Leaving directory `/home/hiroshi/pgsql/src/backend/postmaster'
make[2]: *** [postmaster-recursive] Error 2
make[2]: Leaving directory `/home/hiroshi/pgsql/src/backend'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/hiroshi/pgsql/src'
make: *** [all] Error 2
/ENDUmm, define _WIN32_WINNT 0x0500(c.h) is ignore?_?
Regards,
Hiroshi Saito
Grumble. This works perfectly fine on all three mingw installs I've
tested, as well as on all the buildfarm members.
What version of mingw is this? Are you by any chance on a *really* old one?
Do those defines exist in the mingw include files on this one?
//Magnus
Hi.
Grumble. This works perfectly fine on all three mingw installs I've
tested, as well as on all the buildfarm members.What version of mingw is this? Are you by any chance on a *really* old one?
Do those defines exist in the mingw include files on this one?
Ahh, Yes.
I use version this.
msys-1.0.10
mingw-runtime-3.9
mingw-gcc-3.4.5
Sure, it is not defined.(WT_EXECUTEONLYONCE')..:-(
It seems that a new version is needed shortly.
Which do you recommend?
Regards,
Hiroshi Saito
Hiroshi Saito wrote:
Hi.
Grumble. This works perfectly fine on all three mingw installs I've
tested, as well as on all the buildfarm members.What version of mingw is this? Are you by any chance on a *really* old
one?Do those defines exist in the mingw include files on this one?
Ahh, Yes.
I use version this.msys-1.0.10
mingw-runtime-3.9
mingw-gcc-3.4.5Sure, it is not defined.(WT_EXECUTEONLYONCE')..:-(
It seems that a new version is needed shortly.
Which do you recommend?
Can't seem to find any release notes, but download stats indicate that
runtime-3.9 is from sometime around 2005...
With the latest patch, we work with the current version. If you want to
be able to build 8.2 and earlier, you need to go backwards at least one
version because of the gettimeofday() issue. I think you should be able
to find some version references ni the archives somewhere.
//Magnus
Hi.
From: "Magnus Hagander" <magnus@hagander.net>
Can't seem to find any release notes, but download stats indicate that
runtime-3.9 is from sometime around 2005...With the latest patch, we work with the current version. If you want to
be able to build 8.2 and earlier, you need to go backwards at least one
version because of the gettimeofday() issue. I think you should be able
to find some version references ni the archives somewhere.
However, gettimeofday() of 8.2 problem is clear at runtime-3.9.
It did not cause a problem to this patch.....
Then, I understood the essence of the problem.
runtime-3.9 are OK. I checked it. So, w32api-3.10 is changed OK.
But, runtime-3.9 was upgraded to runtime-3.13.
Anyway, thanks!!
Regards,
Hiroshi Saito