pgsql: Add compat file for dynamically loading the functions that MinGW

Started by Magnus Haganderover 18 years ago8 messagescomitters
Jump to latest
#1Magnus Hagander
magnus@hagander.net

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)

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#1)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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

#3Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#2)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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

#4Hiroshi Saito
z-saito@guitar.ocn.ne.jp
In reply to: Magnus Hagander (#1)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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)

(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/port/win32/Makefile?r1=1.10&amp;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&amp;content-type=text/x-cvsweb-markup)

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

http://archives.postgresql.org

#5Magnus Hagander
magnus@hagander.net
In reply to: Hiroshi Saito (#4)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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
/END

Umm, 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

#6Hiroshi Saito
z-saito@guitar.ocn.ne.jp
In reply to: Magnus Hagander (#1)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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

#7Magnus Hagander
magnus@hagander.net
In reply to: Hiroshi Saito (#6)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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.5

Sure, 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

#8Hiroshi Saito
z-saito@guitar.ocn.ne.jp
In reply to: Magnus Hagander (#1)
Re: pgsql: Add compat file for dynamically loading the functions that MinGW

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