| Current File : //bin/sdci |
#!/bin/sh
##############################################################################
# sdci.sh: Shell Script Wrapper for SDCI
#
# $Id: sdci.sh,v 1.13 2014/11/04 08:18:59 RDA Exp $
# ARCS: $Header: /home/cvs/cvs/RDA_8/src/scripting/bin/sdci.sh,v 1.13 2014/11/04 08:18:59 RDA Exp $
#
# Copyright (c) 2002, 2016, Oracle and/or its affiliates. All rights reserved.
#
# Change History
# 20141104 MSC Eliminate letter range.
##############################################################################
# Detect the RDA software directory
if [ -z "$RDA_DIR" -o ! -d "$RDA_DIR" -o ! -f "$RDA_DIR/sdci.pl" ]
then
RDA_ALTER_RDA_DIR="RDA_DIR=$RDA_DIR"
export RDA_ALTER_RDA_DIR
unset RDA_DIR
RDA_PGM="$0"
if [ -h "$RDA_PGM" ]
then
RDA_DIR=`dirname "$RDA_PGM"`
RDA_PGM=`ls -l "$RDA_PGM" 2>/dev/null | sed -e 's/^.*-> //'`
expr "$RDA_PGM" : '\/' >/dev/null 2>&1 || RDA_PGM="$RDA_DIR/$RDA_PGM"
fi
RDA_DIR=`dirname "$RDA_PGM"`
fi
# Force Perl taint mode
if [ -z "$RDA_ALTER_PERL5OPT" ]
then
RDA_ALTER_PERL5DIR="PERL5DIR=$PERL5DIR"
RDA_ALTER_PERL5INC="PERL5INC=$PERL5INC"
RDA_ALTER_PERL5LIB="PERL5LIB=$PERL5LIB"
RDA_ALTER_PERL5OPT="PERL5OPT=$PERL5OPT"
RDA_ALTER_PERL_EXE="PERL_EXE=$PERL_EXE"
export RDA_ALTER_PERL5DIR RDA_ALTER_PERL5INC RDA_ALTER_PERL5LIB \
RDA_ALTER_PERL5OPT RDA_ALTER_PERL_EXE
fi
PERL5OPT='-T'
export PATH PERL5OPT
unset PERL5DIR
unset PERL5INC
unset PERL5LIB
# Detect if a compile engine must be used
if [ -r "./rda.cfg" ]
then
. "./rda.cfg"
SDCI_EXE="./${SDCI_EXE:-sdci.exe}"
if [ -n "$SDCI_ENG" -a -x "$RDA_DIR/engine/$SDCI_ENG" ]
then
SDCI_ENG="$RDA_DIR/engine/$SDCI_ENG"
"$SDCI_ENG" -e"CFG/B_NO_CHECK=1" -XUpgrade -- engine "$SDCI_EXE" "$SDCI_ENG"
fi
if [ -x "$SDCI_EXE" ]
then
export RDA_DIR
exec "$SDCI_EXE" "$@"
fi
elif [ -r "$RDA_DIR/engine/rda.cfg" ]
then
. "$RDA_DIR/engine/rda.cfg"
SDCI_EXE="$RDA_DIR/${SDCI_EXE:-sdci.exe}"
if [ -n "$SDCI_ENG" -a -x "$RDA_DIR/engine/$SDCI_ENG" ]
then
SDCI_ENG="$RDA_DIR/engine/$SDCI_ENG"
"$SDCI_ENG" -e"CFG/B_NO_CHECK=1" -XUpgrade -- engine "$SDCI_EXE" "$SDCI_ENG"
fi
if [ -x "$SDCI_EXE" ]
then
exec "$SDCI_EXE" "$@"
fi
fi
unset PERL5OPT
# Try the native Perl
if [ -n "$RDA_NATIVE_PERL" -a -x "$RDA_NATIVE_PERL" ]
then
PERL_EXE="$RDA_NATIVE_PERL"
elif [ -z "$RDA_NO_NATIVE" ]
then
PERL_CMD=`(unset LANG; LC_ALL=C type perl) 2>/dev/null`
PERL_EXE=`expr "${PERL_CMD}" : "perl is a tracked alias for \(.*\)"`
if [ -z "${PERL_EXE}" ]
then
PERL_EXE=`expr "$PERL_CMD" : "perl is hashed (\(.*\))"`
if [ -z "$PERL_EXE" ]
then
PERL_EXE=`expr "$PERL_CMD" : "perl is \(.*\)"`
fi
fi
fi
# Validate the local Perl
if [ -n "$PERL_EXE" ]
then
( ulimit -c 0
"$PERL_EXE" -T -e "die 'too old' if $] < 5.005; use strict"
) >/dev/null 2>&1
if [ $? -ne 0 ]
then
PERL_EXE=''
fi
fi
# Validate Applications Perl
if [ -z "$PERL_EXE" -a -n "$ADPERLPRG" ]
then
( ulimit -c 0
"$ADPERLPRG" -T -e "die 'too old' if $] < 5.005; use strict"
) >/dev/null 2>&1
if [ $? -eq 0 ]
then
PERL_EXE="$ADPERLPRG"
fi
fi
# Validate Perl in RDA .config file
if [ -z "$PERL_EXE" -a -r .config ]
then
. ./.config
( ulimit -c 0
"$PERL5DIR"/perl $PERL5INC -T -e "die 'too old' if $] < 5.005; use strict"
) >/dev/null 2>&1
if [ $? -eq 0 ]
then
PERL_EXE="$PERL5DIR"/perl
fi
fi
# Locate Perl
ORA_HOME="${IAS_ORACLE_HOME:-$ORACLE_HOME}"
if [ -z "$PERL_EXE" ]
then
# Locate Perl in the Oracle home
if [ -n "$ORA_HOME" ]
then
if [ -x "$ORA_HOME"/perl/bin/perl ]
then
PERL_EXE=`echo "$ORA_HOME"/perl/bin/perl`
PERL_LIB=`echo "$ORA_HOME"/perl/lib`
PERL_SHL=`echo "$ORA_HOME"/lib`
elif [ -x "$ORA_HOME"/perl/5*/bin/perl ]
then
PERL_EXE=`echo "$ORA_HOME"/perl/5*/bin/perl`
PERL_LIB=`echo "$ORA_HOME"/perl/5*/lib`
PERL_SHL=`echo "$ORA_HOME"/lib`
elif [ -x "$ORA_HOME"/Apache/perl/bin/perl ]
then
PERL_EXE=`echo "$ORA_HOME"/Apache/perl/bin/perl`
PERL_LIB=`echo "$ORA_HOME"/Apache/perl/lib`
PERL_SHL=`echo "$ORA_HOME"/lib`
elif [ -x "$ORA_HOME"/Apache/perl/5*/bin/perl ]
then
PERL_EXE=`echo "$ORA_HOME"/Apache/perl/5*/bin/perl`
PERL_LIB=`echo "$ORA_HOME"/Apache/perl/5*/lib`
PERL_SHL=`echo "$ORA_HOME"/lib`
elif [ -x "$ORA_HOME"/Apache/perl/5*/bin/*/perl ]
then
PERL_EXE=`echo "$ORA_HOME"/Apache/perl/5*/bin/*/perl`
PERL_LIB=`echo "$ORA_HOME"/Apache/perl/5*/lib`
PERL_SHL=`echo "$ORA_HOME"/lib`
fi
fi
# Locate Perl in OCM
if [ -z "$PERL_EXE" ]
then
# Locate OCM
CCR_PERL=''
if [ -d ../ccr/engines/*/perl ]
then
CCR_PERL=`echo ../ccr/engines/*/perl`
elif [ -n "$ORA_HOME" -a -d "$ORA_HOME"/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$ORA_HOME"/ccr/engines/*/perl`
elif [ -n "$ORA_HOME" -a \
-d "$ORA_HOME"/../oracle_common/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$ORA_HOME"/../oracle_common/ccr/engines/*/perl`
elif [ -n "$ORA_HOME" -a -d "$ORA_HOME"/../utils/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$ORA_HOME"/../utils/ccr/engines/*/perl`
elif [ -n "$MW_HOME" -a -d "$MW_HOME"/oracle_common/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$MW_HOME"/oracle_common/ccr/engines/*/perl`
elif [ -n "$MW_HOME" -a -d "$MW_HOME"/utils/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$MW_HOME"/utils/ccr/engines/*/perl`
elif [ -n "$WL_HOME" -a -d "$WL_HOME"/../oracle_common/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$WL_HOME"/../oracle_common/ccr/engines/*/perl`
elif [ -n "$WL_HOME" -a -d "$WL_HOME"/../utils/ccr/engines/*/perl ]
then
CCR_PERL=`echo "$WL_HOME"/../utils/ccr/engines/*/perl`
elif [ -d /usr/lib/ccr/engines/*/perl ]
then
CCR_PERL=`echo /usr/lib/ccr/engines/*/perl`
elif [ -n "${ORACLE_CONFIG_HOME}" ]
then
CCR_PROP="$ORACLE_CONFIG_HOME"/ccr/config/collector.properties
if [ -r "$CCR_PROP" ]
then
CCR_HOME=`grep -e "^ccr.binHome=" "$CCR_PROP" | cut -d= -f 2`
if [ -d "$CCR_HOME"/engines/*/perl ]
then
CCR_PERL=`echo "$CCR_HOME"/engines/*/perl`
fi
fi
fi
# Locate OCM Perl
if [ -n "$CCR_PERL" ]
then
if [ -x "$CCR_PERL"/bin/perl ]
then
PERL_EXE=`echo "$CCR_PERL"/bin/perl`
PERL_LIB=`echo "$CCR_PERL"/lib`
elif [ -x "$CCR_PERL"/5*/bin/*/perl ]
then
PERL_EXE=`echo "$CCR_PERL"/5*/bin/*/perl`
PERL_LIB=`echo "$CCR_PERL"`
fi
fi
fi
# Validate the Perl found
if [ -n "$PERL_EXE" ]
then
PERL5DIR=`dirname "$PERL_EXE"`
PERL5INC=''
if [ -d "$PERL_LIB" ]
then
for DIR in `find "$PERL_LIB" -type d -name auto -exec dirname '{}' \;`
do
PERL5INC="-I$DIR $PERL5INC"
done
fi
"$PERL_EXE" $PERL5INC -T -e "die 'too old' if $] < 5.005; use strict" \
>/dev/null 2>&1
if [ $? -ne 0 ]
then
PERL5DIR=''
elif [ -w . ]
then
echo "PERL5DIR='$PERL5DIR'" >.config
echo "PERL5INC='$PERL5INC'" >>.config
if [ -n "$PERL_SHL" ]
then
echo "PERL_SHL='$PERL_SHL'" >>.config
fi
fi
fi
if [ -z "$PERL5DIR" ]
then
if [ -z "$ORA_HOME" ]
then
echo "Error: ORACLE_HOME is not set."
echo "Please set your ORACLE_HOME."
else
echo "Error: Perl not found in the PATH or in known directory locations."
echo "Although the default SDCI engine requires Perl, compiled versions"
echo "without Perl requirements are available for major platforms. Please"
echo "download the platform-specific SDCI engine from My Oracle Support"
echo "and place it within the top directory of your RDA installation."
fi
exit 1
fi
fi
# Extend the shared library path
if [ -n "$PERL_SHL" ]
then
OS=`"$PERL_EXE" $PERL5INC -e 'print $^O;'`
if [ "$OS" = "aix" ]
then
RDA_ALTER_SHL="LIBPATH=$LIBPATH"
if [ -z "$LIBPATH" ]
then
LIBPATH="$PERL_SHL"
else
LIBPATH="$PERL_SHL:$LIBPATH"
fi
export LIBPATH RDA_ALTER_SHL
elif [ "$OS" = "hpux" ]
then
RDA_ALTER_SHL="SHLIB_PATH=$SHLIB_PATH"
if [ -z "$SHLIB_PATH" ]
then
SHLIB_PATH="$PERL_SHL"
else
SHLIB_PATH="$PERL_SHL:$SHLIB_PATH"
fi
export SHLIB_PATH RDA_ALTER_SHL
elif [ "$OS" = "darwin" ]
then
RDA_ALTER_SHL="DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
if [ -z "$DYLD_LIBRARY_PATH" ]
then
DYLD_LIBRARY_PATH="$PERL_SHL"
else
DYLD_LIBRARY_PATH="$PERL_SHL:$DYLD_LIBRARY_PATH"
fi
export DYLD_LIBRARY_PATH RDA_ALTER_SHL
else
RDA_ALTER_SHL="LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
if [ -z "$LD_LIBRARY_PATH" ]
then
LD_LIBRARY_PATH="$PERL_SHL"
else
LD_LIBRARY_PATH="$PERL_SHL:$LD_LIBRARY_PATH"
fi
export LD_LIBRARY_PATH RDA_ALTER_SHL
fi
fi
# Test if DBD::Oracle can be used
if [ -z "$RDA_NO_DBD_ORACLE" ]
then
"$PERL_EXE" $PERL5INC -T -e "use DBI; use DBD::Oracle;" >/dev/null 2>&1
if [ $? -ne 0 ]
then
RDA_NO_DBD_ORACLE=1
export RDA_NO_DBD_ORACLE
fi
fi
# Run the Perl script
if [ -h "$0" ]
then
NAM=`basename "$0" .sh`
if [ "$NAM" != "sdci" ] && expr "$NAM" : \
'[abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyz0-9]*$' \
>/dev/null 2>&1
then
exec "${PERL_EXE:-perl}" $PERL5INC -T "$RDA_DIR/sdci.pl" run "$NAM" "$@"
fi
fi
exec "${PERL_EXE:-perl}" $PERL5INC -T "$RDA_DIR/sdci.pl" "$@"