1) usr/src/cmd/postgres/postgresql-8.3/Makefile.sfw

a) What's the point of the "noxx-install:" target? If you accept the 
fact that building libpqxx is now an integral, essential, mandatory & 
dependent part of building postgres (as emphasized by the proto-fix 
errors), then the target is pointless. If libpqxx must be built for the 
package(s) to be successfuly created, then why build postgres without it?

b) You repeat dependencies in these 2 targets:

install: install32 install64 installxx
installxx: install32 install64

So nightly runs "make -f Makefile.sfw install" it builds install32, 
install64 then installxx which repeats install32 & install64. Most 
compenents (i.e. compilation) will not be repeated, but some will e.g. 
the copying of files & the install-sfw scripts (which often produce 
errors if run more than once).

Even if this doesn't lead to errors/warnings it is a waste of cycles, 
and can potentialy lead to endless loops. You need a better target 
hierarchy.

Again, if you accept that libpqxx is now an integral part of building 
postgres, then the following is better:

install: installxx
installxx: install32 install64



2) /usr/postgres/8.3/lib/libpqxx-2.6.9.so (32bit and 64bit)

If I run ldd on this library in your proto area, it fails to satisfy the 
dependency on libpq.so.5:

$ ldd libpqxx-2.6.9.so
         libpq.so.5 =>    (file not found)
         libCstd.so.1 =>  /usr/lib/libCstd.so.1
         libCrun.so.1 =>  /usr/lib/libCrun.so.1
         libc.so.1 =>     /lib/libc.so.1
         /usr/lib/cpu/sparcv8plus/libCstd_isa.so.1
         libm.so.2 =>     /lib/libm.so.2
         /platform/SUNW,Sun-Fire-480R/lib/libc_psr.so.1

This is because the RUNPATH does not include /usr/postgres/8.3/lib when 
it's built:

$ elfdump libpqxx-2.6.9.so |grep RUNPATH
        [7]  RUNPATH           0x12607 
/ws/onnv-tools/SUNWspro/SS11/lib/rw7:/ws/onnv-tools/SUNWspro/SS11/lib/v8plus:/ws/onnv-tools/SUNWspro/SS11/lib:/opt/SUNWspro/lib/v8plus:/opt/SUNWspro/lib:/usr/ccs/lib:/lib:/usr/lib

As a result, this library can't be used by customers without them first 
declaring LD_LIBRARY_PATH (something they shouldn't have to do when 
using our products).

Look at one of the other postgres libraries as an example:

$ ldd libecpg.so | grep libpq
         libpq.so.5 =>    /usr/postgres/8.3/lib/libpq.so.5

$ elfdump libecpg.so | grep RUNPATH
        [7]  RUNPATH           0xd4f 
/usr/sfw/lib:/usr/postgres/8.3/lib

In fact, the RUNPATH associated with libpqxx-2.6.9.so is a mess! Why 
does it contain all those directories specific to our build machines?

I think you need to tweak the LD_OPTIONS in 
usr/src/cmd/postgres/postgresql-8.3/libpqxx/Makefile.sfw



Bjorn Munch wrote:
> I have now created a new webrev.  I have moved the libpqxx directory
> under usr/src/cmd/postgres/postgresql-8.3 and do the build there as
> part of the postgresql-8.3 build.
> 
> It should be possible to build libpqq also as part of 8.4 by creating
> a softlink; the PGMAJVER variable will direct where it gets installed
> and where it gets libpq from.
> 
> The build target noxx-install is meant for building manually without
> libpqxx, e.g. when building for upload to postgresql.org.
> 
> I have also addressed some of Jim's comments about the packages.
> 
> New webrev in the same location as the old one:
> 
> http://cr.opensolaris.org/~bjornmu/pqxx-webrev/                               
>                                             
> nightly is currently running.
> 
> NB I'm away from Thursday morning, will be back Monday.
> 
> - Bjorn

Reply via email to