Re: HP-UX shared library installation is incorrect

Поиск
Список
Период
Сортировка
От Giles Lean
Тема Re: HP-UX shared library installation is incorrect
Дата
Msg-id 1073.1040623373@hpchs.cup.hp.com
обсуждение исходный текст
Ответ на Re: HP-UX shared library installation is incorrect  (Giles Lean <giles@nemeton.com.au>)
Ответы Re: HP-UX shared library installation is incorrect  (Giles Lean <giles@nemeton.com.au>)
Список 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
probablywon'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)




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Giles Lean
Дата:
Сообщение: Re: HP-UX shared library installation is incorrect
Следующее
От: Greg Copeland
Дата:
Сообщение: Re: v7.3.1 Bundled and Released ...