Re: [Fwd: DBD::Pg on HP-UX 11.31 64bit]

From: "H(dot)Merijn Brand" <h(dot)m(dot)brand(at)xs4all(dot)nl>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Simon Riggs <simon(at)2ndQuadrant(dot)com>, pgsql-bugs(at)postgresql(dot)org
Subject: Re: [Fwd: DBD::Pg on HP-UX 11.31 64bit]
Date: 2010-12-20 11:31:38
Message-ID: 20101220123138.5935920f@pc09.procura.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Thu, 16 Dec 2010 12:56:12 -0500, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> "H.Merijn Brand" <h(dot)m(dot)brand(at)xs4all(dot)nl> writes:
> > On Thu, 16 Dec 2010 12:31:21 -0500, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >> So what I'm thinking is happening is that libpq expects size_t as
> >> the argument type, but it's getting linked against a libc that
> >> expects int as the argument type, and whatever HP is doing under
> >> the hood fails to cope with that case. You might try removing
> >> -D_XOPEN_SOURCE_EXTENDED from the template file --- I don't know if
> >> that will have any bad side-effects, but it's worth a try to build
> >> libpq that way.
>
> > I'll try that first after cleaning up my environment.
>
> I looked in the git history and found that I added
> -D_XOPEN_SOURCE_EXTENDED in a patch that made getaddrinfo work
> correctly:
> http://git.postgresql.org/gitweb?p=postgresql.git;a=commit;h=1da6eb7fdaa79a93972c290174bd7136672a894f
> So taking it out may indeed have unpleasant side-effects.

I have read that patch, and it may well be that this might only be
needed on PA-RISC. I at least see that the comment written in
src/makefiles/Makefile.hpux is not completely correct. Probably true
for LP64, but not for IA64.

I hav now taken out the -D_XOPEN_SOURCE_EXTENDED and -lxnet requirements
and compiled postgres against BSD sockets. Now it passes both its
internal test suite *AND* the DBD::Pg test suite.

Side notes

env CC=cc CFLAGS="-Ae -z +Z +DD64 -O2" configure --prefix=/pro/pgsql \
--without-readline --without-ldap --with-openssl

currently doesn't work, as src/template/hpux and
src/makefiles/Makefile.hpux overrule these env vars, which means that
I still have to modify src/Makefile.global

Note again that I am on HP-UX 11.31 on Itanium (not PA-RISC) and that I
am compiling a 64bitall environment.

HP-UX 11.31/64 U rx2660/64 Itanium 2 9100/1710(2) ia64 4075 Mb
This is perl, v5.10.1 (*) built for IA64.ARCHREV_0-LP64
/pro/pgsql/bin/psql: ELF-64 executable object file - IA64
psql (PostgreSQL) 8.4.5

Below is the diff between what was generated by default on 8.4.5 and
after what I changed to make it work. Note that I did not alter either
the template not the specific original makefile to do so automatically.
I can (try to) do so if you would like to see how I would do that

After make, these are the essential diffs:
--8<---
diff -purd postgresql-8.4.5-org/config.status postgresql-8.4.5/config.status
--- postgresql-8.4.5-org/config.status 2010-12-20 11:52:19 +0100
+++ postgresql-8.4.5/config.status 2010-12-20 12:04:26 +0100
@@ -567,7 +567,7 @@ s,@enable_dtrace@,|#_!!_#|no,g
s,@CC@,|#_!!_#|cc -Ae,g
s,@CFLAGS@,|#_!!_#|-Ae -z +Z +DD64 -O2,g
s,@LDFLAGS@,|#_!!_#| -L/usr/local/ia64/lib -L/usr/lib/hpux64 -L/usr/contrib/X11R6/lib/hpux64 -s -L/usr/local/lib -L/usr/lib/X11R6 -L/usr/contrib/X11R6/lib ,g
-s,@CPPFLAGS@,|#_!!_#| -D_XOPEN_SOURCE_EXTENDED ,g
+s,@CPPFLAGS@,|#_!!_#| ,g
s,@ac_ct_CC@,|#_!!_#|,g
s,@EXEEXT@,|#_!!_#|,g
s,@OBJEXT@,|#_!!_#|o,g
@@ -981,8 +981,8 @@ s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_OFF_T\)
s,^\([ #]*\)[^ ]*\([ ]*HAVE_INT_TIMEZONE\)[ (].*,\1define\2 ,
s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_RETURN\)[ (].*,\1define\2 int ,
s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_ARG1\)[ (].*,\1define\2 int ,
-s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_ARG2\)[ (].*,\1define\2 struct sockaddr * ,
-s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_ARG3\)[ (].*,\1define\2 size_t ,
+s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_ARG2\)[ (].*,\1define\2 void * ,
+s,^\([ #]*\)[^ ]*\([ ]*ACCEPT_TYPE_ARG3\)[ (].*,\1define\2 int ,
s,^\([ #]*\)[^ ]*\([ ]*HAVE_CBRT\)[ (].*,\1define\2 1 ,
s,^\([ #]*\)[^ ]*\([ ]*HAVE_DLOPEN\)[ (].*,\1define\2 1 ,
s,^\([ #]*\)[^ ]*\([ ]*HAVE_FCVT\)[ (].*,\1define\2 1 ,
diff -purd postgresql-8.4.5-org/src/Makefile.global postgresql-8.4.5/src/Makefile.global
--- postgresql-8.4.5-org/src/Makefile.global 2010-12-20 11:52:19 +0100
+++ postgresql-8.4.5/src/Makefile.global 2010-12-20 12:05:17 +0100
@@ -199,8 +199,8 @@ DOCBOOK2MAN =

# Compilers

-CPP = cc -Ae -E
-CPPFLAGS = -D_XOPEN_SOURCE_EXTENDED
+CPP = cc -E
+CPPFLAGS =

ifdef PGXS
override CPPFLAGS := -I$(includedir_server) -I$(includedir_internal) $(CPPFLAGS)
@@ -211,7 +211,7 @@ override CPPFLAGS := -I$(top_builddir)/s
endif
endif # not PGXS

-CC = cc -Ae
+CC = cc
GCC =
SUN_STUDIO_CC = no
CFLAGS = -Ae -z +Z +DD64 -O2
diff -purd postgresql-8.4.5-org/src/Makefile.port postgresql-8.4.5/src/Makefile.port
--- postgresql-8.4.5-org/src/Makefile.port 2010-10-01 15:35:31 +0200
+++ postgresql-8.4.5/src/Makefile.port 2010-12-20 11:58:53 +0100
@@ -8,7 +8,7 @@ endif
# Using X/Open Networking Interfaces requires to link with libxnet.
# Without specifying this, bind(), getpeername() and so on don't work
# correctly in the LP64 data model.
-LIBS := -lxnet $(LIBS)
+#LIBS := -lxnet $(LIBS)

# Set up rpath so that the executables don't need SHLIB_PATH to be set.
# (Note: --disable-rpath is a really bad idea on this platform...)
diff -purd postgresql-8.4.5-org/src/include/pg_config.h postgresql-8.4.5/src/include/pg_config.h
--- postgresql-8.4.5-org/src/include/pg_config.h 2010-12-20 11:52:19 +0100
+++ postgresql-8.4.5/src/include/pg_config.h 2010-12-20 12:04:27 +0100
@@ -5,10 +5,10 @@
#define ACCEPT_TYPE_ARG1 int

/* Define to the type of arg 2 of 'accept' */
-#define ACCEPT_TYPE_ARG2 struct sockaddr *
+#define ACCEPT_TYPE_ARG2 void *

/* Define to the type of arg 3 of 'accept' */
-#define ACCEPT_TYPE_ARG3 size_t
+#define ACCEPT_TYPE_ARG3 int

/* Define to the return type of 'accept' */
#define ACCEPT_TYPE_RETURN int
diff -purd postgresql-8.4.5-org/src/makefiles/Makefile.hpux postgresql-8.4.5/src/makefiles/Makefile.hpux
--- postgresql-8.4.5-org/src/makefiles/Makefile.hpux 2010-10-01 15:35:31 +0200
+++ postgresql-8.4.5/src/makefiles/Makefile.hpux 2010-12-20 11:58:53 +0100
@@ -8,7 +8,7 @@ endif
# Using X/Open Networking Interfaces requires to link with libxnet.
# Without specifying this, bind(), getpeername() and so on don't work
# correctly in the LP64 data model.
-LIBS := -lxnet $(LIBS)
+#LIBS := -lxnet $(LIBS)

# Set up rpath so that the executables don't need SHLIB_PATH to be set.
# (Note: --disable-rpath is a really bad idea on this platform...)
diff -purd postgresql-8.4.5-org/src/template/hpux postgresql-8.4.5/src/template/hpux
--- postgresql-8.4.5-org/src/template/hpux 2010-10-01 15:35:31 +0200
+++ postgresql-8.4.5/src/template/hpux 2010-12-20 11:58:20 +0100
@@ -1,6 +1,6 @@
# $PostgreSQL: pgsql/src/template/hpux,v 1.16 2006/12/12 19:43:19 petere Exp $

-CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
+#CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"

if test "$GCC" != yes ; then
CC="$CC -Ae"
-->8---

--
H.Merijn Brand http://tux.nl Perl Monger http://amsterdam.pm.org/
using 5.00307 through 5.12 and porting perl5.13.x on HP-UX 10.20, 11.00,
11.11, 11.23 and 11.31, OpenSuSE 10.1, 11.0 .. 11.3 and AIX 5.2 and 5.3.
http://mirrors.develooper.com/hpux/ http://www.test-smoke.org/
http://qa.perl.org http://www.goldmark.org/jeff/stupid-disclaimers/

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Alvaro Herrera 2010-12-20 13:40:23 Re: BUG #5795: 9.0.2 PDF needs editing
Previous Message Maxim Boguk 2010-12-20 11:15:34 BUG #5797: Strange bug with hstore