From: | Giles Lean <giles(at)nemeton(dot)com(dot)au> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: HP-UX shared library installation is incorrect |
Date: | 2002-12-23 06:02:53 |
Message-ID: | 1073.1040623373@hpchs.cup.hp.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I wrote:
> My recommendation (with a pinch of salt, since I'm still not a HP-UX
> toolchain guru) is to add
>
> +h lib$(NAME)$(DLSUFFIX).$SO_MAJOR_VERSION)
>
> to the HP-UX LINK.shared line in src/Makefile.shlib, and to change the
> way the symlinks run as well, so that libpq.sl is a link to the latest
> version of libpq that is installed.
OK, I've done this. A patch is below, against 7.3.1 source. I've
sent it here instead of to the -patches list, since:
o here is where the discussion was
o so far I've only tested with the HP ANSI C compiler on 11.11, not
with gcc or on other HP-UX releases.
I can test other releases and probably with gcc, but if someone gets
to it before me that would be just fine. I probably won't until the
new year.
Checking the 32 bit install:
$ ls -l libpq*
-rw-r--r-- 1 root users 158556 Dec 22 21:22 libpq.a
lrwxr-xr-x 1 root users 10 Dec 22 21:22 libpq.sl@ -> libpq.sl.3
-r-xr-xr-x 1 root users 143360 Dec 22 21:22 libpq.sl.3*
$ /usr/ccs/bin/ldd psql
/usr/lib/libm.2 => /usr/lib/libm.2
/usr/lib/libnsl.1 => /usr/lib/libnsl.1
/usr/lib/libxti.2 => /usr/lib/libxti.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libc.2 => /usr/lib/libc.2
/usr/lib/libdld.2 => /usr/lib/libdld.2
/usr/lib/libgen.2 => /usr/lib/libgen.2
/usr/lib/libc.2 => /usr/lib/libc.2
../../../src/interfaces/libpq/libpq.sl.3 => /opt/pgsql-7.3.1/lib/libpq.sl.3
/usr/lib/libnsl.1 => /usr/lib/libnsl.1
There's still that "../../../src/.." in the output, but the library
has been found correctly with the version number, which is what is
most important.
I ran configure with a --prefix=/opt/pgsql-7.3.1 argument, but most
clients will link against /opt/pgsql/lib so their paths won't have the
version number.
The 64 bit libraries are similar:
$ ls -l libpq*
-rw-r--r-- 1 root users 219202 Dec 22 21:38 libpq.a
lrwxr-xr-x 1 root users 10 Dec 22 21:38 libpq.sl@ -> libpq.sl.3
-r-xr-xr-x 1 root users 131024 Dec 22 21:38 libpq.sl.3*
$ /usr/ccs/bin/ldd psql
libpq.sl.3 => /opt/pgsql-7.3.1/lib/pa20_64/libpq.sl.3
libc.2 => /lib/pa20_64/libc.2
libxcurses.1 => /lib/pa20_64/libxcurses.1
libgen.2 => /lib/pa20_64/libgen.2
libdl.1 => /lib/pa20_64/libdl.1
libnsl.1 => /lib/pa20_64/libnsl.1
libm.2 => /lib/pa20_64/libm.2
libnsl.1 => /lib/pa20_64/libnsl.1
libdl.1 => /usr/lib/pa20_64/libdl.1
libdl.1 => /usr/lib/pa20_64/libdl.1
libxti.2 => /usr/lib/pa20_64/libxti.2
Again, the 64 bit binaries have linked to the versioned library. As
a bonus the ldd output looks better too. :-)
Regards,
Giles
*** src/Makefile.shlib-orig Wed Oct 9 09:21:54 2002
--- src/Makefile.shlib Sun Dec 22 21:07:43 2002
***************
*** 126,134 ****
endif
ifeq ($(PORTNAME), hpux)
! # HPUX doesn't believe in version numbers for shlibs
! shlib := lib$(NAME)$(DLSUFFIX)
! LINK.shared = $(LD) -b +b $(libdir)
endif
ifeq ($(PORTNAME), irix5)
--- 126,133 ----
endif
ifeq ($(PORTNAME), hpux)
! shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)
! LINK.shared = $(LD) +h $(shlib) -b +b $(libdir)
endif
ifeq ($(PORTNAME), irix5)
From | Date | Subject | |
---|---|---|---|
Next Message | Greg Copeland | 2002-12-23 13:07:07 | Re: [HACKERS] v7.3.1 Bundled and Released ... |
Previous Message | Giles Lean | 2002-12-23 04:47:33 | Re: HP-UX shared library installation is incorrect |