[I'm not subscribed to openssl-dev, please cc me on any replies]

All-

OpenSSL's platform "knowledge" continues to improve, such that shared
libraries were built by 0.9.6d when I configured it on
hppa1.1-hp-hpux10.20.

There's a very minor problem in the install process, though.  OpenSSL
wants to install shared libraries mode 644 on all UNIX platforms, but
HP-UX 9.x (I don't have 9.x anymore, but I remember the behavior) and 10.x
require that shared libraries be executable.  I don't have 11.x so I don't
know what the behavior is there, but since 11.x is ELF-based rather than
SOM-based, I would guess it's *not* required there.  Someone with access
to 11.x should confirm that, though.

In addition, for reasons that I've forgotten, it's actually a performance
hit for all applications using the library if the library is writeable
by anyone (even root).  That may not be true for more recent HP-UX
versions, but for at least some of them, the loader apparently does some
additional (likely unnecessary) work if it detects the shared library is
writeable.

For those two reasons, shared libraries on HP-UX through at least 10.x
should be installed mode 555.  The patch below my sig accomplishes that,
though there may very well be a better way of going about it.  I've tested
it on a couple platforms (HP-UX, IRIX, Tru64 UNIX), but I haven't tested
it on platforms that don't build shared libraries at all (I don't think I
have any of those, though perhaps AIX 4.x would be one).

Also, one question.  I've noted that on most of the platforms OpenSSL's
build process tends to do shared library versioning in a manner that is
very Linux and Solaris-like, even if that isn't the manner that the vendor
uses for that platform.  For example, OpenSSL generates shared libraries
on HP-UX that look like:

        libcrypto.sl@ -> libcrypto.sl.0
        libcrypto.sl.0@ -> libcrypto.sl.0.9.6
        libcrypto.sl.0.9.6*

Even though HP-UX shared libraries are versioned without any library
suffix at all:

-r-xr-xr-x   1 bin        bin        1863680 Nov 10  1999 libc.1*
lrwxr-xr-x   1 root       sys             15 Jun 10  1996 libc.sl@ -> /usr/lib/libc.1
lrwxr-xr-t   1 root       sys             16 Jun 10  1996 libc_r.sl@ -> 
/usr/lib/libc.sl
-r-xr-xr-x   1 bin        bin        1093632 Feb 21  1999 libcl.1*
lrwxr-xr-x   1 root       sys             16 Jun 10  1996 libcl.sl@ -> /usr/lib/libcl.1
-r-xr-xr-x   1 bin        bin         520192 May 30  1996 libcma.1*
lrwxr-xr-x   1 root       sys              8 Jun 10  1996 libcma.sl@ -> libcma.1
-r-xr-xr-x   1 bin        bin         339968 Feb 20  1998 libcur_colr.1*
lrwxr-xr-x   1 root       sys             22 Jun 10  1996 libcur_colr.sl@ -> 
/usr/lib/libcur_colr.1
lrwxr-xr-x   1 root       sys             20 Nov  6  1999 libcurses.0@ -> 
/usr/lib/libcurses.1
-r-xr-xr-x   1 bin        bin         196608 Jun 12  1997 libcurses.1*
lrwxr-xr-x   1 root       sys             21 Jun 10  1996 libcurses.sl@ -> 
/usr/lib/libxcurses.1



Similarly, on IRIX, the OSF-style internal library versioning (very similar
to the vendor library versioning on Tru64 UNIX) isn't used, and the build
procedure just uses the Solaris/Linux style SONAME versioning.

This leads me to ask why OpenSSL's build procedure does it this way,
rather than doing shared library versioning in a manner that more closely
resembles how the vendor libraries are versioned for a particular
platform.

Thanks!

Tim
-- 
Tim Mooney                              [EMAIL PROTECTED]
Information Technology Services         (701) 231-1076 (Voice)
Room 242-J6, IACC Building              (701) 231-8541 (Fax)
North Dakota State University, Fargo, ND 58105-5164


diff -ur openssl-0.9.6d.orig/Makefile.org openssl-0.9.6d/Makefile.org
--- openssl-0.9.6d.orig/Makefile.org    Thu May  9 18:05:53 2002
+++ openssl-0.9.6d/Makefile.org Thu Jun 27 15:34:02 2002
@@ -655,8 +655,13 @@
                        if [ -f "$$i" -o -f "$$i.a" ]; then \
                        (       echo installing $$i; \
                                if [ "$(PLATFORM)" != "Cygwin" ]; then \
-                                       cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
-                                       chmod 644 
$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+                                       if [ X"$(SHLIB_TARGET)" = X"hpux-shared" ]; 
+then \
+                                               cp $$i 
+$(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
+                                               chmod 555 
+$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+                                       else \
+                                               cp $$i 
+$(INSTALL_PREFIX)$(INSTALLTOP)/lib; \
+                                               chmod 644 
+$(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \
+                                       fi; \
                                else \
                                        c=`echo $$i | sed 's/^lib/cyg/'`; \
                                        cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; 
\
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to