All pastes #255086 Raw Edit

Miscellany

public shellscript v1 · immutable
#255086 ·published 2006-11-22 16:55 UTC
rendered paste body
# +--------------------------------------------------------------------------+# | Copyright 1993 - 2002 Rational Software Corporation. All Rights Reserved.|# | This software contains proprietary and confidential information of       |# | Rational and its suppliers. Use, disclosure or reproduction is           |# | prohibited without the prior express written consent of Rational.        |# +--------------------------------------------------------------------------+# @(#)$Revision: 1.190 $  $Date: 06/18/2002 12:06:33 $##  MODULE SPECIFICATION#  Name:#    post_install##  Subsystem:#    install##  Description:  (for all but Rose)#    fix up .Rational_Locations for subsystems.#    fix up imports#    fix up compiler key in all switch files#    run apex set_location, remodel, compile, link#  For Rose:#    Create the configuration files.#  For AXI as make_tests:#    Make test programs.#    So user can just do relocations, allow 'dont_build' as an argument#------------------------------------------------------------------------#-----------------------------------------------------------------usage() {#-----------------------------------------------------------------    status=$1    echo  "Usage: $command [<options>]    <options>:"    case $command in    post_install )        echo "    -help or -h        Show this usage message.    -unfreeze or -uf        If post_install encounters a frozen view it will unfreeze it first.        This is useful to re-run post_install for an Apex layered product        to upgrade it to use a newer, yet compatible release of Apex.    -askunfreeze or -auf        Same as the -unfreeze option except that the installer is asked        if they wish to unfreeze each view.    -install_crypt or -ic        If there are any encrypted components, decrypt and install them.    -install_paches or -ip        If there are any patches in ${disk_install_dir:-$install_dir}        then use this option to install these patches.        If there is a post_patch file, run it.    -patch <patch_id>        Used to install new subsystem views where the description of these        views needs to be in $TARGET_ARCH/prod_desc.<patch_id> file.NOTE:    The -unfreeze and -askunfreeze options have no effect if    $product_name has no views    or the views that are shipped with it have not been frozen."        ;;    make_tests )        echo "    -help or -h        Show this usage message.    dont_build        Used to prevent compiling and linking the demonstration clients.See also:    Ada X Interface Installation Guide, Installation Verfication."        ;;    esac    exit $status}#------------------------------------------------------------------------set_home_vars() {#------------------------------------------------------------------------# Check/set product home var and APEX_HOME (if product is a layered product).    if [ -z "$prod_home" ]    then        prod_home=`get_var INST_HOMEDIR`    fi    PROD_HOME=$prod_home    if [ -n "$home_var" ]    then        eval val=\$$home_var        if [ -z "$val" ]        then            eval $home_var=$PROD_HOME        fi        export $home_var        case $home_var in        APEX_VW_HOME|APEX_LX_HOME|APEX_RT_HOME )            APEX_EMBEDDED_HOME=$PROD_HOME            export APEX_EMBEDDED_HOME            ;;        esac    fi    if [ -n "$prod_base" ]    then        APEX_BASE=$prod_base        export APEX_BASE    fi    set_flexlm_version    flex_dir=$prod_base/cots/flexlm.$flexlm_version/$ARCH    if [ -d $flex_dir ]    then        PATH=$flex_dir:$PATH        export PATH    fi    apex_layered_product=${apex_layered_product:-no}    if [ $apex_layered_product = no ]    then        return    fi    # At this point we are installing either Apex, Summit or a layered product.    set_apex_home    # Make sure that we have PATHs to where we need to run things from    # and that the appropriate architecture is set.    # Final path setting stuff... include directories touched by architecture.    _dirs="$prod_home/bin  $prod_home/$ARCH/bin"    if [ $product != apex  -a  -n "$APEX_HOME" ]    then        _dirs="$APEX_HOME/bin $APEX_HOME/$ARCH/bin $_dirs"    fi    for _dir in $_dirs    do        if [ -d $_dir ]        then            PATH=$_dir:$PATH        fi    done    export PATH}#------------------------------------------------------------------------tell_about_steps() {#------------------------------------------------------------------------    echo "$SEPThis part of the installation process will do the final steps needed tocomplete the installation of $product_name $banner_version."    press_cr}#------------------------------------------------------------------------just_say_yes() {#------------------------------------------------------------------------    for y in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25    do        echo yes    done}#------------------------------------------------------------------------install_patch_now() {#------------------------------------------------------------------------    patch_name=`$BASENAME $patch_program`    test -x ./$patch_name || $CHMOD u+x $patch_name 2>/dev/null    show_patch_description no-more    # Check if this patch install program supports -auto_commit.    if $GREP DO_AUTO_COMMIT $patch_name >/dev/null    then        echo        echo "Installing patch $patch_id..."        ./$patch_name -auto_commit && return        echo        echo Error encountered while installing patch $patch_id.        return    fi    # It does not, so install patch and then run with -commit option.    echo    $ECHON "Installing patch $patch_id...$NOCR"    if just_say_yes | ./$patch_name >> $patch_log 2>&1    then        echo Done.        if [ -x $install_dir/patches/$patch_name ]        then            $ECHON "Committing patch $patch_id...$NOCR"            $install_dir/patches/$patch_name -commit >> $patch_log 2>&1            echo Done.        fi    else        echo        echo Error encountered while installing patch $patch_id.        echo Messages have been recorded in:        echo "  $patch_log"    fi}#------------------------------------------------------------------------extract_pid_from_install() {#------------------------------------------------------------------------    eval `grep "^PID=" $patch_inst`    echo $PID}#------------------------------------------------------------------------set_patch_list() {#------------------------------------------------------------------------    # First, look for any loose patch files in the install directory.    # their own PID directory.    for patch_inst in \        $install_dir/install_????????_?? \        $install_dir/install_?????????_?    do        test -f $patch_inst || continue        pid=`(extract_pid_from_install)`        test -n "$pid" || continue        num_patches=`$EXPR $num_patches + 1`        patch_list="$patch_list$pid $install_dir"    done    # Now check for patches in patch PID directories in these 2 locations:    for pdir in $disk_install_dir $install_dir    do        for patch_dir in $pdir/????????-?? $pdir/?????????-?        do            if [ -d $patch_dir ]            then                pid=`$BASENAME $patch_dir`                if [ "$pdir" = "$disk_install_dir" ]                then                    # This patch has already been copied to the install area.                    if [ -d $install_dir/$pid ]                    then                        continue                    fi                fi                for ip_file in $patch_dir/install_*                do                    if [ -f $ip_file ]                    then                        num_patches=`$EXPR $num_patches + 1`                        patch_list="$patch_list$pid $patch_dir"                        break                    fi                done            fi        done    done}#------------------------------------------------------------------------not_in_list() {#------------------------------------------------------------------------# Check if arg1 in arg2..argN (the list).# If it is, return false.# If not in the list, return true.    _i_=$1    shift    for _j_ in $*    do        if [ "$_i_" = "$_j_" ]        then            unset _i_ _j_            return 1        fi    done    unset _i_ _j_    return 0}#------------------------------------------------------------------------sort_patch_list() {#------------------------------------------------------------------------# Sort the list of patches so that any required patches install before# the patch that requires it.  To this, go through the list of patches# and extract the REQ_PID settings.  Some of them will require a series id# or a specific patch number.  Will need to determine the patch id for each# series id.    n=0    unset pid_seq_list    set -- $patch_list    while [ $# -gt 0 ]    do        patch_id=$1        patch_dir=$2        shift 2        for patch_inst in $patch_dir/install_*        do            test -f $patch_inst && break            continue 2        done        n=`expr $n + 1`        pid_seq_list="$pid_seq_list $n"        eval patch_dir$n=$patch_dir        eval patch_id$n=$patch_id        patch_date=`echo $patch_id | cut -c1-8`        eval patch_date$n=$patch_date        unset sid SERIES_ID        eval `grep "^SERIES_ID=" $patch_inst`        if [ -n "$SERIES_ID" ]        then            for sid in $SERIES_ID            do                break            done            eval patch_sid$n=$sid        fi        # Set the required id list for this patch.        eval `grep "^REQ_PID.*=" $patch_inst`        if [ -n "$REQ_PID1" ]        then            req_pid=$REQ_PID1            unset REQ_PID1        else            eval `grep "^REQ_SERIES=" $patch_inst`            if [ -n "$REQ_SERIES" ]            then                req_pid=`echo "$REQ_SERIES" | awk '{print $3,$1,$2}'`                unset REQ_SERIES            fi        fi        r=1        unset reqs        while [ -n "$req_pid" ]        do            first_req=true second_req=false third_req=false            for req in $req_pid            do                case $req in                [1-9]????????-[0-9]|[1-9]???????-[0-9][0-9] )                    reqs="$reqs $req"                    ;;                * )                    if $first_req                    then                        reqs="$reqs $req"                        first_req=false                        second_req=true                    elif $second_req                    then                        second_req=false                        third_req=true                    elif $third_req                    then                        third_req=false                        first_req=true                    fi                    ;;                esac            done            r=`expr $r + 1`            eval req_pid=\$REQ_PID$r            unset REQ_PID$r        done        if [ -n "$reqs" ]        then            eval patch_req$n=\$reqs        fi    done    # Convert patch req_ids to their patch dates.    for n in $pid_seq_list    do        eval patch_req=\$patch_req$n        if [ -n "$patch_req" ]        then            unset reqs            for req in $patch_req            do                case $req in                [1-9]????????-[0-9]|[1-9]???????-[0-9][0-9] )                    patch_date=`echo $req | cut -c1-8`                    reqs="$reqs $patch_date"                    for k in $pid_seq_list                    do                        eval pdk=\$patch_date$k                        if [ "$pdk" = "$patch_date" ]                        then                            eval pd$patch_date=$k                            break                        fi                    done                    continue                    ;;                esac                # Lookup the patch date for this series dependency.                for k in $pid_seq_list                do                    eval sid=\$patch_sid$k                    if [ "$sid" = "$req" ]                    then                        eval patch_date=\$patch_date$k                        reqs="$reqs $patch_date"                        break                    fi                done                eval pd$patch_date=$k            done            eval patch_req$n=\$reqs        fi    done    # Assemble a new list.  Insert any required patches ahead of the    # current patch unless it is already in the new list.    unset n_list    for n in $pid_seq_list    do        eval patch_req=\$patch_req$n        if [ -n "$patch_req" ]        then            for req in $patch_req            do                eval pdn=\$pd$req                if [ -n "$pdn" ]                then                    if not_in_list $pdn $n_list                    then                        n_list="$n_list $pdn"                    fi                fi            done        fi        if not_in_list $n $n_list        then            n_list="$n_list $n"        fi    done    unset patch_list    for n in $n_list    do        eval patch_id=\$patch_id$n        eval patch_dir=\$patch_dir$n        patch_list="$patch_list $patch_id $patch_dir"    done}#------------------------------------------------------------------------sed_patch_desc() {#------------------------------------------------------------------------    echo    if [ $num_patches -gt 1 ]    then        echo "$patch_num of $num_patches: Description of patch $patch_id:"    else        echo "Description of patch $patch_id:"    fi    $SED -e 's?^?   ?' $1}#------------------------------------------------------------------------show_patch_description() {#------------------------------------------------------------------------    test "$shown_patch_desc" = yes && return    if [ "$1" = more ]    then         sed_patch_desc $patch_description | more    else         sed_patch_desc `$BASENAME $patch_description`    fi    shown_patch_desc=yes}#------------------------------------------------------------------------run_post_patch() {#------------------------------------------------------------------------# Check for post_patch script and run it if it exists.# Check for patches under disk_install_dir or install_dir.    patch_log=$install_dir/install.patch.log    if [ -f $install_dir/post_patch ]    then        # If post_patch runs post_install, check for recursion.        POST_PATCH=`get_var POST_PATCH`        if [ "$POST_PATCH" != STARTED ]        then            separator            put_var POST_PATCH STARTED            . $install_dir/post_patch            put_var POST_PATCH COMPLETED        fi    fi    if [ -n "$PID" ]    then        # Currently installing a patch, return to avoid recursion.        return    fi    if [ -f $ARCH/disk_install_dir ]    then        . $ARCH/disk_install_dir    fi    echo    num_patches=0    set_patch_list    case "$num_patches" in    0 )        return        ;;    1 )        echo "Found 1 $product_name patch to install."        ;;    * )        echo "Found $num_patches $product_name patches to install."        sort_patch_list        ;;    esac    patch_num=0    set -- $patch_list    while [ $# -gt 0 ]    do        patch_id=$1        patch_dir=$2        shift 2        patch_num=`$EXPR $patch_num + 1`        if [ -f patches/$patch_id ]        then            echo            echo Patch $patch_id has already been installed.            continue        fi        _pid=`echo $patch_id | $SED -e "s?-?_?"`        patch_program=`$LS $patch_dir/install*$_pid 2>/dev/null`        if [ -z "$patch_program" ]        then            echo            echo Patch $patch_id cannot be installed. \                 The install script is missing.            continue        fi        shown_patch_desc=no        patch_description=$patch_dir/description.$patch_id        if [ ! -f $patch_description ]        then            $SED -e "1,/^#DESCRIPTION/d" \                 -e '/^#END_DESCRIPTION/,$d' \                 -e 's/^#     //' \                $patch_program > $patch_dir/description.$patch_id        fi        if [ -f $patch_dir/optional ]        then            show_patch_description more            get_yn "Would you like to install patch $patch_id?" yes            if [ $result = no ]            then                echo "Will not install patch $patch_id."                echo "If you want to install it later you can run:"                echo "    % ./$command -ip"                continue            fi        fi        if [ ! -s $patch_log ]        then            echo "Ignore any messages in this log about committing or restoringpatches since they have already been committed by post_install.$SEP" > $patch_log            $CHMOD a+w $patch_log        fi        if [ "$patch_dir" = "$install_dir" ]        then            install_patch_now        else            ( cd $patch_dir ; install_patch_now )        fi    done}#------------------------------------------------------------------------run_pre_apexinit_patch() {#------------------------------------------------------------------------    if [ -n "$PID" ]    then        # Currently installing a patch, return to avoid recursion.        return    fi    patch_sub_dir=pre_apexinit    if [ ! -d $patch_sub_dir ]    then        return    fi    num_patches=0    for patch_dir in $patch_sub_dir/?????????-?    do        for ip_file in $patch_dir/install_*        do            if [ -f $ip_file ]            then                num_patches=`$EXPR $num_patches + 1`                pid=`$BASENAME $patch_dir`                patch_list="$patch_list$pid $patch_dir"                break            fi        done    done    case "$num_patches" in    0 )        return        ;;    1 )        echo        echo "Found 1 $product_name patch to install before"        echo "running apexinit."        ;;    * )        echo        echo "Found $num_patches $product_name patches to install before"        echo "running apexinit."        sort_patch_list        ;;    esac    patch_log=$install_dir/install.patch.log    patch_num=0    set -- $patch_list    while [ $# -gt 0 ]    do        patch_id=$1        patch_dir=$2        shift 2        patch_num=`$EXPR $patch_num + 1`        shown_patch_desc=no        patch_description=$patch_dir/description.$patch_id        patch_program=`$LS $patch_dir/install*$_pid 2>/dev/null`        if [ ! -f $patch_description ]        then            $SED -e "1,/^#DESCRIPTION/d" \                 -e '/^#END_DESCRIPTION/,$d' \                 -e 's/^#     //' \                $patch_program > $patch_dir/description.$patch_id        fi        if [ -f $patch_dir/optional ]        then            show_patch_description more            get_yn "Would you like to install patch $patch_id?" yes            if [ $result = no ]            then                echo "Will not install patch $patch_id."                echo "If you want to install it later you can run:"                echo "    % ./$command -ip"                continue            fi        fi        if [ ! -s $patch_log ]        then            echo "Ignore any messages in this log about committing or restoringpatches since they have already been committed by post_install.$SEP" > $patch_log            $CHMOD a+w $patch_log        fi        if [ "$patch_dir" = "$install_dir" ]        then            install_patch_now        else            ( cd $patch_dir ; install_patch_now )        fi    done}#------------------------------------------------------------------------cmp_move_file() {#------------------------------------------------------------------------    if cmp -s $2 $1 >/dev/null    then        echo okay.        return $FALSE    else        $MV $1 $2        echo fixed.        return $TRUE    fi}#------------------------------------------------------------------------location_not_set() {#------------------------------------------------------------------------    $ECHON "  Checking .Rational_Location: $NOCR"    if _loc=`is_a_link $1/.Rational_Location`    then        if [ "$_loc" = "$ss_path" ]        then            return $FALSE        else            return $TRUE        fi    else        return $TRUE    fi}#------------------------------------------------------------------------warn_of_missing_model() {#------------------------------------------------------------------------    logit warn "Cannot remodel this view--this Apex $2 model does not exist:"    logit cont "  $3"    logit cont "You need to install the base Apex $1 $2 Subsystems."}#------------------------------------------------------------------------check_ss_view_key() {#------------------------------------------------------------------------# Check that the BUILD_KEY or COMPILER_KEY exists.# If one is not specified, return true.# Warn installer if it does not exist.    set -- 1 `$EGREP "COMPILER_KEY:|BUILD_KEY:" $Switches`    if [ $# -lt 3 ]    then        return $TRUE    fi    _key_name=$2    _key=$3    if [ -d "$_key" ]    then        return $TRUE    fi    # If this is an Ada view and it imports LRM, check the LRM    # switch file for the COMPILER_KEY.    if [ "$layer_lang" = ada ]    then        _key_name=COMPILER_KEY        lrm_view=`$GREP /lrm.ss/ $view_path/Imports/Description.cfg`        lrm_switches=$lrm_view/Policy/Switches        if [ -f "$lrm_switches" ]        then            set -- 1 `$GREP "COMPILER_KEY:" $lrm_switches`            if [ $# -eq 3 ]            then                _lrm_key=$3                if [ -d "$_lrm_key" ]                then                    $ECHON "  Checking compiler key switch: $NOCR"                    $SED -e "s?COMPILER_KEY:.*?COMPILER_KEY: $_lrm_key?" \                         $Switches > $temp                    cmp_move_file $temp $Switches                    return $TRUE                fi            fi        fi    fi    case $_key_name in    B* ) _key_name=BUILD_KEY ;;    C* ) _key_name=COMPILER_KEY ;;    esac    logit warn "Cannot remodel this view--the $_key_name does not exist:"    logit cont "  $_key"    logit cont "Skipping $ss_name/$view_name"    return $FALSE}#------------------------------------------------------------------------set_chk_asis_asis95() {#------------------------------------------------------------------------    if [ -s $APEX_HOME/.asis_version ]    then        asis83_ver=`$CAT $APEX_HOME/.asis_version`        chk_asis=asis.ss    else        chk_asis=    fi    if [ -s $APEX_HOME/.asis95_version ]    then        asis95_ver=`$CAT $APEX_HOME/.asis95_version`        chk_asis95=asis.ada95.ss    else        chk_asis95=    fi}#------------------------------------------------------------------------set_apex_pver_etc() {#------------------------------------------------------------------------    if [ $product = apex ]    then        apex_ver=$product_version        apex_pver=$version_patch    elif [ -n "$APEX_HOME" ]    then        if [ -f $APEX_HOME/.apex_version ]        then            apex_ver=`$CAT $APEX_HOME/.apex_version`            apex_version=$apex_ver            apex_pl=`$CAT $APEX_HOME/.patch_level 2>/dev/null`            case $apex_pl in            [b-z] )                apex_pver=${apex_ver}$apex_pl                ;;            * )                apex_pver=$apex_ver                ;;            esac            set_chk_asis_asis95        fi    fi}#------------------------------------------------------------------------set_check_lists() {#------------------------------------------------------------------------    if [ -n "$check_lists_set" ]    then        return    fi    # Check Ada 83 subsystems    for ss in \        apex_ada.ss \        checker_utilities.ss \        code_rule_checker.ss \        vads_exec.ss    do        if [ -d $prod_base/ada/$ss/. ]        then            ada83_check_list="$ada83_check_list $ss"        fi    done    # Check both Ada 95 and Ada 83 subsystems    for ss in \        $chk_asis \        $chk_asis95 \        lrm.ss \        posix.ss \        predefined.ss \        pure.ss \        pure_api.ss \        rational.ss \        rts_trace.ss \        rts_vads_exec.ss \        stack_trace.ss \        vads_compatibility.ss \        vads_compatibility_static.ss    do        if [ -d $prod_base/ada/$ss/. ]        then            common_check_list="$common_check_list $ss"        fi    done    # Check Ada 95 subsystems        # distributed_systems.ss        # information_systems.ss    for ss in \        numerics.ss \        systems_programming.ss \        real_time_systems.ss    do        if [ -d $prod_base/ada/$ss/. ]        then            ada95_check_list="$ada95_check_list $ss"        fi    done    check_lists_set=yes}#------------------------------------------------------------------------check_ss_imports() {#------------------------------------------------------------------------# Substitute imports for the ones installed with Apex.    set_check_lists    if [ "$layer_dialect" = ada95 ]    then        ss_check_list="$common_check_list $ada95_check_list"    else        ss_check_list="$common_check_list $ada83_check_list"    fi    for ss in $ss_check_list    do        for ss_arch in \            $ss/${ARCH_OS}.ada95.thread.relaxed \            $ss/${ARCH_OS}.ada95.thread \            $ss/${ARCH_OS}.ada95.relaxed \            $ss/${ARCH_OS}.ada95.aio \            $ss/${ARCH_OS}.ada95 \            $ss/${ARCH_OS}.ada83.thread \            $ss/${ARCH_OS}.ada83.aio \            $ss/${ARCH_OS}.ada83        do            case $ss_arch in            asis.ss* )                a_view=$prod_base/$layer_lang/$ss_arch.$asis83_ver.rel                ;;            asis.ada95.ss* )                a_view=$prod_base/$layer_lang/$ss_arch.$asis95_ver.rel                ;;            * )                a_view=$prod_base/$layer_lang/$ss_arch.$apex_ver.rel                    ;;            esac            # Look to see if a_view's are installed.            if [ ! -d $a_view ]            then                continue            fi            # Replace it with a_view if one in there does not exist.            if c_view=`$GREP "/$ss_arch\." $import_file`            then                if [ -n "$c_view" ]                then                    $ECHON "    Checking $ss import: $NOCR"                    $SED -e "s?.*/$ss_arch.*?$a_view?" \                         $import_file > $temp                    cmp_move_file $temp $import_file                    break                fi            fi        done    done}#------------------------------------------------------------------------customize_imports() {#------------------------------------------------------------------------    echo "  Checking imports ..."    import_file=$view_path/Imports/Description.cfg    $ECHON "    Checking base location in imports: $NOCR"    # Set the base location    $SED -e "s?%%APEX_BASE%%?$prod_base?g" \         -e "s?.*/base/$layer_lang?$prod_base/$layer_lang?g" \         -e "s?/sierra/products/base/?$prod_base/?g" \         -e "s?/aloha/products/base/?$prod_base/?g" \        $import_file > $temp    cmp_move_file $temp $import_file    if [ -s $view_path/Imports/Mutual_Description.cfg ]    then        mutual_file=$view_path/Imports/Mutual_Description.cfg        $ECHON "    Checking base location in mutual imports: $NOCR"        $SED -e "s?%%APEX_BASE%%?$prod_base?g" \             -e "s?.*/base/$layer_lang?$prod_base/$layer_lang?g" \             -e "s?/sierra/products/base/?$prod_base/?g" \             -e "s?/aloha/products/base/?$prod_base/?g" \            $mutual_file > $temp        cmp_move_file $temp $mutual_file    else        mutual_file=    fi    if [ $product = apex ]    then        e_cpp_comp=" "    else        if [ "$layer_lang" = ada ]        then            check_ss_imports        fi    fi    if [ $check_sw_imp = yes ]    then        if $GREP -v "^#" $import_file | $EGREP "/sierra|/ned"        then            echo more $import_file >> $install_dir/sierra_ned        fi        if [ -n "$mutual_file" ]        then            if $GREP -v "^#" $mutual_file | $EGREP "/sierra|/ned"            then                echo more $mutual_file >> $install_dir/sierra_ned            fi        fi    fi}#------------------------------------------------------------------------customize_switches() {#------------------------------------------------------------------------    Switches=$view_path/Policy/Switches    if [ "$layer_dialect" = "$layer_lang" ]    then        arch_key=$ARCH_OS    else        arch_key=${ARCH_OS}_$layer_dialect    fi    $ECHON "  Checking view property switches: $NOCR"    $SED -e "s?/sierra/products/base/?$prod_base/?g" \         -e "s?/aloha/products/base/?$prod_base/?g" \         $view_properties > $temp    set -- 1 `$GREP MODEL: $temp`    if [ -n "$3" ]    then        if [ ! -d $3 ]        then            # Model not installed, remove.            $GREP -v "MODEL:" $temp > $temp.2            $MV $temp.2 $temp        fi    fi    cmp_move_file $temp $view_properties    if [ -f $view_path/Policy/TestMate.sw ]    then        $ECHON "  Checking TestMate switches: $NOCR"        $SED -e "s?%%APEX_BASE%%?$prod_base?g" \             -e "s?/sierra/products/base/?$prod_base/?g" \             -e "s?/aloha/products/base/?$prod_base/?g" \        $view_path/Policy/TestMate.sw > $temp        cmp_move_file $temp $view_path/Policy/TestMate.sw    fi    if [ -f $ss_path/Policy/Taskmgmt.sw ]    then        $ECHON "  Checking Summit switches: $NOCR"        $SED -e "s?%%APEX_BASE%%?$prod_base?g" \             -e "s?/sierra/products/base/?$prod_base/?g" \             -e "s?/aloha/products/base/?$prod_base/?g" \             -e "s?/all\.rel/?/$view_name/?g" \             -e "s?/all\.wrk/?/$view_name/?g" \        $ss_path/Policy/Taskmgmt.sw > $temp        cmp_move_file $temp $ss_path/Policy/Taskmgmt.sw    fi    # Determine if the latest migrate patch build key is installed.    if [ -z "$MIGRATE" ]    then        if [ -d $prod_base/c++/keys/$ARCH_OS.$cpp_base_version.migrate ]        then            MIGRATE=$cpp_base_version.migrate        elif [ -d $prod_base/c++/keys/$ARCH_OS.$apex_pver.migrate ]        then            MIGRATE=$apex_pver.migrate        else            MIGRATE=$apex_ver.migrate        fi    fi    # Determine if the latest C++ patch build key is installed.    if [ -z "$BUILD_KEY" ]    then        if [ -d $prod_base/c++/keys/standard.$cpp_base_version ]        then            BUILD_KEY=$prod_base/c++/keys/standard.$cpp_base_version        elif [ -d $prod_base/c++/keys/standard.$apex_pver ]        then            BUILD_KEY=$prod_base/c++/keys/standard.$apex_pver        else            BUILD_KEY=$prod_base/c++/keys/standard.$apex_ver        fi    fi    # Determine if the latest C++ compiler is installed.    if [ "$layer_lang" = c++  -a  -z "$e_sienna_home" ]    then        set -- 1 `$GREP SIENNA_HOME: $Switches |                  $SED -e 's?:? ?g' -e "s?/[^ ]*/base/?$prod_base/?"`        if [ -n "$3" ]        then            if [ ! -d "$3" ]            then                # C++ compiler not installed.                e_sienna_home="-e s?SIENNA_HOME:.*?SIENNA_HOME:nil?"            fi        fi    fi    if [ "$product" = axi ]    then        unset del_alt_key    else        del_alt_key="-e /^ALTERNATE_KEY:/d"    fi    if [ "${skip_cpp_home:-no}" = yes ]    then        unset e_cpp_comp    elif [ "$layer_lang" = c++  -a  -z "$e_cpp_comp" ]    then        if [ -d $prod_base/c++/model.ss/$ARCH_OS.$cpp_base_version.rel ]        then            cpp_model=$prod_base/c++/model.ss/$ARCH_OS.$cpp_base_version.rel        elif [ -d $prod_base/c++/model.ss/$ARCH_OS.$apex_pver.rel ]        then            cpp_model=$prod_base/c++/model.ss/$ARCH_OS.$apex_pver.rel        elif [ -d $prod_base/c++/model.ss/$ARCH_OS.$apex_ver.rel ]        then            cpp_model=$prod_base/c++/model.ss/$ARCH_OS.$apex_ver.rel        fi        if [ -f $cpp_model/Policy/Switches ]        then            cpp_sw_file=$cpp_model/Policy/Switches            comp_key=`$GREP "CPP_COMPILER_HOME:" $cpp_sw_file |                      $AWK '{print $2}'`            if [ -n "$comp_key" ]            then                e_cpp_comp="-e s?CPP_COMPILER_HOME:.*?CPP_COMPILER_HOME:$comp_key?"            fi        fi    fi    $ECHON "  Checking view switches: $NOCR"    $SED -e "s?%%APEX_BASE%%?$prod_base?g" \         -e "s?/sierra/products/apex.*.dev/?$APEX_HOME/?g" \         -e "s?/aloha/products/apex_embedded.*.dev/?$prod_home/?g" \         -e "s?/[^ ]*/base/?$prod_base/?g" \         -e "s?%%APEX_VER%%?$apex_ver?g" \         -e "s?%%ARCH_VER%%?$arch_key.$apex_ver?g" \         -e "s?/keys/$ARCH_OS\..*.migrate?/keys/$arch_key.$MIGRATE?" \         -e "s?/keys/$ARCH_OS\.[0-9\.]*\$?/keys/$arch_key.$apex_ver?" \         -e "s?/key.ss/$arch_key\.[0-9\.]*.rel?/key.ss/$arch_key.$apex_ver.rel?" \         -e "s?BUILD_KEY:.*/c++/keys/standard\..*?BUILD_KEY: $BUILD_KEY?" \         -e "/^RCI_TARGET_DIRECTORY:/d" \         $del_alt_key $e_sienna_home $e_cpp_comp \         -e "/^ALIGNMENT:/d" -e 's?:nil$?: nil?' -e "s?:/?: /?" \         $Switches > $temp    cmp_move_file $temp $Switches    if [ $check_sw_imp = yes ]    then        if $GREP -v "^#" $Switches $view_properties |           $EGREP "/sierra/|/aloha/|/ned/|/accts/"        then            echo more $Switches >> $install_dir/sierra_ned        fi    fi    $RM -f $view_path/.Rational/Compilation/Compiler_Key.times}#------------------------------------------------------------------------customize_dependency() {#------------------------------------------------------------------------# Check the RELEASE_NAME in the Apex LP Ada dependency files.# Make sure the posix lib release name is valid for the release of Apex.    if [ "$layer_lang" != ada  -o  "$skip_dependency" = yes ]    then        return    fi    if [ "$product" = apex  -o  "$apex_layered_product" != yes ]    then        # No need for Apex or non-layered products of Apex.        skip_dependency=yes        return    fi    if [ -z "$pdss" ]    then        pdss=$prod_base/ada/predefined.ss        if [ -f $APEX_HOME/.ada_base_version ]        then            ada_bv=`$CAT $APEX_HOME/.ada_base_version`        else            ada_bv=$apex_ver        fi        if [ -f $pdss/$ARCH_OS.$ada_bv.rel/libposix.a ]        then            NEW_ADA83_RN=$ARCH_OS.$ada_bv.rel        fi        if [ -f $pdss/${ARCH_OS}.ada95.$ada_bv.rel/libposix.a ]        then            NEW_ADA95_RN=$ARCH_OS.$ada_bv.rel        fi        if [ -z "${NEW_ADA83_RN}${NEW_ADA83_RN}" ]        then            # Cannot find posix replacements.            skip_dependency=yes            return        fi    fi    if [ "$layer_dialect" = ada95 ]    then        if [ -z "$NEW_ADA95_RN" ]        then            # No Ada 95 replacement            return        fi        THIS_RELEASE_NAME=$NEW_ADA83_RN    else        if [ -z "$NEW_ADA83_RN" ]        then            # No Ada 83 replacement            return        fi        THIS_RELEASE_NAME=$NEW_ADA83_RN    fi    for dependency in `/bin/ls $view_path/*.dependency 2>/dev/null`    do        # Check for posix RELEASE_NAME        set -- 1 `$GREP "API_NAME => posix,.* RELEASE_NAME => " $dependency`        if [ $# -le 1 ]        then            continue        fi        while [ $# -ge 3 ]        do            if [ "$1" = RELEASE_NAME ]            then                RELEASE_NAME=$3                break            fi            shift        done        _lib=`$BASENAME $dependency .dependency`        if [ -z "$RELEASE_NAME" ]        then            # No RELEASE_NAME to customize            echo "  Checking posix $_lib dependencies: okay."            continue        fi        if [ "$RELEASE_NAME" = "$THIS_RELEASE_NAME" ]        then            # Posix lib dependency okay            echo "  Checking posix $_lib dependencies: okay."            continue        fi        # Do not match, need to fix.        $ECHON "  Checking posix $_lib dependencies: $NOCR"        $SED -e "s?$RELEASE_NAME?$THIS_RELEASE_NAME?" \            $dependency > $temp        cmp_move_file $temp $dependency    done}#------------------------------------------------------------------------freeze_view() {#------------------------------------------------------------------------# Freeze .rel views only.    if [ "$do_freeze" = yes  -a  "$view_type" = rel ]    then        FREEZE="$FREEZE $view_path"        n_freeze=`$EXPR $n_freeze + 1`    fi}#------------------------------------------------------------------------customize_view() {#------------------------------------------------------------------------    echo    echo "$SEP"    ss_path=$ss_base/$layer_lang/$ss_name    view_path=$ss_path/$view_name    if [ "$layer_arch" = $ARCH  -o  "$layer_arch" = share ]    then        :    else        logit warn "Skipping $ss_name/$view_name"        logit cont "The $command command needs to be run on $SYSTEM_NAME machine,"        logit cont "if you have not already done so."        return    fi    case $layer_dialect in        ada95 )            fmt_mesg "Ada 95 subsystem $ss_name                view $view_name"            comp_files=".ada"            ;;        ada* )            fmt_mesg "Ada 83 subsystem $ss_name                view $view_name"            comp_files=".ada"            ;;        c++ )            fmt_mesg "C/C++ subsystem $ss_name                view $view_name"            comp_files=".c"            ;;        task* )            fmt_mesg "Summit subsystem $ss_name                view $view_name"            comp_files=            ;;        * )            fmt_mesg "layer_dialect subsystem $ss_name                view $view_name"            comp_files=            ;;    esac    echo    # Verify if the view has been frozen. If so, we do not want to    # do any of the view_steps (remodel, compile, link, freeze, etc.)    view_properties=$view_path/.Rational/View_Control/View_Properties    if [ -s $view_properties.prop ]    then        # New name:        view_properties=$view_properties.prop    fi    case `$GREP "RELEASE_KIND:" $view_properties` in        *frozen )            if [ "$do_unfreeze" = no ]            then                echo "!!! Okay, This view has been frozen."                return            fi            if [ "$do_unfreeze" = ask ]            then                get_yn "Unfreeze view?" no                if [ "$result" = no ]                then                    echo "!!! Okay, This view will be left frozen."                    return                fi            fi            # Unfreeze view            $ECHON "  Unfreezing view: $NOCR"            if $CHMOD -R +w $view_path            then                $SED -e "s?frozen?development?" $view_properties > $temp                $CP $temp $view_properties                MAINTAIN="$MAINTAIN $view_path"                n_maintain=`$EXPR $n_maintain + 1`                echo okay.            else                echo failed.                return            fi    esac    # Move RC to .Rational/Compilation, where it belongs.  It was    # moved there by makeprod to avoid tar's 100 character filename limit.    if [ -d  $view_path/RC ]    then        if [ -d $view_path/.Rational/Compilation ]        then            $CHMOD -R u+x $view_path/.Rational/Compilation 2>/dev/null            $RM -fr $view_path/.Rational/Compilation        fi        mv $view_path/RC $view_path/.Rational/Compilation    fi    customize_imports    customize_switches    customize_dependency    if [ -d $view_path/.Rational/Rci ]    then         compiler_class=`grep "COMPILER_CLASS:" $view_properties`         case "$compiler_class" in         *Extended )             $ECHON "  Checking RCI view properties: $NOCR"             # Make Standard for the remodel.             $SED -e "s?COMPILER_CLASS:.*?COMPILER_CLASS: Standard?" \                 $view_properties > $temp             cmp_move_file $temp $view_properties             ;;         esac    fi    do_set_location=no    do_remodel=no    do_refresh=no    do_freeze=no    do_install=no    do_compile=no    do_link=no    for _step in $layer_view_steps    do        eval do_$_step=yes    done    if [ "$do_set_location" = yes ]    then        if location_not_set $ss_path        then            echo will fix.            SET_LOCATION="$SET_LOCATION$ss_path"            n_set_location=`$EXPR $n_set_location + 1`        else            echo okay.        fi    fi    if [ "$do_refresh" = yes ]    then        REFRESH="$REFRESH $view_path"        n_refresh=`$EXPR $n_refresh + 1`    fi    case "$ss_name" in    model.ss )        if [ $product != apex -a "$do_refresh" = no ]        then            # Must refresh model views.            MODEL_REFRESH="$MODEL_REFRESH $view_path"            n_model_refresh=`$EXPR $n_model_refresh + 1`        fi        if check_ss_view_key        then            freeze_view        fi        return        ;;    key.ss )        # Make link in keys for backaward compatibility.        keys=$ss_base/$layer_lang/keys        key_dir=$keys/`$BASENAME $view_name .rel`        if [ ! -d $key_dir  -a  ! $sym_link $key_dir ]        then            mkdir_p $keys            $LN -s $view_path/key $key_dir        fi        freeze_view        return        ;;    esac    if [ "$do_remodel" = yes ]    then        check_ss_view_key        if [ $? -ne $TRUE ]        then            return        fi        if [ "$layer_lang" = 'c++' ]        then            CPP_REMODEL="$CPP_REMODEL $view_path"            n_cpp_remodel=`$EXPR $n_cpp_remodel + 1`        else            case $view_path in            *64.ada95.thread.relaxed.* )                if [ ! -d $ada95_64_thread_relaxed_model ]                then                    warn_of_missing_model "64-bit Ada 95" Threaded/Relaxed \                        $ada95_64_thread_relaxed_model                    return                fi                ADA95_64_REMODELTR="$ADA95_64_REMODELTR $view_path"                n_ada95_64_remodeltr=`$EXPR $n_ada95_64_remodeltr + 1`                ;;            *64.ada95.thread* )                if [ ! -d $ada95_64_thread_model ]                then                    warn_of_missing_model "64-bit Ada 95" Threaded $ada95_64_thread_model                    return                fi                ADA95_64_REMODELT="$ADA95_64_REMODELT $view_path"                n_ada95_64_remodelt=`$EXPR $n_ada95_64_remodelt + 1`                ;;            *64.ada95.relaxed* )                if [ ! -d $ada95_64_relaxed_model ]                then                    warn_of_missing_model "64-bit Ada 95" Relaxed $ada95_64_relaxed_model                    return                fi                ADA95_64_REMODELR="$ADA95_64_REMODELR $view_path"                n_ada95_64_remodelr=`$EXPR $n_ada95_64_remodelr + 1`                ;;            *64.ada83.thread* )                if [ ! -d $ada83_64_thread_model ]                then                    warn_of_missing_model "64-bit Ada 83" Threaded $ada83_64_thread_model                    return                fi                ADA83_64_REMODELT="$ADA83_64_REMODELT $view_path"                n_ada83_64_remodelt=`$EXPR $n_ada83_64_remodelt + 1`                ;;            *64.ada95* )                if [ ! -d $ada95_64_model ]                then                    warn_of_missing_model "64-bit Ada 95" Regular $ada95_64_model                    return                fi                ADA95_64_REMODEL="$ADA95_64_REMODEL $view_path"                n_ada95_64_remodel=`$EXPR $n_ada95_64_remodel + 1`                ;;            *64.ada83* )                if [ ! -d $ada83_64_model ]                then                    warn_of_missing_model "64-bit Ada 83" Regular $ada83_64_model                    return                fi                ADA83_64_REMODEL="$ADA83_64_REMODEL $view_path"                n_ada83_64_remodel=`$EXPR $n_ada83_64_remodel + 1`                ;;            *ada95.thread.relaxed.* )                if [ ! -d $ada95_thread_relaxed_model ]                then                    warn_of_missing_model "Ada 95" Threaded/Relaxed \                        $ada95_thread_relaxed_model                    return                fi                ADA95_REMODELTR="$ADA95_REMODELTR $view_path"                n_ada95_remodeltr=`$EXPR $n_ada95_remodeltr + 1`                ;;            *ada95.thread* )                if [ ! -d $ada95_thread_model ]                then                    warn_of_missing_model "Ada 95" Threaded $ada95_thread_model                    return                fi                ADA95_REMODELT="$ADA95_REMODELT $view_path"                n_ada95_remodelt=`$EXPR $n_ada95_remodelt + 1`                ;;            *ada95.relaxed* )                if [ ! -d $ada95_relaxed_model ]                then                    warn_of_missing_model "Ada 95" Relaxed $ada95_relaxed_model                    return                fi                ADA95_REMODELR="$ADA95_REMODELR $view_path"                n_ada95_remodelr=`$EXPR $n_ada95_remodelr + 1`                ;;            *ada83.thread* )                if [ ! -d $ada83_thread_model ]                then                    warn_of_missing_model "Ada 83" Threaded $ada83_thread_model                    return                fi                ADA83_REMODELT="$ADA83_REMODELT $view_path"                n_ada83_remodelt=`$EXPR $n_ada83_remodelt + 1`                ;;            *ada95.aio* )                if [ ! -d $ada95_aio_model ]                then                    warn_of_missing_model "Ada 95" AIO $ada95_aio_model                    return                fi                ADA95_REMODELA="$ADA95_REMODELA $view_path"                n_ada95_remodela=`$EXPR $n_ada95_remodela + 1`                ;;            *ada83.aio* )                if [ ! -d $ada83_aio_model ]                then                    warn_of_missing_model "Ada 83" AIO $ada83_aio_model                    return                fi                ADA83_REMODELA="$ADA83_REMODELA $view_path"                n_ada83_remodela=`$EXPR $n_ada83_remodela + 1`                ;;            *ada95* )                if [ ! -d $ada95_model ]                then                    warn_of_missing_model "Ada 95" Regular $ada95_model                    return                fi                ADA95_REMODEL="$ADA95_REMODEL $view_path"                n_ada95_remodel=`$EXPR $n_ada95_remodel + 1`                ;;            *ada83* )                if [ ! -d $ada83_model ]                then                    warn_of_missing_model "Ada 83" Regular $ada83_model                    return                fi                ADA83_REMODEL="$ADA83_REMODEL $view_path"                n_ada83_remodel=`$EXPR $n_ada83_remodel + 1`                ;;            * )                MODEL_REFRESH="$MODEL_REFRESH $view_path"                n_model_refresh=`$EXPR $n_model_refresh + 1`                ;;            esac        fi    fi    # Create links in prod_base/api/lib/ARCH to API's in view_path.    # The link will be named "<lib_api>.<view_name>.a" (without the /'s)    # For example, if view_path contained the API "libposix.a", then:    #   libposix.sun4_solaris2.1.6.1.rel.a -> view_path/libposix.a    if [ ! -d   $prod_base/api/lib/$ARCH ]    then        mkdir_p $prod_base/api/lib/$ARCH    fi    for lib_api_a in `$LS $view_path/*.a 2>/dev/null`    do        $CHMOD 444 $lib_api_a        lib_api=`$BASENAME $lib_api_a .a`        vn=`echo $view_name | $SED -e "s?/?.?g"`      # (remove the /'s)        if [ -z "$vn" -o -z "$lib_api" ]        then            continue        fi        $RM -f $prod_base/api/lib/$ARCH/$lib_api.$vn.a        $LN -s $lib_api_a $prod_base/api/lib/$ARCH/$lib_api.$vn.a    done    freeze_view    # If ada or C units can be found in this view, add it to the list of    # views to be installed, compiled or linked.    if [ -z "$comp_files" ]    then        return    fi    if [ `$FIND $view_path -type f -name \*$comp_files -print | wc -l` -gt 0 ]    then        if [ "$do_install" = yes  -a  $code_link = yes ]        then            INSTALL="$INSTALL $view_path"            n_install=`$EXPR $n_install + 1`        fi        if [ "$do_compile" = yes  -a  $code_link = yes ]        then            if [ "$layer_lang" = c++ ]            then                COMPILECPP="$COMPILECPP $view_path"                n_compilecpp=`$EXPR $n_compilecpp + 1`            elif [ "$layer_dialect" = ada95 ]            then                COMPILE95="$COMPILE95 $view_path"                n_compile95=`$EXPR $n_compile95 + 1`            else # ada83                case $tiny_integer/$ss_name/$view_name in                    yes/lrm.ss/$ARCH_OS.$product_version* )                        CLEAN="$CLEAN $view_path"                        RADA="$RADA $view_path"                        n_rada=`$EXPR $n_rada + 1`                        ;;                    * )                        COMPILE83="$COMPILE83 $view_path"                        n_compile83=`$EXPR $n_compile83 + 1`                        ;;                esac            fi        fi        if [ "$do_link" = yes  -a  $code_link = yes ]        then            LINK="$LINK $view_path"            n_link=`$EXPR $n_link + 1`        fi    fi}#------------------------------------------------------------------------add_apex_script() {#------------------------------------------------------------------------    echo "echoecho '$SEP'$*" >> $apex_script}#------------------------------------------------------------------------add_apex_cmds_nochk() {#------------------------------------------------------------------------    eval apex_cmd=\"\$APEX_$1\"    skip_tag=$2    eval set -- \$$1    if [ $# -eq 0 ]    then        return    fi    if [ -z "$skip_tag" ]    then        echo "echoecho '$SEP'$apex_cmd $*        " >> $apex_script        return    fi    echo "if [ \"\$$skip_tag\" != skip ]then    echo    echo '$SEP'    $apex_cmd $*fi    " >> $apex_script}#------------------------------------------------------------------------add_cond_apex_cmds_nc() {#------------------------------------------------------------------------    if [ "${1:-0}" -gt 0 ]    then        shift        add_apex_cmds_nochk $*    fi}#------------------------------------------------------------------------add_cond_apex_cmds() {#------------------------------------------------------------------------    if [ "${1:-0}" -gt 0 ]    then        shift        add_apex_cmds $*    fi}#------------------------------------------------------------------------add_apex_cmds() {#------------------------------------------------------------------------    add_apex_cmds_nochk $*    add_error_check "$apex_cmd"}#------------------------------------------------------------------------add_silent_script() {#------------------------------------------------------------------------    echo "$* >/dev/null 2>&1" >> $apex_script    echo ": null returns true" >> $apex_script}#------------------------------------------------------------------------add_error_check() {#------------------------------------------------------------------------# Ignore error 141 if it comes up.    echo "status=\$?case \$status in0|141 )    status=0    ;;* )    echo \"Error in $* [status=\$status]\"    exit \$status    ;;esac    " >> $apex_script}#------------------------------------------------------------------------add_model_check() {#------------------------------------------------------------------------    echo "if [ -z \"\$$1\" ]then    echo    echo '$SEP'    echo \"\`date +%T\` !!! Cannot remodel $2 views, Apex/$2 not installed.\"    $3=skipelse" >> $apex_script}#------------------------------------------------------------------------customize_subsystems() {#------------------------------------------------------------------------    if [ ${layer_count:-0} -eq 0 ]    then        return $TRUE    fi    echo    echo "$SEP"    header "$product_name Subsystem Setup"    # Make the Ada config directory for this product/arch.    if [ ! -d $prod_base/ada ]    then        $MKDIR $prod_base/ada    fi    if [ "$make_cfg_files" = yes ]    then        CFG_DIR=$prod_base/ada/configs        if [ ! -d $CFG_DIR ]        then            $MKDIR $CFG_DIR            $CHMOD a+w $CFG_DIR        else            $CHMOD a+w $CFG_DIR 2>/dev/null        fi    fi    case $ARCH_OS in    sun4_solaris2 )        ARCH64_OS=sun4_solaris_64        ;;    * )        ARCH64_OS=${ARCH_OS}64        ;;    esac    ada_95=$prod_base/ada/model.ss/$ARCH_OS.ada95    ada_83=$prod_base/ada/model.ss/$ARCH_OS.ada83    ada_95_64=$prod_base/ada/model.ss/$ARCH64_OS.ada95    ada_83_64=$prod_base/ada/model.ss/$ARCH64_OS.ada83    ada95_thread_model=$ada_95.thread.$apex_version.rel    ada95_relaxed_model=$ada_95.relaxed.$apex_version.rel    ada95_thread_relaxed_model=$ada_95.thread.relaxed.$apex_version.rel    ada95_aio_model=$ada_95.aio.$apex_version.rel    ada95_model=$ada_95.$apex_version.rel    ada83_thread_model=$ada_83.thread.$apex_version.rel    ada83_aio_model=$ada_83.aio.$apex_version.rel    ada83_model=$ada_83.$apex_version.rel    ada83_64_model=$ada_83_64.$apex_version.rel    ada83_64_thread_model=$ada_83_64.thread.$apex_version.rel    ada95_64_model=$ada_95_64.$apex_version.rel    ada95_64_thread_model=$ada_95_64.thread.$apex_version.rel    ada95_64_relaxed_model=$ada_95_64.relaxed.$apex_version.rel    ada95_64_thread_relaxed_model=$ada_95_64.thread.relaxed.$apex_version.rel    unset ada_95 ada_83 ada_95_64 ada_83_64    APEX_SET_LOCATION="apex set_location -replace"    APEX_REFRESH="apex remodel -refresh -force"    APEX_MODEL_REFRESH="apex remodel -refresh -force"    APEX_ADA83_REMODEL="apex remodel -model \$APEX_ADA83_MODEL -force"    APEX_ADA95_REMODEL="apex remodel -model \$APEX_ADA95_MODEL -force"    APEX_ADA83_REMODELT="apex remodel -model $ada83_thread_model -force"    APEX_ADA95_REMODELT="apex remodel -model $ada95_thread_model -force"    APEX_ADA95_REMODELR="apex remodel -model $ada95_relaxed_model -force"    APEX_ADA95_REMODELTR="apex remodel -model $ada95_thread_relaxed_model -force"    APEX_ADA83_REMODELA="apex remodel -model $ada83_aio_model -force"    APEX_ADA95_REMODELA="apex remodel -model $ada95_aio_model -force"    APEX_ADA83_64_REMODEL="apex remodel -model $ada83_64_model -force"    APEX_ADA95_64_REMODEL="apex remodel -model $ada95_64_model -force"    APEX_ADA83_64_REMODELT="apex remodel -model $ada83_64_thread_model -force"    APEX_ADA95_64_REMODELT="apex remodel -model $ada95_64_thread_model -force"    APEX_ADA95_64_REMODELR="apex remodel -model $ada95_64_relaxed_model -force"    APEX_ADA95_64_REMODELTR="apex remodel -model $ada95_64_thread_relaxed_model -force"    export APEX_ADA83_REMODELT APEX_ADA95_REMODELT    export APEX_ADA95_REMODELR APEX_ADA95_REMODELTR    export APEX_ADA83_REMODELA APEX_ADA95_REMODELA    APEX_CPP_REMODEL="apex remodel -model \$APEX_CPP_MODEL -force"    APEX_INSTALL="apex install"    APEX_MAINTAIN="apex maintain -version_control -history all -permissions"    APEX_COMPILE83="apex compile"    APEX_COMPILE95="apex compile"    APEX_COMPILECPP="apex compile"    APEX_CLEAN="apex clean"    APEX_RADA="rada -flag tiny_integer"    APEX_LINK="apex link"    APEX_FREEZE="apex remodel -release_kind frozen"    n_set_location=0    n_refresh=0    n_model_refresh=0    n_ada83_remodel=0    n_ada83_remodelt=0    n_ada83_remodela=0    n_ada95_remodel=0    n_ada95_remodelt=0    n_ada95_remodelr=0    n_ada95_remodeltr=0    n_ada95_remodela=0    n_ada83_64_remodel=0    n_ada83_64_remodelt=0    n_ada95_64_remodel=0    n_ada95_64_remodelt=0    n_ada95_64_remodelr=0    n_ada95_64_remodeltr=0    n_cpp_remodel=0    n_freeze=0    n_install=0    n_compile83=0    n_compile95=0    n_compilecpp=0    n_maintain=0    n_rada=0    n_link=0    unset SET_LOCATION REFRESH MAINTAIN MODEL_REFRESH    unset ADA95_REMODEL ADA83_REMODEL CPP_REMODEL FREEZE INSTALL    unset ADA95_REMODELT ADA83_REMODELT ADA95_REMODELR ADA95_REMODELTR    unset ADA95_REMODELA ADA83_REMODELA    unset COMPILE83 COMPILE95 COMPILECPP LINK CLEAN RADA    i=1    while [ $i -le $layer_count ]    do        eval layer_arch=\$layer_${i}_arch        eval view_name=\$layer_${i}_view_name        eval layer_lang=\$layer_${i}_lang        eval layer_dialect=\$layer_${i}_dialect        eval layer_ss_count=\$layer_${i}_ss_count        eval layer_view_steps= \$layer_${i}_view_steps:-$view_steps        layer_dialect=\$layer_dialect:-$layer_lang        if [ -z "$view_name" ]        then            eval layer_hwarch=\$layer_${i}_hwarch            eval layer_arch=\$layer_${i}_arch            eval layer_ver=\$layer_${i}_ver            if [ "$view_type" = rel ]            then                view_name=${layer_arch}.${layer_ver}.$view_type            else                view_name=${layer_arch}.$view_type            fi            layer_arch=$layer_hwarch        fi        j=1        while [ $j -le $layer_ss_count ]        do            eval ss_name=\$layer_${i}_ss_${j}_name            if [ -d $ss_base/$layer_lang/$ss_name/$view_name ]            then                # View was installed.                customize_view            fi            j=`$EXPR $j + 1`        done        i=`$EXPR $i + 1`    done    if [ $check_sw_imp = yes  -a  -s $install_dir/sierra_ned ]    then        error "Switches/Imports have paths to /sierra/, /aloha/, /ned/ or /accts/:"        $CAT $install_dir/sierra_ned        exit 1    fi    apex_script=/tmp/apex_script.$$    if [ "$make_cfg_files" = yes ]    then        add_apex_script apex_upgrade -create_cfg_files    fi    add_cond_apex_cmds "$n_set_location" SET_LOCATION    add_cond_apex_cmds "$n_refresh" REFRESH    add_cond_apex_cmds "$n_maintain" MAINTAIN    if [ $n_ada83_remodel -gt 0 ]    then        add_model_check APEX_ADA83_MODEL "Ada 83" do_ada83        add_apex_cmds ADA83_REMODEL        echo "fi" >> $apex_script    fi    add_cond_apex_cmds "$n_ada83_remodelt" ADA83_REMODELT    add_cond_apex_cmds "$n_ada83_remodela" ADA83_REMODELA    add_cond_apex_cmds "$n_ada83_64_remodel" ADA83_64_REMODEL    add_cond_apex_cmds "$n_ada83_64_remodelt" ADA83_64_REMODELT    if [ $n_ada95_remodel -gt 0 ]    then        add_model_check APEX_ADA95_MODEL "Ada 95" do_ada95        add_apex_cmds ADA95_REMODEL        echo "fi" >> $apex_script    fi    add_cond_apex_cmds "$n_ada95_remodelt" ADA95_REMODELT    add_cond_apex_cmds "$n_ada95_remodeltr" ADA95_REMODELTR    add_cond_apex_cmds "$n_ada95_remodelr" ADA95_REMODELR    add_cond_apex_cmds "$n_ada95_remodela" ADA95_REMODELA    add_cond_apex_cmds "$n_ada95_64_remodel" ADA95_64_REMODEL    add_cond_apex_cmds "$n_ada95_64_remodelt" ADA95_64_REMODELT    add_cond_apex_cmds "$n_ada95_64_remodeltr" ADA95_64_REMODELTR    add_cond_apex_cmds "$n_ada95_64_remodelr" ADA95_64_REMODELR    add_cond_apex_cmds_nc "$n_model_refresh" MODEL_REFRESH    echo ":" >> $apex_script    if [ $n_cpp_remodel -gt 0 ]    then        add_model_check APEX_CPP_MODEL C++ do_cpp        add_apex_cmds CPP_REMODEL        echo "fi" >> $apex_script        do_cpp='-cpp'    fi    add_cond_apex_cmds_nc "$n_install" INSTALL    add_cond_apex_cmds_nc "$n_rada" CLEAN    add_cond_apex_cmds "$n_rada" RADA    add_cond_apex_cmds_nc "$n_compile83" COMPILE83 do_ada83    add_cond_apex_cmds_nc "$n_compile95" COMPILE95 do_ada95    add_cond_apex_cmds_nc "$n_compilecpp" COMPILECPP do_cpp    add_cond_apex_cmds "$n_link" LINK    if [ -n "$task_domain"  -a  -n "$task_ss" ]    then        if [ ! -d $task_domain ]        then            add_apex_script "create_subsystem $task_ss"            add_error_check "create_subsystem"            add_apex_script "create_task_domain $task_domain"            add_error_check "create_task_domain"            if [ -n "$task_ss_chmod" ]            then                add_apex_script "$task_ss_chmod"            fi        fi    fi    if [ -x $prod_home/bin/aemacs ]    then        add_silent_script "aemacs -batch -f apex-check-all-menu-files"    fi    if [ -f $install_dir/share/apex_script ]    then        add_apex_script "product_version=$product_version"        add_apex_script ". $install_dir/share/apex_script"    fi    add_cond_apex_cmds_nc "$n_freeze" FREEZE    echo ":" >> $apex_script    apex_status=$TRUE    if [ -s $apex_script ]    then        add_cleanup_file $apex_script        separator        $APEXINIT -batch -reset $do_cpp /bin/sh $apex_script        apex_status=$?    fi    return $apex_status}#------------------------------------------------------------------------err_warn() {#------------------------------------------------------------------------    error_func=$1    must_should=$2    cont=$3    err_mesg=$4    $error_func "$err_mesg        You $must_should run get_license_info, then add the license, and        then run the start_lm script before running this script."    ask_continue $cont    unset error_func must_should cont err_mesg}#------------------------------------------------------------------------run_ranlib() {#------------------------------------------------------------------------#   arg1: on_arch:  architecture#   arg2: sys_name: system name  (ignored)# arg3-N: lib_path: library path name    on_arch=$1    shift 2    for lib_path in $*    do        if [ ! -f $lib_path ]        then            continue        fi        if [ "$ARCH" = "$on_arch" ]        then            if [ -z "$ranlib_header" ]            then                echo                echo "Running ranlib on..."                ranlib_header=no            fi            echo "    $lib_path"            if [ ! -w $lib_path ]            then                $CHMOD a+w $lib_path                ranlib -t $lib_path >/dev/null 2>&1                $CHMOD a-w $lib_path            else                ranlib -t $lib_path >/dev/null 2>&1            fi        fi    done}#------------------------------------------------------------------------feature_exists() {#------------------------------------------------------------------------# Check if feature (arg1) exists in license file.# If it does, return feature line in feature_line.    WS=" 	"    unset increment_lines feature_line    if $using_multiple_lic_files    then        eval lic_file=\$license_file$fn    else        lic_file=$LM_LICENSE_FILE    fi    if [ ! -f "$lic_file" ]    then        # Cannot check--ask user if they have licensed feature.        get_yn "Have you licensed feature '$1'?" no        if [ $result = yes ]        then            return $TRUE        else            return $FALSE        fi    else        feature_line=`$GREP "^FEATURE[$WS]*$1[$WS]" $lic_file | $HEAD -1`        if increment_lines=`$GREP "^INCREMENT[$WS]*$1[$WS]" $lic_file`        then            return $TRUE        elif [ -n "$feature_line" ]        then            return $TRUE        else            # No FEATURE or INCREMENT lines.            return $FALSE        fi    fi}#------------------------------------------------------------------------set_opt_file() {#------------------------------------------------------------------------    # Default to rational.opt in the license dir.    LICENSE_DIR=$prod_base/cots/flexlm.$flexlm_version/$SV_LICENSE_ARCH    if [ -f $LICENSE_DIR/rational.opt ]    then        opt_file=$LICENSE_DIR/rational.opt        return 0    else        # Check on DAEMON line in license file.        set -- `$GREP "^DAEMON rational" $LM_LICENSE_FILE`        if [ "$#" -eq 4 ]        then            if [ -f $4 ]            then                # It is fully qualified.                opt_file=$4                return 0            elif [ -f $3/$4 ]            then                # Found in the daemon path (arg 3).                opt_file=$3/$4                return 0            fi        fi        # Check on VENDOR line in license file.        set -- `$GREP "^VENDOR rational" $LM_LICENSE_FILE`        if [ "$#" -eq 3 ]        then            if [ -f $3 ]            then                # It is fully qualified.                opt_file=$3                return 0            elif [ -f $LICENSE_DIR/$3 ]            then                # Found in the license dir.                opt_file=$LICENSE_DIR/$3                return 0            fi        fi    fi    return 1}#------------------------------------------------------------------------warn_no_opt_file() {#------------------------------------------------------------------------    warn "This product has USER_BASED licenses.        This requires an options file to be set.        Could not determine the location of the options file.        This should be set on the DAEMON or VENDOR line in your        license file ($LM_LICENSE_FILE).        Example: DAEMON rational $LICENSE_DIR rational.opt        where rational.opt is located in        $LICENSE_DIR.        The rational.opt file must contain one or more lines specifying        the users of this product.        Example: INCLUDE purifyapex USER $USER"}#------------------------------------------------------------------------warn_no_opt_include() {#------------------------------------------------------------------------    warn "The '$LFN' license is USER_BASED.        This requires one or more entries in the options file,        $opt_file.        Example: INCLUDE $LFN USER $USER        where $USER would be a user of $LFN."}#------------------------------------------------------------------------check_license_features() {#------------------------------------------------------------------------# Check if license server knows about features in the license list.# This is done only if licenses are not uncounted, DEMO.    if [ "$check_license" = no  -o "$command" != post_install ]    then        return    fi    if [ "$have_demo" = yes -a -z "$have_non_demo" ]    then        if [ $using_port_at_host = yes ]        then            echo "There are only demo (evaluation) licenses for this product.Since you are using the port@host feature of FLEXlm, licensescannot be checked."            return        fi        # Do not use lmstat to check licenses since none of them need to        # be counted by the server.        use_lmstat=no    else        use_lmstat=yes    fi    separator    # Will use this command to check license codes.    if [ $using_port_at_host = no  -a  -x $flex_dir/exinstal ]    then        EXINSTAL=exinstal        TMP_DAT=/tmp/exinstal.$$.dat        add_cleanup_file $TMP_DAT    fi    case $EXINSTAL/$use_lmstat in    exinstal/yes )        echo "Verifying licenses with the license server daemon using lmstat"        echo "  and in the license file using exinstal..."        ;;    exinstal/no )        echo "Verifying licenses in the license file using exinstal..."        ;;    /no )        echo "Verifying licenses in the license file..."        ;;    /yes )        echo "Verifying licenses with the license server daemon using lmstat..."        ;;    esac    Not_added_server_line=true    num_server_keys=0    unset no_license_list    OKAY_LIST=/tmp/$product.post_install.license.okay.$$    add_cleanup_file $OKAY_LIST    for fn in ${fn_list:-${license_list:-$lic_list_all}}    do        eval LFN=\$license_feature$fn        eval NUM=\$num_feature$fn        if [ $using_port_at_host = no ]        then            feature_exists $LFN            num_lic=`echo "${feature_line:-0 0 0 0 0 0}                           ${increment_lines:-0 0 0 0 0 0}" |                     $AWK 'BEGIN {n=0} {n+=$6} END {print n}'`            # Add SERVER and DAEMON/VENDOR lines.            if $Not_added_server_line            then                egrep "^SERVER|^DAEMON|^VENDOR" $lic_file >> $TMP_DAT                Not_added_server_line=false            fi            echo "$feature_line" >> $TMP_DAT            echo "$increment_lines" >> $TMP_DAT        fi        case "${using_port_at_host}-${num_lic:-${NUM:-0}}" in        no-demo|no-0 )            # Skip DEMO, Uncounted            continue            ;;        esac        num_server_keys=`$EXPR $num_server_keys + 1`        lmstat_out=`lmstat -f $LFN 2>&1`        avail=`echo "$lmstat_out" |               $GREP "Total of.*licenses available" |               head -1"`        if lic_avail=`echo "$avail" | $GREP "Total of.*licenses available"`        then            echo            echo "$lic_avail"            echo $LFN >> $OKAY_LIST        else            # Save license error message and when all done, check if any            # of the alternate licenses for this license are okay.            no_license_list="$no_license_list $fn"            lm_err=`echo "$lmstat_out" | $EGREP -v '^lmstat - |^Flexible|^$'`            eval lm_err$fn=\$lm_err        fi        # Check if license is user-based. If so, check later for entry        # in the options file.        case "$feature_line$increment_lines" in        *USER_BASED* )            user_based="$user_based $fn"            ;;        esac    done    # Check if missing licenses have valid alternate licenses.    for fn in $no_license_list    do        eval LFN=\$license_feature$fn        # Determine the alternate name of the missing license.        unset alt_lfn        case $LFN in        *.alpha ) alt_lfn=`echo "$LFN" | sed -e 's?\.alpha?.any?'` ;;        *.any   ) alt_lfn=`echo "$LFN" | sed -e 's?\.any?\\.?'` ;;        *.any.* ) alt_lfn=`echo "$LFN" | sed -e 's?\.any\.?.*.?'` ;;        *.axp.* ) alt_lfn=`echo "$LFN" | sed -e 's?\.axp\.?.any.?'` ;;        *.hp.*  ) alt_lfn=`echo "$LFN" | sed -e 's?\.hp\.?.any.?'` ;;        *.hppa  ) alt_lfn=`echo "$LFN" | sed -e 's?\.hppa?.any?'` ;;        *.ibm.* ) alt_lfn=`echo "$LFN" | sed -e 's?\.ibm\.?.any.?'` ;;        *.mips  ) alt_lfn=`echo "$LFN" | sed -e 's?\.mips?.any?'` ;;        *.rs6k  ) alt_lfn=`echo "$LFN" | sed -e 's?\.rs6k?.any?'` ;;        *.sgi.* ) alt_lfn=`echo "$LFN" | sed -e 's?\.sgi\.?.any.?'` ;;        *.sun4  ) alt_lfn=`echo "$LFN" | sed -e 's?\.sun4?.any?'` ;;        *.sun4.*) alt_lfn=`echo "$LFN" | sed -e 's?\.sun4\.?.any.?'` ;;        esac        if [ -n "$alt_lfn" ]        then            # Can ignore this if alternate form is in the okay file            if grep "^$alt_lfn" $OKAY_LIST >/dev/null 2>&1            then                continue            fi        fi        # Show the lmstat errror.        eval lm_err=\$lm_err$fn        echo        echo "The 'lmstat -f $LFN' command returned this message:"        echo "$lm_err"        echo        eval DESC=\$license_desc$fn        mesg_not_licensed="It appears that $DESClicense has not been activated in the license server."        case $LFN in        apex|apex.base.*|env_base.*|summit_base.*|*.c++|*.rada )            # These licenses are required.            err_warn error must no \               "$mesg_not_licensed                Have you run start_lm?"            ;;        * )            echo "$mesg_not_licensed"            ask_continue yes            ;;        esac    done    if [ -n "$EXINSTAL"  -a  $num_server_keys -gt 0 ]    then        if [ -s $TMP_DAT ]        then            # The exinstal program returns a count of the number of licenses            # that have some sort of problem.            $EXINSTAL $TMP_DAT > $TMP_DAT.out            _n=$?            # Show the installer what exinstal emitted, excluding some lines.            $EGREP -v "^Feature:|^License path:|^FLEXlm error:" $TMP_DAT.out            $RM -f $TMP_DAT.out            echo            case $_n in            0 )                logit pos "exinstal: All of the license keys are fine."                ;;            1 )                logit neg "exinstal: There is a problem with one of the license keys."                ask_continue no                ;;            * )                logit neg "exinstal: There are problems with $_n of the license keys."                ask_continue no                ;;            esac        fi    fi    # Check USER_BASED licenses.    for fn in $user_based    do        if [ -z "$opt_file" ]        then            set_opt_file            if [ $? -ne 0 ]            then                warn_no_opt_file                break            fi        fi        eval LFN=\$license_feature$fn        if GREP "^INCLUDE$[WS]*$LFN$[$WS]*USER" $opt_file >/dev/null        then            continue        else            warn_no_opt_include        fi    done}#------------------------------------------------------------------------set_lm_license_file() {#------------------------------------------------------------------------# SV_LIC_FILE_NAME should be set to the full path of license.dat.# It is set in the .license_data file.# Check the .license_data files first and LM_LICENSE_FILE last.# Verify each feature in the license_list list is in the file.    if [ "$check_license" = no  -o "$command" != post_install ]    then        return    fi    separator    get_lic_file_name    # Check license file exists or their using port@host.    unset new_license_file    using_port_at_host=no    using_multiple_lic_files=false    while true    do        unset new_license_file        using_port_at_host=no        using_multiple_lic_files=false        get_input "Enter license file or port@host:" $SV_LIC_FILE_NAME        for lic_file in `(IFS=':'; echo $result)`        do            case $lic_file in            *@* )                using_port_at_host=yes                ;;            * )                if [ ! -f "$lic_file" ]                then                    echo "$lic_file not found."                    get_yn "Use anyway?" no                    if [ "$result" = no ]                    then                        continue                    fi                fi                ;;            esac            if [ -n "$new_license_file" ]            then                new_license_file="$new_license_file:$lic_file"                using_multiple_lic_files=true            else                new_license_file="$lic_file"            fi        done        if [ -n "$new_license_file" ]        then            break        else            error "You did not specify a valid license file or port@host."            ask_continue no        fi    done    SV_LIC_FILE_NAME=$new_license_file    LM_LICENSE_FILE=$SV_LIC_FILE_NAME    export LM_LICENSE_FILE    save_vars    save_defaults -g SV_LIC_FILE_NAME    fmt_mesg "You can have the $command check the license server to        verify that licensing is functioning for $product_name.        To do so requires access to the full license.dat file        and/or access to the lmstat command."    get_yn "Would you like to verify licenses now?" ${check_license:-yes}    check_license=$result    if [ $check_license = no  -o  $using_port_at_host = yes ]    then        return    fi    _pause=':'    lic_file=`$BASENAME $LM_LICENSE_FILE`    separator    if $using_multiple_lic_files    then        echo "Checking licenses in these license files:"        for lic_file in `(IFS=':'; echo $SV_LIC_FILE_NAME)`        do            echo "  $lic_file"        done    else        echo "Checking licenses in the license file:"        echo "  $SV_LIC_FILE_NAME"    fi    # Look for FEATURE lines with Rational product license features.    unset all_feat_list    for fn in ${license_list:-$lic_list_all}    do        eval LFN=\$license_feature$fn        if [ -n "$LFN" ]        then            all_feat_list="$all_feat_list $LFN"        fi        if is_an_any_license $LFN        then            lic_type=any        elif is_a_host_license $LFN        then            lic_type=host_specific        else            lic_type=generic        fi        if $using_multiple_lic_files        then            unset _warn_mesg   _error_mesg            unset _warn_status _error_status            unset _warn_file   _error_file            for _lic_file in `(IFS=':'; echo $SV_LIC_FILE_NAME)`            do                _lic_mesg=`check_feature -v $fn $_lic_file 2>&1`                _lic_status=$?                case $_lic_status in                0 )                    break                    ;;                3|4|5 )                    _warn_status=$_lic_status                    _warn_mesg="$_lic_mesg"                    _warn_file=$_lic_file                    unset _lic_status _error_status                    ;;                * )                    _error_status=$_lic_status                    _error_mesg="$_lic_mesg"                    _error_file=$_lic_file                    unset _lic_status                    ;;                esac            done            if [ -n "$_lic_status" ]            then                echo "$_lic_mesg"                eval license_file$fn=$_lic_file            elif [ -n "$_warn_status" ]            then                echo "$_warn_mesg"                _lic_status=$_warn_status                eval license_file$fn=$_warn_file            elif [ -n "$_error_status" ]            then                echo "$_error_mesg"                _lic_status=$_error_status                eval license_file$fn=$_error_file            fi            unset _lic_mesg _warn_mesg _error_mesg _warn_status _error_status            unset _lic_file _warn_file _error_file        else            check_feature -v $fn            _lic_status=$?        fi        case $_lic_status in        0 )            fn_list="$fn_list $fn"            eval using_$lic_type=yes            ;;        3|4|5 )            # The non-zero return codes are mismatches between what is in            # the license file and what is in the install_defaults            # from get_license_info. The mismatches are warnings only.            fn_list="$fn_list $fn"            _pause=press_cr            ;;        * )            eval missing_$lic_type=\"\$missing_$lic_type $LFN\"            ;;        esac    done    echo    for lic_type in any host_specific generic    do        eval using=\$using_$lic_type        eval missing=\$missing_$lic_type        if [ "$using" = yes  -a  -n "$missing" ]        then            warning "Using '$lic_type' license keys but these licenses                     have not been configured:  $missing"            _pause="ask_continue no"        fi    done    if [ -z "$fn_list" ]    then        if [ -n "$all_feat_list" ]        then            echo "Checked for these keys:"            for LFN in $all_feat_list            do                echo "    $LFN"            done            err_warn warning should yes \            "Cannot find any FEATURE or INCREMENT lines for $product_name            in the license file.  Has $distributor given you your license key(s)?"        else            echo "There are no license keys to check for."            check_license=no        fi    else        eval $_pause        unset _pause    fi}#========================================================================# Main#========================================================================temp=/tmp/$command.$$code_link=yescheck_sw_imp=nodo_unfreeze=noinstall_crypt=falseunset PIDset -- $argswhile [ $# -gt 0 ]do    case $1 in        -h* )            usage 1            ;;        -askunfreeze|-auf )            do_unfreeze=ask            ;;        -unfreeze|-uf )            do_unfreeze=yes            ;;        -check )            # Check for /sierra/, /aloha/, /ned/ or /accts/:            # in switches and imports.            check_sw_imp=yes            ;;        [Dd][Oo][Nn][Tt]_[Bb][Uu][Ii][Ll][Dd] )            code_link=no            ;;        -patch )            PID=$2            prod_desc_patch=$install_dir/$TARGET_ARCH/prod_desc.$PID            if [ -f $prod_desc_patch ]            then                . $prod_desc_patch                if [ $product = apex  ]                then                    $TOUCH /tmp/lp.start.$$                elif [ -f $prod_home/bin/$product.init ]                then                    echo "$product.$product_version $prod_home" > \                        /tmp/lp.start.$$                fi            else                echo "$command: $prod_desc_patch not found."                echo "$command: <patch_id> is '$PID'"                usage 1            fi            shift            ;;        -install_crypt|-ic )            echo            echo "Option '$1' specified."            echo "Will install encrypted components only."            install_crypt=true            ;;        -install_patches|-ip )            echo            echo "Option '$1' specified. Will install patches only."            run_post_patch            exit 0            ;;        -* )            echo "$command: Option '$1' is not recognized."            usage 1            ;;    esac    shiftdonecase $command in    post_install )        NAME="Post Install:"        CMND="POST_INSTALL"        ss_base=$prod_base        view_type=rel        ;;    make_tests )        NAME="Make Tests:"        CMND="MAKE_TESTS"        ss_base=$prod_home        view_steps="$view_steps link"        view_type=wrk        save_defaults code_link        ;;esacif [ -n "$release_type" ]then    banner_version="$product_version$patch_level ($release_type)"else    banner_version="$product_version$patch_level"fibanner "$NAME" \    "${rprod_name:-$product_name}, $target_os_name" \    "$banner_version" \    "$product_date" \    "$copyright_year" \    "$vendor"echoecho "Product directory: $prod_home"put_var $CMND STARTEDadd_cleanup_file $tempif [ "$check_sw_imp" = yes ]then     echo "Will check for /sierra/, /aloha/, /ned & /accts/ in import and switch files."     $RM -f $install_dir/sierra_nedfiif [ -z "$PID" ]then    set_home_varsfiset_apex_pver_etc#------------------------------------------------------------------------# Check system requirements#------------------------------------------------------------------------if [ -z "$PID" -a  -x ./check_reqs ]then    case $product in    rose* )        if [ ! -x ./check_rose_reqs  ]        then            $CP check_reqs check_rose_reqs        fi        check_reqs=check_rose_reqs        ;;    * )        check_reqs=check_reqs        ;;    esac    ./$check_reqs -install    case $? in    0 )        ;;    1 )        ask_continue no        ;;    * )        # Abort this script        fatal "Cannot continue until required system parameters               have been satisfied."        ;;    esacfi#------------------------------------------------------------------------set_library_path () {#------------------------------------------------------------------------    library_path=$1    unset _path    shift    for _dir in $*    do        if [ -d $_dir ]        then            if [ -n "$_path" ]            then                _path=$_path:$_dir            else                _path=$_dir            fi        fi    done    eval $library_path=\$_path    eval export $library_path}#------------------------------------------------------------------------# Set architecture specific linker/loader search paths.#------------------------------------------------------------------------case $ARCH in   sun4_solaris2 )       set_library_path LD_LIBRARY_PATH /usr/ucblib /usr/lib       ;;   mips_irix5 )       set_library_path LD_LIBRARY_PATH /usr/lib /lib /usr/local/lib \           $prod_home/mips_irix5/lib       ;;   mips_irix_n32 )       set_library_path LD_LIBRARY_PATH $APEX_HOME/mips_irix5/lib \           /usr/lib /lib /usr/local/lib       set_library_path LD_LIBRARYN32_PATH /usr/lib32 /lib32 /usr/local/lib32       set_library_path LD_LIBRARYN64_PATH /usr/lib64 /lib64 /usr/local/lib64       ;;   rs6k* )       set_library_path LIBPATH /usr/lib /lib $prod_home/rs6k*/lib       ;;   hp* )       set_library_path SHLIB_PATH /usr/lib $prod_home/$ARCH/lib       ;;esac#------------------------------------------------------------------------# Set and verify license server installation#------------------------------------------------------------------------if [ -z "$PID" ]then    set_lm_license_file    check_license_featuresfi#------------------------------------------------------------------------# Main post_install starts here. Run product specific post_install scripts.#------------------------------------------------------------------------if $install_cryptthen    cn=1    no_need_dopi=true    n_crypt=0    while [ $cn -le $cmps ]    do        eval cmp_crypt=\$cmp_${cn}_crypt        if [ -n "$cmp_crypt" ]        then            n_crypt=`$EXPR $n_crypt + 1`            . $install_dir/$ARCH/disk_install_dir            ndevice=$disk_install_dir/file$cn            if do_decrypt_file true            then                eval cmp_${cn}_dopi=true                no_need_dopi=false            fi        fi        cn=`$EXPR $cn + 1`    done    if $no_need_dopi    then        case $n_crypt in        0 )            echo "There are no encrypted components."            ;;        1 )            echo "Failed to install the encrypted component."            echo "There are no components that need to be post-installed."            ;;        * )            echo "Failed to install $n_crypt encrypted components."            echo "There are no components that need to be post-installed."            ;;        esac        exit 0    fielif [ -z "$PID" -a  $command = post_install ]then    #--------------------------------------------------------------------    # Check for pre_patch and do_install_patch scripts.    #--------------------------------------------------------------------    if [ -f $install_dir/pre_patch ]    then        separator        . $install_dir/pre_patch    fi    if [ -f $install_dir/share/do_install_patch ]    then        separator        . $install_dir/share/do_install_patch    fi    # Install any patches that are designated to be installed    # before running apexinit.    run_pre_apexinit_patch    #--------------------------------------------------------------------    # Run installation-group-supplied post_install '.sh' file    #--------------------------------------------------------------------    if [ -f $install_dir/share/$product.sh ]    then        . $install_dir/share/$product.sh    fi    #--------------------------------------------------------------------    # Run product-group-supplied post_install file    #--------------------------------------------------------------------    if [ -f $install_dir/share/$product.post_install ]    then        . $install_dir/share/$product.post_install    fi    #--------------------------------------------------------------------    # Create links to the shared bin directory in the ARCH/bin directory.    # make_bin_links must be defined in PRODUCT.prod_desc.preamble file.    #--------------------------------------------------------------------    if [ "$make_bin_links" = yes  -a  ! -f $prod_home/$ARCH/bin/.bin_link ]    then        echo        echo Making links to shared bin directory in $ARCH/bin...        # Make links to all files in prod_home/bin in prod_home/ARCH/bin        (         cd $prod_home/$ARCH/bin         for _file in $prod_home/bin/*         do             _name=`$BASENAME $_file`             if [ $sym_link $_name ]             then                 rm -f $_name             elif [ -f $_name ]             then                 # Do not create link.  File already exists of the same name.                 continue             fi             if _link_to=`is_a_link $_file`             then                 # It is a link to some file in bin.                 case $_link_to in                     /* )  # Absolute link                         $LN -s $_link_to $_name                         ;;                      * )  # relative link                         $LN -s $prod_home/bin/$_link_to $_name                         ;;                 esac             else                 # Make it a link to the one in prod_home/bin                 $LN -s $_file $_name             fi         done         $TOUCH .bin_link        )    fi    if [ -z "$view_steps" ]    then        run_post_patch        put_var $CMND COMPLETED        exit 0    fifi#------------------------------------------------------------------------# You only want to reach this point if the product has subsystem/views that# need apex set_location, remodel, compile, link and/or frozen (view_steps)# commands applied to them.#------------------------------------------------------------------------# Make sure apexinit is installed properly.#------------------------------------------------------------------------if [ -x $APEX_HOME/bin/apexinit ]then    if [ -f /tmp/lp.start.$$ ]    then        # Tell apexinit to load the layered product's init file.        add_cleanup_file /tmp/lp.start.$$        APEXINIT="$APEX_HOME/bin/apexinit -startup /tmp/lp.start.$$"    elif [ "$apex_layered_product" = yes ]    then        echo "$product.$product_version $prod_home" > /tmp/lp.start.$$        add_cleanup_file /tmp/lp.start.$$        APEXINIT="$APEX_HOME/bin/apexinit -startup /tmp/lp.start.$$"    else        APEXINIT=$APEX_HOME/bin/apexinit    fielse    fatal "Cannot find apexinit in $APEX_HOME/bin.           Check that APEX_HOME is set correctly and that           Rational Apex installation is complete."fi#------------------------------------------------------------------------# Set location, remodel, install, compile, link and freeze subsystems.#------------------------------------------------------------------------customize_subsystemsif [ $? -ne 0 ]then    fatal "$product_name '$command' command failed."firun_post_patchif [ -z "$PID" ]then    put_var $CMND COMPLETEDfi