Обсуждение: report for Win32 port
Hi,
I have tested current snapshot (from CVS) to compile and run on Windows NT.
It compiles mostly OK. The only problem is with linking the libpq++, but it
can be a general problem:
pgcursordb.o: In function `_8PgCursorRC12PgConnectionPCc':
/usr/src/pgsql.test/src/interfaces/libpq++/pgcursordb.cc:37: undefined
referenceto `PgTransaction::PgTransaction(PgConnection const &)'
and it also need this small patch:
------------- cut here -------------
--- /usr/src/pgsql/src/interfaces/libpq++/Makefile.in Mon May 24 12:04:49
1999
+++ src/interfaces/libpq++/Makefile.in Wed May 26 15:29:05 1999
@@ -44,7 +44,11 @@OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o
+ifeq ($(PORTNAME), win)
+SHLIB_LINK+= --driver-name g++ -L../libpq -lpq
+elseSHLIB_LINK= -L../libpq -lpq
+endif# Shared library stuff, also default 'all' targetinclude $(SRCDIR)/Makefile.shlib
------------- cut here -------------
Here is current regress.out:
int2 .. failed
int4 .. failed
float8 .. failed
geometry .. failed
-> these are unimportant (libc messages, precision)
datetime .. failed
abstime .. failed
tinterval .. failed
horology .. failed
-> it seems so that there are only differences in strings for timezones
there
random .. failed
*** expected/random.out Wed May 26 13:05:47 1999
--- results/random.out Wed May 26 15:04:57 1999
***************
*** 19,23 **** WHERE random NOT BETWEEN 80 AND 120; random ------
! (0 rows)
--- 19,24 ---- WHERE random NOT BETWEEN 80 AND 120; random ------
! 123
! (1 row)
rules .. failed
-> different order of some lines (unimportant)
The remaining test are OK.
Dan
PS: Change my name in the doc/src/sgml/ports.sgml from "Horak Daniel" to
"Daniel Horak", please.
----------------------------------------------
Daniel Horak
network and system administrator
e-mail: horak@mmp.plzen-city.cz
privat e-mail: dan.horak@email.cz ICQ:36448176
----------------------------------------------
On Wed, 26 May 1999, Horak Daniel wrote:
> Hi,
>
> I have tested current snapshot (from CVS) to compile and run on Windows NT.
>
> It compiles mostly OK. The only problem is with linking the libpq++, but it
> can be a general problem:
>
> pgcursordb.o: In function `_8PgCursorRC12PgConnectionPCc':
> /usr/src/pgsql.test/src/interfaces/libpq++/pgcursordb.cc:37: undefined
> reference
> to `PgTransaction::PgTransaction(PgConnection const &)'
Interesting. I wonder if any other platforms or compilers are also
showing this... I'll submit the patch later today.
Vince.
--
==========================================================================
Vince Vielhaber -- KA8CSH email: vev@michvhf.com flame-mail: /dev/null # include <std/disclaimers.h>
TEAM-OS2 Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore
http://www.cloudninegifts.com
==========================================================================
Applied(the libpq++ part). [Charset iso-8859-2 unsupported, filtering to ASCII...] > Hi, > > I have tested current snapshot (from CVS) to compile and run on Windows NT. > > It compiles mostly OK. The only problem is with linking the libpq++, but it > can be a general problem: > > pgcursordb.o: In function `_8PgCursorRC12PgConnectionPCc': > /usr/src/pgsql.test/src/interfaces/libpq++/pgcursordb.cc:37: undefined > reference > to `PgTransaction::PgTransaction(PgConnection const &)' > > and it also need this small patch: > ------------- cut here ------------- > --- /usr/src/pgsql/src/interfaces/libpq++/Makefile.in Mon May 24 12:04:49 > 1999 > +++ src/interfaces/libpq++/Makefile.in Wed May 26 15:29:05 1999 > @@ -44,7 +44,11 @@ > > OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o > > +ifeq ($(PORTNAME), win) > +SHLIB_LINK+= --driver-name g++ -L../libpq -lpq > +else > SHLIB_LINK= -L../libpq -lpq > +endif > > # Shared library stuff, also default 'all' target > include $(SRCDIR)/Makefile.shlib > ------------- cut here ------------- > > Here is current regress.out: > int2 .. failed > int4 .. failed > float8 .. failed > geometry .. failed > -> these are unimportant (libc messages, precision) > > datetime .. failed > abstime .. failed > tinterval .. failed > horology .. failed > -> it seems so that there are only differences in strings for timezones > there > > random .. failed > *** expected/random.out Wed May 26 13:05:47 1999 > --- results/random.out Wed May 26 15:04:57 1999 > *************** > *** 19,23 **** > WHERE random NOT BETWEEN 80 AND 120; > random > ------ > ! (0 rows) > > --- 19,24 ---- > WHERE random NOT BETWEEN 80 AND 120; > random > ------ > ! 123 > ! (1 row) > > > rules .. failed > -> different order of some lines (unimportant) > > The remaining test are OK. > > Dan > > PS: Change my name in the doc/src/sgml/ports.sgml from "Horak Daniel" to > "Daniel Horak", please. > > ---------------------------------------------- > Daniel Horak > network and system administrator > e-mail: horak@mmp.plzen-city.cz > privat e-mail: dan.horak@email.cz ICQ:36448176 > ---------------------------------------------- > > -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
>
> On Wed, 26 May 1999, Horak Daniel wrote:
>
> > Hi,
> >
> > I have tested current snapshot (from CVS) to compile and run on Windows NT.
> >
> > It compiles mostly OK. The only problem is with linking the libpq++, but it
> > can be a general problem:
> >
> > pgcursordb.o: In function `_8PgCursorRC12PgConnectionPCc':
> > /usr/src/pgsql.test/src/interfaces/libpq++/pgcursordb.cc:37: undefined
> > reference
> > to `PgTransaction::PgTransaction(PgConnection const &)'
>
> Interesting. I wonder if any other platforms or compilers are also
> showing this... I'll submit the patch later today.
g++ -Wno-error -Wno-unused -Wl,-Bdynamic -I/usr/local/pgsql/include -o testlibpq0 testlibpq0.cc -L/usr/local/pgsql/lib
-lpq++
/tmp/cca280301.o: In function `main':
/tmp/cca280301.o(.text+0x14f): undefined reference to
`getline__H2ZcZt18string_char_traits1Zc_R7istreamRt12basic_string2ZX01ZX11X01_R7istream'
/tmp/cca280301.o(.text+0x162): undefined reference to
`__ne__H2ZcZt18string_char_traits1Zc_RCt12basic_string2ZX01ZX11PCX01_b'
/usr/local/pgsql/lib/libpq++.so: undefined reference to `crypt'
/usr/local/pgsql/lib/libpq++.so: undefined reference to `PgTransaction::PgTransaction(PgConnection const &)'
make: *** [testlibpq0] Error 1
[pgsql@orion] ~/devel/src/interfaces/libpq++/examples >
Linux 2.1.88, glibc-2, gcc 2.8.1
Whatever these errors mean and whatever they might be good
for.
Up to now I thought it's due to a self made upgrade of shared
libs. That one was a little hairy and didn't worked as I
wanted it. BTW: since glibc-2 crypt() is in it's own library.
Another interesting detail is that I have a Makefile.custom
telling "COPT=-g", but I don't see -g in the compiler
switches in the examples section.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#======================================== jwieck@debis.com (Jan Wieck) #
On 26-May-99 Jan Wieck wrote:
>>
>> On Wed, 26 May 1999, Horak Daniel wrote:
>>
>> > Hi,
>> >
>> > I have tested current snapshot (from CVS) to compile and run on Windows NT.
>> >
>> > It compiles mostly OK. The only problem is with linking the libpq++, but it
>> > can be a general problem:
>> >
>> > pgcursordb.o: In function `_8PgCursorRC12PgConnectionPCc':
>> > /usr/src/pgsql.test/src/interfaces/libpq++/pgcursordb.cc:37: undefined
>> > reference
>> > to `PgTransaction::PgTransaction(PgConnection const &)'
>>
>> Interesting. I wonder if any other platforms or compilers are also
>> showing this... I'll submit the patch later today.
>
> g++ -Wno-error -Wno-unused -Wl,-Bdynamic -I/usr/local/pgsql/include -o
> testlibpq0 testlibpq0.cc -L/usr/local/pgsql/lib -lpq++
> /tmp/cca280301.o: In function `main':
> /tmp/cca280301.o(.text+0x14f): undefined reference to
> `getline__H2ZcZt18string_char_traits1Zc_R7istreamRt12basic_string2ZX01ZX11X01_R7is
> tream'
> /tmp/cca280301.o(.text+0x162): undefined reference to
> `__ne__H2ZcZt18string_char_traits1Zc_RCt12basic_string2ZX01ZX11PCX01_b'
> /usr/local/pgsql/lib/libpq++.so: undefined reference to `crypt'
> /usr/local/pgsql/lib/libpq++.so: undefined reference to
> `PgTransaction::PgTransaction(PgConnection const &)'
> make: *** [testlibpq0] Error 1
> [pgsql@orion] ~/devel/src/interfaces/libpq++/examples >
>
> Linux 2.1.88, glibc-2, gcc 2.8.1
>
> Whatever these errors mean and whatever they might be good
> for.
>
> Up to now I thought it's due to a self made upgrade of shared
> libs. That one was a little hairy and didn't worked as I
> wanted it. BTW: since glibc-2 crypt() is in it's own library.
>
> Another interesting detail is that I have a Makefile.custom
> telling "COPT=-g", but I don't see -g in the compiler
> switches in the examples section.
I've just discovered that libpq++'s makefile uses whatever is defined as
CXX for the compiler. It's defined as c++, which is ver 2.7.2.1 here.
When I force it to use g++28 (ver 2.8.1), it misses /usr/include/g++.
Adding that to the list of CXXFLAGS fixes that. Now then.. Will it
break something on another platform if I were to leave that in the
list? Anyone know?
Also with g++ 2.7.2.1 and 2.8.1 I can't duplicate the problem that Dan
mentions above. Dan, what compiler/compiler version are you using???
Vince.
--
==========================================================================
Vince Vielhaber -- KA8CSH email: vev@michvhf.com flame-mail: /dev/null # include <std/disclaimers.h>
TEAM-OS2 Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore
http://www.cloudninegifts.com
==========================================================================
Vince Vielhaber <vev@michvhf.com> writes:
> I've just discovered that libpq++'s makefile uses whatever is defined as
> CXX for the compiler.
As it should ...
> When I force it to use g++28 (ver 2.8.1), it misses /usr/include/g++.
> Adding that to the list of CXXFLAGS fixes that. Now then.. Will it
> break something on another platform if I were to leave that in the
> list?
Absolutely. For example: if someone has both g++ and a vendor C++
compiler installed, and tries to compile with the vendor C++, that
would fail because you'd be forcing the vendor C++ to try to eat
g++-specific include files.
The right place to fix any problem along this line is in configure,
*not* by hardwiring platform-dependent assumptions into libpq++'s
makefile.
If it's actually necessary to do what you suggest, then the way to
do it would be for configure to add -I/usr/include/g++ to CXXFLAGS
after checking that CXX is g++. However, I misdoubt that you have
diagnosed the problem correctly, because the versions of gcc/g++
that I've used automatically include their private include areas into
the -I list. This smells more like an incorrect installation of
g++ than a problem that Postgres ought to be solving.
regards, tom lane
On 27-May-99 Tom Lane wrote:
> Vince Vielhaber <vev@michvhf.com> writes:
>> I've just discovered that libpq++'s makefile uses whatever is defined as
>> CXX for the compiler.
>
> As it should ...
>
>> When I force it to use g++28 (ver 2.8.1), it misses /usr/include/g++.
>> Adding that to the list of CXXFLAGS fixes that. Now then.. Will it
>> break something on another platform if I were to leave that in the
>> list?
>
> Absolutely. For example: if someone has both g++ and a vendor C++
> compiler installed, and tries to compile with the vendor C++, that
> would fail because you'd be forcing the vendor C++ to try to eat
> g++-specific include files.
>
> The right place to fix any problem along this line is in configure,
> *not* by hardwiring platform-dependent assumptions into libpq++'s
> makefile.
>
> If it's actually necessary to do what you suggest, then the way to
> do it would be for configure to add -I/usr/include/g++ to CXXFLAGS
> after checking that CXX is g++. However, I misdoubt that you have
> diagnosed the problem correctly, because the versions of gcc/g++
> that I've used automatically include their private include areas into
> the -I list. This smells more like an incorrect installation of
> g++ than a problem that Postgres ought to be solving.
>
> regards, tom lane
More than likely this is the case. FreeBSD comes with a version of gcc
and g++ installed. In this case it's 2.7.2.1. In ports/packages it has
gcc-2.8.1, but being pressed for time I installed the package (20 mins
before trying to build with it). I was a bit surprised to see that it
installed in /usr/local/bin and didn't even put a link in /usr/local/include
or /usr/local/lib, so I probably need to look into the installation more.
The makefile *is* doing a test for g++ tho (it was already there, I didn't
do it :)
Fortunately xemacs saves a backup of the file you're working on with a ~
tacked onto the end. That saved me some work (I have a tape backup but
didn't really want to have to restore from it). I'm referring to libpq++.sgml
that I'm about to send to TommyG before I wipe it out again.
Vince.
--
==========================================================================
Vince Vielhaber -- KA8CSH email: vev@michvhf.com flame-mail: /dev/null # include <std/disclaimers.h>
TEAM-OS2 Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore
http://www.cloudninegifts.com
==========================================================================