PG 9.0 Solaris compile error on Sparc
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(
cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration: getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration: ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration: ucred_free
cc: acomp failed for fe-connect.c
That is with Sun Studio 12. This is with gcc:
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-fwrapv -pthreads -pthreads -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -fPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
fe-connect.c: In function `PQconnectPoll':
fe-connect.c:1789: error: `ucred_t' undeclared (first use in this function)
fe-connect.c:1789: error: (Each undeclared identifier is reported only once
fe-connect.c:1789: error: for each function it appears in.)
fe-connect.c:1789: error: `ucred' undeclared (first use in this function)
fe-connect.c:1792: warning: implicit declaration of function `getpeerucred'
fe-connect.c:1792: error: `sock' undeclared (first use in this function)
fe-connect.c:1800: warning: implicit declaration of function `ucred_geteuid'
fe-connect.c:1805: warning: implicit declaration of function `ucred_free'
gmake[3]: *** [fe-connect.o] Error 1
Platform:
-bash-3.00$ uname -a
SunOS suzuka 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Blade-1000
Configured with:
./configure --with-perl --with-python --without-readline
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
Dave Page <dpage@pgadmin.org> writes:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(
cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration: getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration: ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration: ucred_free
cc: acomp failed for fe-connect.c
That code wouldn't be getting compiled if configure hadn't found
getpeerucred present, so I'll bet the problem is just lack of the
#include file that declares the above symbols. A bit of grepping
of /usr/include should give you the answer.
regards, tom lane
Dave Page píše v po 19. 07. 2010 v 13:32 +0100:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(
Unfortunately, I had to stop them :(. Sorry.
I cannot remember this bug. However for Solaris 10 is better to use
SunStudio 11. I see lot of bugs in SunStudio 12 and also postgresql with
dtrace is not possible compile with sunstudio 12 due some optimization.
It is bug in solaris 10 which is not fixed(backported) yet.
Anyway it is strange. I used following switches without any problem:
./configure --without-readline --enable-cassert --enable-debug
--enable-nls --enable-integer-datetimes --with-perl --with-python \
--with-tcl --with-krb5 --with-gssapi --with-openssl --with-pam \
--enable-thread-safety --with-includes=/usr/include/kerberosv5:/usr/sfw/include --with-libs=/usr/sfw/lib --enable-dtrace --with-libxml --with-libxslt
I see also that you use S10U3 which is not optimal for PostgreSQL. You
need to have S10U4 (at least for kerberos and dtrace).
Anyway it looks like that #include <ucred.h> is missing somewhere.
Zdenek
Show quoted text
cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration: getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration: ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration: ucred_free
cc: acomp failed for fe-connect.cThat is with Sun Studio 12. This is with gcc:
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels -fno-strict-aliasing
-fwrapv -pthreads -pthreads -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -fPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
fe-connect.c: In function `PQconnectPoll':
fe-connect.c:1789: error: `ucred_t' undeclared (first use in this function)
fe-connect.c:1789: error: (Each undeclared identifier is reported only once
fe-connect.c:1789: error: for each function it appears in.)
fe-connect.c:1789: error: `ucred' undeclared (first use in this function)
fe-connect.c:1792: warning: implicit declaration of function `getpeerucred'
fe-connect.c:1792: error: `sock' undeclared (first use in this function)
fe-connect.c:1800: warning: implicit declaration of function `ucred_geteuid'
fe-connect.c:1805: warning: implicit declaration of function `ucred_free'
gmake[3]: *** [fe-connect.o] Error 1Platform:
-bash-3.00$ uname -a
SunOS suzuka 5.10 Generic_118833-33 sun4u sparc SUNW,Sun-Blade-1000Configured with:
./configure --with-perl --with-python --without-readline
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
I wrote:
That code wouldn't be getting compiled if configure hadn't found
getpeerucred present, so I'll bet the problem is just lack of the
#include file that declares the above symbols. A bit of grepping
of /usr/include should give you the answer.
... but looking in src/backend/libpq/auth.c suggests that fe-connect
is lacking
#if defined(HAVE_STRUCT_CMSGCRED) || defined(HAVE_STRUCT_FCRED) || defined(HAVE_STRUCT_SOCKCRED)
#include <sys/uio.h>
#include <sys/ucred.h>
#endif
#ifdef HAVE_UCRED_H
#include <ucred.h>
#endif
regards, tom lane
On Mon, Jul 19, 2010 at 2:03 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
I wrote:
That code wouldn't be getting compiled if configure hadn't found
getpeerucred present, so I'll bet the problem is just lack of the
#include file that declares the above symbols. A bit of grepping
of /usr/include should give you the answer.... but looking in src/backend/libpq/auth.c suggests that fe-connect
is lacking#if defined(HAVE_STRUCT_CMSGCRED) || defined(HAVE_STRUCT_FCRED) || defined(HAVE_STRUCT_SOCKCRED)
#include <sys/uio.h>
#include <sys/ucred.h>
#endif
#ifdef HAVE_UCRED_H
#include <ucred.h>
#endif
Adding that fixes it, though I also needed to change sock to
conn->sock on line 1801, somewhat like:
http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/interfaces/libpq/fe-connect.c?r1=1.400&r2=1.401
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
On Mon, Jul 19, 2010 at 1:56 PM, Zdenek Kotala <Zdenek.Kotala@sun.com> wrote:
Dave Page píše v po 19. 07. 2010 v 13:32 +0100:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(Unfortunately, I had to stop them :(. Sorry.
I cannot remember this bug. However for Solaris 10 is better to use
SunStudio 11. I see lot of bugs in SunStudio 12 and also postgresql with
dtrace is not possible compile with sunstudio 12 due some optimization.
It is bug in solaris 10 which is not fixed(backported) yet.
<grumble>
Anyway it is strange. I used following switches without any problem:
./configure --without-readline --enable-cassert --enable-debug
--enable-nls --enable-integer-datetimes --with-perl --with-python \
--with-tcl --with-krb5 --with-gssapi --with-openssl --with-pam \
--enable-thread-safety --with-includes=/usr/include/kerberosv5:/usr/sfw/include --with-libs=/usr/sfw/lib --enable-dtrace --with-libxml --with-libxslt
Hmm. Perl fails here, as it seems to be 32 bit. OpenSSL fails, due to
lack of libcryto, and TCL seems to fail due to lack of headers (though
I didn't look very hard). I'm assuming these issues are largely due to
my inexperience with Solaris, or are there some development packages
or similar I should be downloading?
I see also that you use S10U3 which is not optimal for PostgreSQL. You
need to have S10U4 (at least for kerberos and dtrace).
Hmm, I'll have to see about upgrading it without annoying other users.
Thanks!
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
Dave Page píše v po 19. 07. 2010 v 14:24 +0100:
On Mon, Jul 19, 2010 at 1:56 PM, Zdenek Kotala <Zdenek.Kotala@sun.com> wrote:
Dave Page píše v po 19. 07. 2010 v 13:32 +0100:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(Unfortunately, I had to stop them :(. Sorry.
I cannot remember this bug. However for Solaris 10 is better to use
SunStudio 11. I see lot of bugs in SunStudio 12 and also postgresql with
dtrace is not possible compile with sunstudio 12 due some optimization.
It is bug in solaris 10 which is not fixed(backported) yet.<grumble>
Anyway it is strange. I used following switches without any problem:
./configure --without-readline --enable-cassert --enable-debug
--enable-nls --enable-integer-datetimes --with-perl --with-python \
--with-tcl --with-krb5 --with-gssapi --with-openssl --with-pam \
--enable-thread-safety --with-includes=/usr/include/kerberosv5:/usr/sfw/include --with-libs=/usr/sfw/lib --enable-dtrace --with-libxml --with-libxsltHmm. Perl fails here, as it seems to be 32 bit.
I see, you compile it 64bits. 64bits perl does not exist - no PL/PgPerl
OpenSSL fails, due to
lack of libcryto, and TCL seems to fail due to lack of headers (though
I didn't look very hard).
You need to set RPATH. Openssl is in /usr/sfw/lib (/usr/sfw/lib/64)
You need this for 32bit
'LDFLAGS' => '-R/usr/sfw/lib',
'LDFLAGS_SL' => '-R/usr/sfw/lib',
'TCLSH' => '/usr/sfw/bin/tclsh8.3'
and 'LDFLAGS' => '-R/usr/sfw/lib/64', for 64bit.
I'm assuming these issues are largely due to
my inexperience with Solaris, or are there some development packages
or similar I should be downloading?
No you need only compiler and full Solaris 10 installation.
Show quoted text
I see also that you use S10U3 which is not optimal for PostgreSQL. You
need to have S10U4 (at least for kerberos and dtrace).Hmm, I'll have to see about upgrading it without annoying other users.
Thanks!
On Mon, Jul 19, 2010 at 2:36 PM, Zdenek Kotala <Zdenek.Kotala@sun.com> wrote:
OpenSSL fails, due to
lack of libcryto, and TCL seems to fail due to lack of headers (though
I didn't look very hard).You need to set RPATH. Openssl is in /usr/sfw/lib (/usr/sfw/lib/64)
You need this for 32bit
'LDFLAGS' => '-R/usr/sfw/lib',
'LDFLAGS_SL' => '-R/usr/sfw/lib',
'TCLSH' => '/usr/sfw/bin/tclsh8.3'and 'LDFLAGS' => '-R/usr/sfw/lib/64', for 64bit.
Ah, OK - thanks.
I'm assuming these issues are largely due to
my inexperience with Solaris, or are there some development packages
or similar I should be downloading?No you need only compiler and full Solaris 10 installation.
And knowledge of the odd places these things end up in on Solaris :-p
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
On mån, 2010-07-19 at 13:32 +0100, Dave Page wrote:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration:
getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration:
ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration:
ucred_free
cc: acomp failed for fe-connect.c
I think you're compiling 9.1. :-)
On Mon, Jul 19, 2010 at 4:00 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
On mån, 2010-07-19 at 13:32 +0100, Dave Page wrote:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration:
getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration:
ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration:
ucred_free
cc: acomp failed for fe-connect.cI think you're compiling 9.1. :-)
Yeah, sorry - forgot we forked already :-p
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company
On mån, 2010-07-19 at 13:32 +0100, Dave Page wrote:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration: getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration: ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration: ucred_free
cc: acomp failed for fe-connect.c
Should be fixed now.
On Mon, Jul 19, 2010 at 7:53 PM, Peter Eisentraut <peter_e@gmx.net> wrote:
On mån, 2010-07-19 at 13:32 +0100, Dave Page wrote:
I'm working on setting up a new buildfarm member as we don't seem to
have any active Solaris ones :-(cc -Xa -m64 -mt -mt -D_REENTRANT -D_THREAD_SAFE
-D_POSIX_PTHREAD_SEMANTICS -KPIC -DFRONTEND -DUNSAFE_STAT_OK -I.
-I../../../src/include -I../../../src/port -I../../../src/port
-DSO_MAJOR_VERSION=5 -c -o fe-connect.o fe-connect.c
"fe-connect.c", line 1789: undefined symbol: ucred_t
"fe-connect.c", line 1789: undefined symbol: ucred
"fe-connect.c", line 1792: warning: implicit function declaration: getpeerucred
"fe-connect.c", line 1792: undefined symbol: sock
"fe-connect.c", line 1800: warning: implicit function declaration: ucred_geteuid
"fe-connect.c", line 1805: warning: implicit function declaration: ucred_free
cc: acomp failed for fe-connect.cShould be fixed now.
Thanks - looks good.
--
Dave Page
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise Postgres Company