Re: Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL - Mailing list pgsql-bugs

From Peter Eisentraut
Subject Re: Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL
Date
Msg-id Pine.LNX.4.30.0103131859360.2274-100000@peter.localdomain
Whole thread Raw
In response to Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL  (Justin Clift <jclift@iprimus.com.au>)
Responses Re: Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL
List pgsql-bugs
Justin Clift writes:

> When --with-openssl=<the path to my openssl dir> is given to configure
> on Solaris 8 INTEL, the compilation errors in :

This is an OpenSSL namespace problem on some platforms (Solaris, Unixware
so far).  Nothing we can really do about it.

> Next problem is that running 'gmake check' expects to find the new
> 'postgres' file in the normal PATH, not in the temporary installation
> PATH.  I deduce this from the ./src/test/regress/log/initdb.log file
> which complains about not being able to find the 'postgres' file in the
> installation location.

> The program 'postgres' is needed by initdb but was not found in
> the directory '/opt/postgresql71/bin'.  Check your installation.

Odd.  The initdb program first tries the path that itself is in and then
the path that it is *supposed* to be in:

if echo "$0" | grep '/' > /dev/null 2>&1
then
        # explicit dir name given
        self_path=`echo $0 | sed 's,/[^/]*$,,'`       # (dirname command is not portable)
else
        # look for it in PATH ('which' command is not portable)
        for dir in `echo "$PATH" | sed 's/:/ /g'`
        do
                # empty entry in path means current dir
                [ -z "$dir" ] && dir='.'
                if [ -f "$dir/$CMDNAME" ]
                then
                        self_path="$dir"
                        break
                fi
        done
fi

The regression test script should always invoke the first case ($0 starts
contains '/').  Apparently, in your case something went wrong there and it
tries looking for it in PATH.  Can you see why that is the case?  (E.g,
run gmake check SHELL='/bin/sh -x' or sh -x initdb.)

> A third problem and solution is this misleading error message :

> After investigating a bit futher, the reason for the error message was
> really that I didn't have the path to the openssl library files in
> LD_LIBRARY_PATH :
>
> $ initdb
> The program '/opt/postgresql71/bin/postgres' needed by initdb does not
> belong to PostgreSQL version 7.1beta5.  Check your installation.
>
> $ cd /opt/postgresql71/bin
> $ ./postgres -version
> ld.so.1: ./postgres: fatal: libssl.so.0: open failed: No such file or
> directory
> Killed

The problem here is that we can't really distinguish this failure from
other failures (such as not implementing the --version option), so I don't
know how to make the error message better.  I suppose we could capture the
stderr and print it to the screen.  In fact, I'll try that.  However,
another way to view this problem is that the OpenSSL libraries weren't
linked properly.

> In the regression test side of things, Solaris 8 INTEL seems be having
> troubles with handling int8 types.  Not sure if this is a known
> problem.  The int8 tests failed with error messages like :
>
>   INSERT INTO INT8_TBL VALUES('123','4567890123456789');
> + ERROR:  int8 value out of range: "4567890123456789"

Ugh.  Did configure detect a working 64 bit integer?  HAVE_LONG_INT_64 and
HAVE_LONG_LONG_INT_64 should be defined in config.h.

>     if [ -e $dir/Makefile ]; then \
>         make -C $dir clean; \
>     fi; \
> done
> /bin/sh: test: argument expected

I see.  'test -e' is known to be missing on Solaris.  Will fix.

--
Peter Eisentraut      peter_e@gmx.net       http://yi.org/peter-e/

pgsql-bugs by date:

Previous
From: Alexander Klimov
Date:
Subject: plperl with 5.7.0
Next
From: Tom Lane
Date:
Subject: Re: Various bugs with PG7.1 8th March snapshot on Solaris 8 INTEL