You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Jeff Trawick <tr...@attglobal.net> on 2001/12/04 20:03:20 UTC

need script to install Apache DSOs?

On some platforms, we get some unexpected names for DSO files because
of the way libtool works.

While normally we expect mod_foo.so...

Tru64:   libmod_foo.so
AIX:     libmod_foo.a(libmod_foo.so.0)  
         (not just a name change; archive library is used)
HP-UX:   mod_foo.sl

What if we had a DSO installer which normally called
libool --mode=install but on some platforms did something special?
"make install" would need to use this for DSOs and apxs would need to
use this as well.

If we stick with the expected mod_foo.so usage we don't have to hack
up our docs or tweak the LoadModule statements we generate from apxs
or make install.

Comments, concerns?

-- 
Jeff Trawick | trawick@attglobal.net | PGP public key at web site:
       http://www.geocities.com/SiliconValley/Park/9289/
             Born in Roswell... married an alien...

[PATCH] script to install Apache DSOs

Posted by Jeff Trawick <tr...@attglobal.net>.
Jeff Trawick <tr...@attglobal.net> writes:

> On some platforms, we get some unexpected names for DSO files because
> of the way libtool works.
> 
> While normally we expect mod_foo.so...
> 
> Tru64:   libmod_foo.so
> AIX:     libmod_foo.a(libmod_foo.so.0)  
>          (not just a name change; archive library is used)
> HP-UX:   mod_foo.sl

With the new shell script in this patch, we have a place to fix-up
libtool-isms so that the normal LoadModule statement works.  This
version of the script fixes up the install on AIX, HP-UX, and Tru64.

Beyond the function in this patch, the next step is to have it
installed in prefix/build and teach apxs to use instdso when it
installs DSOs.

I have only tested this on AIX thus far.  I hesitate to test it much
further before people have a chance to comment on things they might
not like.

Have fun...

? build/instdso

#!/bin/sh
#
# instdso - install Apache DSO modules
#
# usually this just passes through to libtool but on a few
# platforms libtool doesn't install DSOs exactly like we'd want, 
# so more effort is required

ALLARGS=$*
LASTARG=$#
eval TARGETDIR=\$$argv$LASTARG
LASTARG=`expr $LASTARG - 1`
eval DSOARCHIVE=\$$argv$LASTARG
DSOBASE=`echo $DSOARCHIVE | sed s/\.la$//`
TARGET_NAME="$DSOBASE.so"

# special logic for systems where libtool doesn't install
# the DSO exactly like we'd want

SYS=`uname -s`
case $SYS in
    AIX)
        # on AIX, shared libraries remain in storage even when
        # all processes using them have exited; standard practice
        # prior to installing a shared library is to rm -f first
        CMD="rm -f $TARGETDIR/$TARGET_NAME"
        echo $CMD
        $CMD || exit $?
        CMD="cp .libs/lib$DSOBASE.so.0 $TARGETDIR/$TARGET_NAME"
        echo $CMD
        $CMD || exit $?
        ;;
    HP-UX)
        CMD="cp .libs/$DSOBASE.sl $TARGETDIR/$TARGET_NAME"
        echo $CMD
        $CMD || exit $?
        ;;
    OSF1)
        CMD="cp .libs/lib$DSOBASE.so $TARGETDIR/$TARGET_NAME"
        echo $CMD
        $CMD || exit $?
        ;;
    *)
        CMD=$ALLARGS
        echo $CMD
        $CMD || exit $?
        ;;
esac

exit 0

Index: build/special.mk
===================================================================
RCS file: /cvs/apache/httpd-2.0/build/special.mk,v
retrieving revision 1.16
diff -u -r1.16 special.mk
--- special.mk	2001/10/16 17:51:11	1.16
+++ special.mk	2001/12/06 17:43:14
@@ -68,7 +68,7 @@
 	if [ "x$$has_mod_so" = "xhas_mod_so" ]; then \
 		list='$(shared)'; \
 		for i in $$list; do \
-			$(SH_LIBTOOL) --mode=install cp $$i $(libexecdir); \
+			$(top_builddir)/build/instdso $(SH_LIBTOOL) $$i $(libexecdir); \
 		done; \
 	fi	

-- 
Jeff Trawick | trawick@attglobal.net | PGP public key at web site:
       http://www.geocities.com/SiliconValley/Park/9289/
             Born in Roswell... married an alien...