#!/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" "$@"