instdso.sh revision 4a13940dc2990df0a798718d3a3f9cf1566c2217
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#!/bin/sh
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# Licensed to the Apache Software Foundation (ASF) under one or more
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# contributor license agreements. See the NOTICE file distributed with
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# this work for additional information regarding copyright ownership.
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# The ASF licenses this file to You under the Apache License, Version 2.0
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# (the "License"); you may not use this file except in compliance with
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# the License. You may obtain a copy of the License at
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# http://www.apache.org/licenses/LICENSE-2.0
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# Unless required by applicable law or agreed to in writing, software
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# distributed under the License is distributed on an "AS IS" BASIS,
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# See the License for the specific language governing permissions and
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# limitations under the License.
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maeder#
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# instdso.sh - install Apache DSO modules
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder#
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maeder# we use this instead of libtool --install because:
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# 1) on a few platforms libtool doesn't install DSOs exactly like we'd
70e83495a9753d2a104a9869ac2a997ac30d05c1Christian Maeder# want (weird names, doesn't remove DSO first)
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maeder# 2) we never want the .la files copied, so we might as well copy
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder# the .so files ourselves
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederif test "$#" != "3"; then
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maeder echo "wrong number of arguments to instdso.sh"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder echo "Usage: instdso.sh SH_LIBTOOL-value dso-name path-to-modules"
21b18016469e574bd145ad07c7b0f02839677cc3Christian Maeder exit 1
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederfi
62d8627183cce49c052386186ad69c95b1aa3953Christian Maeder
62d8627183cce49c052386186ad69c95b1aa3953Christian MaederSH_LIBTOOL=`echo $1 | sed -e 's/^SH_LIBTOOL=//'`
e9490701e16d1e8abd995ef876d6f937da93b412Christian MaederDSOARCHIVE=$2
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian MaederDSOARCHIVE_BASENAME=`basename $2`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian MaederTARGETDIR=$3
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian MaederDSOBASE=`echo $DSOARCHIVE_BASENAME | sed -e 's/\.la$//'`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian MaederTARGET_NAME="$DSOBASE.so"
616b72452ce5a75ade1a11ccc2c9671b3444558eChristian Maeder
616b72452ce5a75ade1a11ccc2c9671b3444558eChristian MaederSYS=`uname -s`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederif test "$SYS" = "AIX"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederthen
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder # on AIX, shared libraries remain in storage even when
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder # all processes using them have exited; standard practice
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder # prior to installing a shared library is to rm -f first
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder CMD="rm -f $TARGETDIR/$TARGET_NAME"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder echo $CMD
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder $CMD || exit $?
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederfi
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian MaederCMD="$SH_LIBTOOL --mode=install cp $DSOARCHIVE $TARGETDIR/"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederecho $CMD
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder$CMD || exit $?
21b18016469e574bd145ad07c7b0f02839677cc3Christian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederif test "$SYS" = "OS/2"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederthen
722e8a91f69209ba0e99bf799c4989801d78cf16Christian Maeder # on OS/2, aplibtool --install doesn't copy the .la files & we can't
bc994dca195712fe9143e074ed479077f9bab75dChristian Maeder # rename DLLs to have a .so extension or they won't load so none of the
722e8a91f69209ba0e99bf799c4989801d78cf16Christian Maeder # steps below make sense.
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder exit 0
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederfi
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederif test -s "$TARGETDIR/$DSOARCHIVE_BASENAME"
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederthen
83b3260413a3b1b7dee1f9c4d3249dec994a875cMihai Codescu DLNAME=`sed -n "/^dlname=/{s/.*='\([^']*\)'/\1/;p;}" $TARGETDIR/$DSOARCHIVE_BASENAME`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder LIBRARY_NAMES=`sed -n "/^library_names/{s/library_names='\([^']*\)'/\1/;p;}" $TARGETDIR/$DSOARCHIVE_BASENAME`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder LIBRARY_NAMES=`echo $LIBRARY_NAMES | sed -e "s/ *$DLNAME//g"`
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederfi
7862e8fb34d79382e93b45ce894acdd928da8a51Christian Maeder
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maederif test -z "$DLNAME"
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maederthen
bb4d3b6e93db1495f02de46aff5076862e30517bChristian Maeder echo "Warning! dlname not found in $TARGETDIR/$DSOARCHIVE_BASENAME."
21b18016469e574bd145ad07c7b0f02839677cc3Christian Maeder echo "Assuming installing a .so rather than a libtool archive."
21b18016469e574bd145ad07c7b0f02839677cc3Christian Maeder exit 0
722e8a91f69209ba0e99bf799c4989801d78cf16Christian Maederfi
70e83495a9753d2a104a9869ac2a997ac30d05c1Christian Maeder
722e8a91f69209ba0e99bf799c4989801d78cf16Christian Maederif test -n "$LIBRARY_NAMES"
7862e8fb34d79382e93b45ce894acdd928da8a51Christian Maederthen
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder for f in $LIBRARY_NAMES
cf7e0d6750e408ddb47545d6b8349a70cf0b47afChristian Maeder do
62d8627183cce49c052386186ad69c95b1aa3953Christian Maeder rm -f $TARGETDIR/$f
62d8627183cce49c052386186ad69c95b1aa3953Christian Maeder done
62d8627183cce49c052386186ad69c95b1aa3953Christian Maederfi
62d8627183cce49c052386186ad69c95b1aa3953Christian Maeder
62d8627183cce49c052386186ad69c95b1aa3953Christian Maederif test "$DLNAME" != "$TARGET_NAME"
62d8627183cce49c052386186ad69c95b1aa3953Christian Maederthen
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder mv $TARGETDIR/$DLNAME $TARGETDIR/$TARGET_NAME
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maederfi
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maeder
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maederrm -f $TARGETDIR/$DSOARCHIVE_BASENAME
e9490701e16d1e8abd995ef876d6f937da93b412Christian Maederrm -f $TARGETDIR/$DSOBASE.a
a608d5645ae434cdb7a1555057007301072f447eChristian Maederrm -f $TARGETDIR/lib$DSOBASE.a
a608d5645ae434cdb7a1555057007301072f447eChristian Maederrm -f $TARGETDIR/lib$TARGET_NAME
a608d5645ae434cdb7a1555057007301072f447eChristian Maeder
a608d5645ae434cdb7a1555057007301072f447eChristian Maederexit 0
03db3efebb43c12041915cb7ffcc172b191208f9Christian Maeder