libpq.dll on win32

Started by Magnus Haganderalmost 22 years ago12 messagespatches
Jump to latest
#1Magnus Hagander
magnus@hagander.net

This patch aims to correct the issues with libpq.dll exporting too much
on win32. Contains the following changes:

* Exports PQgetssl() even if SSL support is not compiled in. In this
case, it always returns NULL. This is required so programs that expect
SSL version of the library does not crash if they don't get it.

* Create a global flag in Makefile.shlib named "DLL_DEFNAME" used to
specify a .def file when generating a DLL. If not specified, falls back
to the old behaviour of exporting everything in the file.

* Adds required functions to libpqdll.def and libpqddll.def. This
includes the functions not in the libpq API that are used by initdb and
imported from libpq.dll (per recent mail discussion)

//Magnus

Attachments:

libpq_def.patchapplication/octet-stream; name=libpq_def.patchDownload+22-0
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Magnus Hagander (#1)
Re: libpq.dll on win32

"Magnus Hagander" <mha@sollentuna.net> writes:

*** src/interfaces/libpq/fe-secure.c	28 Sep 2004 00:06:02 -0000	1.54
--- src/interfaces/libpq/fe-secure.c	11 Oct 2004 19:50:22 -0000
***************
*** 1201,1206 ****
--- 1201,1212 ----
  		return NULL;
  	return conn->ssl;
  }
+ #else
+ void *
+ PQgetssl(PGconn *conn)
+ {
+ 	return NULL;
+ }
  #endif   /* USE_SSL */

This seems like a good idea, but that particular approach to it will
draw an unprototyped-global-function warning on every non-SSL-enabled
compile ... please clean it up.

Also, I count 3 *.def files to be fixed, not two. (We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

regards, tom lane

#3Dave Page
dpage@pgadmin.org
In reply to: Tom Lane (#2)
Re: libpq.dll on win32

-----Original Message-----
From: pgsql-patches-owner@postgresql.org
[mailto:pgsql-patches-owner@postgresql.org] On Behalf Of
Magnus Hagander
Sent: 11 October 2004 21:05
To: pgsql-patches
Subject: [PATCHES] libpq.dll on win32

* Adds required functions to libpqdll.def and libpqddll.def.
This includes the functions not in the libpq API that are
used by initdb and imported from libpq.dll (per recent mail
discussion)

They should be added to the Borland .def files as well.

Regards, Dave

#4Dave Page
dpage@pgadmin.org
In reply to: Dave Page (#3)
Re: libpq.dll on win32

-----Original Message-----
From: pgsql-patches-owner@postgresql.org
[mailto:pgsql-patches-owner@postgresql.org] On Behalf Of Tom Lane
Sent: 12 October 2004 01:38
To: Magnus Hagander
Cc: pgsql-patches
Subject: Re: [PATCHES] libpq.dll on win32

Also, I count 3 *.def files to be fixed, not two. (We really
oughta figure a way to generate them all from a single list
file... can we rely on sed(1) being available in all Windows
build environments?)

I could have sworn there used to be 4 .def files - 2 for VC++ and 2 for
Borland. Oh well.

Anyway, no, sed will not be available in VC++, or (I guess) Borland
environments.

Regards, Dave

#5Reini Urban
rurban@x-ray.at
In reply to: Tom Lane (#2)
Re: libpq.dll on win32

Tom Lane schrieb:

Also, I count 3 *.def files to be fixed, not two. (We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

for cygwin: yes.
the non-gcc builds would need the mingw or cygwin versions.

#6Tom Lane
tgl@sss.pgh.pa.us
In reply to: Reini Urban (#5)
Re: libpq.dll on win32

Reini Urban <rurban@x-ray.at> writes:

Tom Lane schrieb:

Also, I count 3 *.def files to be fixed, not two. (We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

for cygwin: yes.
the non-gcc builds would need the mingw or cygwin versions.

A workable plan B would be to keep a single list file in CVS and build
the *.def files as derived files that we include in the distribution
tarball (same principle as for bison/flex output files).

regards, tom lane

#7Magnus Hagander
magnus@hagander.net
In reply to: Tom Lane (#6)
Re: libpq.dll on win32
*** src/interfaces/libpq/fe-secure.c	28 Sep 2004 00:06:02 
-0000	1.54
--- src/interfaces/libpq/fe-secure.c	11 Oct 2004 19:50:22 -0000
***************
*** 1201,1206 ****
--- 1201,1212 ----
return NULL;
return conn->ssl;
}
+ #else
+ void *
+ PQgetssl(PGconn *conn)
+ {
+ 	return NULL;
+ }
#endif   /* USE_SSL */

This seems like a good idea, but that particular approach to it will
draw an unprototyped-global-function warning on every non-SSL-enabled
compile ... please clean it up.

Oops. Updated patch attached.

Also, I count 3 *.def files to be fixed, not two.

Right. The Borland one, forgot all about that one. Included in attached
patch. Borland version not actually tested, though, since I don't have
Borland C..

(We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

Unfortunatly, no, we can't.
There are sed implementations available for win32, but they're not
installed by default. MingW and Cygwin of course ship with sed, but we
build libpq with MSVC and Borland as well...

The avaiable options to do it are just horrible. There is edlin, but it
can't be used for anything serious. Or there is the wonderful concept of
writing something in vbscript. But putting vbscript in there doesn't
seem like a very good option.

I like the idea of having it built automatically for the snapshots in
some way, and if you want to build it manually, you have to install
'sed'. I think that's a reasonable requirement.

Anyway. Here is the patch for this one. Not sure we want to muck around
with those build issues during beta considering they actually *work* now
(if a bit of extra work).

//Magnus

Attachments:

libpq_def.patchapplication/octet-stream; name=libpq_def.patchDownload+32-0
#8Andrew Dunstan
andrew@dunslane.net
In reply to: Magnus Hagander (#7)
Re: libpq.dll on win32

Magnus Hagander wrote:

(We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

Unfortunatly, no, we can't.
There are sed implementations available for win32, but they're not
installed by default. MingW and Cygwin of course ship with sed, but we
build libpq with MSVC and Borland as well...

The avaiable options to do it are just horrible. There is edlin, but it
can't be used for anything serious. Or there is the wonderful concept of
writing something in vbscript. But putting vbscript in there doesn't
seem like a very good option.

ActiveState Perl? It's very widely used.

cheers

andrew

#9Magnus Hagander
magnus@hagander.net
In reply to: Andrew Dunstan (#8)
Re: libpq.dll on win32

The avaiable options to do it are just horrible. There is

edlin, but it

can't be used for anything serious. Or there is the wonderful

concept of

writing something in vbscript. But putting vbscript in there doesn't
seem like a very good option.

ActiveState Perl? It's very widely used.

Yes, but it's not in there by default.
If we're going to require a third party tool to be installed, we'd
probably be better off requiring a simple sed.exe which is a single
binary instead of the whole perl package which is hundreds of files and
many megabytes...

//Magnus

#10Andrew Dunstan
andrew@dunslane.net
In reply to: Magnus Hagander (#9)
Re: libpq.dll on win32

Magnus Hagander wrote:

The avaiable options to do it are just horrible. There is

edlin, but it

can't be used for anything serious. Or there is the wonderful

concept of

writing something in vbscript. But putting vbscript in there doesn't
seem like a very good option.

ActiveState Perl? It's very widely used.

Yes, but it's not in there by default.
If we're going to require a third party tool to be installed, we'd
probably be better off requiring a simple sed.exe which is a single
binary instead of the whole perl package which is hundreds of files and
many megabytes...

Try this then: http://gnuwin32.sourceforge.net/packages/sed.htm (almost
a single binary, anyway)

cheers

andrew

#11Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#10)
Re: libpq.dll on win32

Andrew Dunstan <andrew@dunslane.net> writes:

Yes, but it's not in there by default.
If we're going to require a third party tool to be installed, we'd
probably be better off requiring a simple sed.exe which is a single
binary instead of the whole perl package which is hundreds of files and
many megabytes...

Try this then: http://gnuwin32.sourceforge.net/packages/sed.htm (almost
a single binary, anyway)

This is all pretty silly. We should just build the .def files during
tarball construction, much as we handle bison/flex stuff.

regards, tom lane

#12Bruce Momjian
bruce@momjian.us
In reply to: Magnus Hagander (#7)
Re: libpq.dll on win32

Patch applied. Thanks.

I fixed a few merge conflicts.

---------------------------------------------------------------------------

Magnus Hagander wrote:

*** src/interfaces/libpq/fe-secure.c	28 Sep 2004 00:06:02 
-0000	1.54
--- src/interfaces/libpq/fe-secure.c	11 Oct 2004 19:50:22 -0000
***************
*** 1201,1206 ****
--- 1201,1212 ----
return NULL;
return conn->ssl;
}
+ #else
+ void *
+ PQgetssl(PGconn *conn)
+ {
+ 	return NULL;
+ }
#endif   /* USE_SSL */

This seems like a good idea, but that particular approach to it will
draw an unprototyped-global-function warning on every non-SSL-enabled
compile ... please clean it up.

Oops. Updated patch attached.

Also, I count 3 *.def files to be fixed, not two.

Right. The Borland one, forgot all about that one. Included in attached
patch. Borland version not actually tested, though, since I don't have
Borland C..

(We really oughta
figure a way to generate them all from a single list file... can we
rely on sed(1) being available in all Windows build environments?)

Unfortunatly, no, we can't.
There are sed implementations available for win32, but they're not
installed by default. MingW and Cygwin of course ship with sed, but we
build libpq with MSVC and Borland as well...

The avaiable options to do it are just horrible. There is edlin, but it
can't be used for anything serious. Or there is the wonderful concept of
writing something in vbscript. But putting vbscript in there doesn't
seem like a very good option.

I like the idea of having it built automatically for the snapshots in
some way, and if you want to build it manually, you have to install
'sed'. I think that's a reasonable requirement.

Anyway. Here is the patch for this one. Not sure we want to muck around
with those build issues during beta considering they actually *work* now
(if a bit of extra work).

//Magnus

Content-Description: libpq_def.patch

[ Attachment, skipping... ]

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Attachments:

/bjm/difftext/plainDownload+37-0