################################################################# # # # Copyright 2001, 2005 Fidelity Information Services, Inc # # # # This source code contains the intellectual property # # of its copyright holder(s), and is made available # # under a license. If you do not know the terms of # # the license, please stop and do not read further. # # # ################################################################# # ############################################################################################### # # setactive1.csh - auxiliary script for setactive.csh # (based on the VMS script GTM$COM:SETACTIVE.COM) # # Because setactive.csh must set environment variables, it cannot be run as a subproces, # but rather must be source'd. Unfortunately, the logic required is too complex (due, # apparently to problems buffering the command input stream), so setactive.csh invokes # this shell script as a subprocess to deal with the logic. In order to pass information # back to the parent process, setactive1.csh writes a shell script to be source'd by the # parent process on completion. # # Arguments: # $1 - new version (a, d, p, or specific version number) # $2 - image type (b, d, or p for bta, dbg, or pro) # $3 - 1 => interactive invocation, prompt for input and correcctions # 0 => non-interactive invocation # $4 - name of file to which to write setenv commands # (probably somewhere in /tmp) # # At exit: # $status == 0 => success # != 0 => failure # # If $status == 0, then the file named in $4 contains the necessary set and # setenv commands to effect a change of GT.M version. This file should be # source'd by setactive.csh. # # N. B. Most of the labels aren't actually used; they're just for cross-reference with # the VMS GTM$COM:SETACTIVE.COM file. # ############################################################################################### # Echo is modified for R-F test: Layek - 2/16/99 # Some times GROUP may be undefined if ($?GROUP == 0) setenv GROUP "" set setactive_status = 1 # not found yet if ( $?gtm_ver_noecho == 0 ) then echo "Versions:" echo " Active " $gtm_verno echo " Production " $gtm_curpro endif set setactive_p1 = `echo $1 | tr '[a-z]' '[A-Z]'` set setactive_p2 = "$2" set setactive_interact = "$3" set setactive_gtmdev = ( $gtm_gtmdev ) set setactive_prompt_for_type = "0" unset setactive_found_version unset setactive_doesnt_exist GETVER: while ( $?setactive_found_version == "0" && $?setactive_doesnt_exist == "0" ) if ( $setactive_interact == "1" && $setactive_p1 == "" && $setactive_p2 == "" ) then echo -n "Enter A, P, D, or : " set setactive_p1 = $< set setactive_prompt_for_type = "1" # setactive_p1 won't be null anymore, but we can test for this endif switch ($setactive_p1) case "": case "[Aa]": echo "Version not changed" # no change if unspecified or set setactive_found_version # specified as currently active version breaksw case "[Dd]": case "[Pp]": setenv gtm_verno $gtm_curpro # production version set setactive_found_version breaksw default: # It's not a code letter so assume it's a version name; check for existence of directory. # Convert first argument to its corresponding development directory name. set setactive_version = "`$shell -f $gtm_tools/gtm_version_dirname.csh $setactive_p1`" VER_LOOP: # Now look for a matching release directory. # First look through all devices on which it might reside: foreach setactive_device ($gtm_gtmdev) if ( "$setactive_device" == "NULL" ) then set setactive_device = "~" endif set setactive_topdir = $setactive_device/$gtm_topdir if ( -d $setactive_topdir/$setactive_version ) then if ( -f $setactive_topdir/$setactive_version/gtmsrc.csh ) then setenv gtm_verno $setactive_version # directory name, not input argument value set setactive_found_version else echo "$setactive_topdir/$setactive_version exists, but there's no gtmsrc.csh" set setactive_doesnt_exist # actually, just isn't set up properly endif break endif end if ( $?setactive_found_version == "0" || $?setactive_doesnt_exist == "1" ) then echo "Version $setactive_p1 is not available" set setactive_p1 = "" if ( $setactive_interact == "0" ) then echo "No action taken" set setactive_doesnt_exist set setactive_status = 2 goto FINI else # Interactive invocation -- prompt for corrections. # First, list existing versions: echo "" echo "Available versions are:" echo "" INDEX_LOOP: foreach setactive_device ($gtm_gtmdev) DIR_LOOP: foreach setactive_verdir ($setactive_device/$gtm_topdir/V[0-9][0-9]*) if ( -d $setactive_verdir ) then set setactive_version = `basename $setactive_verdir` echo $setactive_version endif end end endif endif breaksw endsw end if ( $?setactive_found_version == "1" ) then set setactive_status = 0 # success if ( $?setactive_device == "0" ) then LOOP_INDEX: # Since setactive_device is unset, we have not located the root directory for the release # named in gtm_verno (the version was probably specified by a code letter); look for it now. foreach setactive_device ($gtm_gtmdev) if ( "$setactive_device" == "NULL" ) then set setactive_device = "$gtm_gtmdev/" endif if ( -d $setactive_device/$gtm_topdir/$gtm_verno ) then break endif end endif # Note we set gtm_ver and gtm_vrt to the same value on Unix. On VMS, these must be # separate logicals, one more-or-less normal and the other concealed. For compatibility, # we should keep both environment variables distinct on Unix even though they have the # same value. setenv gtm_ver $setactive_device/$gtm_topdir/$gtm_verno setenv gtm_vrt $gtm_ver if ( -d $gtm_ver ) then if ( -f $gtm_ver/gtmsrc.csh ) then source $gtm_ver/gtmsrc.csh if ( $?gtm_ver_noecho == 0 ) echo "Version is now $gtm_verno" else echo "$gtm_ver exists, but $gtm_ver/gtmsrc.csh does not exist" set setactive_status = 3 endif else echo "$gtm_ver does not exist" set setactive_status = 4 endif endif set setactive_old_gtm_exe = `basename $gtm_exe` switch ($setactive_old_gtm_exe) case "[Bb][Tt][Aa]": set setactive_binary_desc = "optimized, with asserts, and without debugger information" breaksw case "[Dd][Bb][Gg]": set setactive_binary_desc = "unoptimized, with asserts, and with debugger information" breaksw case "[Pp][Rr][Oo]": set setactive_binary_desc = "optimized, without asserts, and without debugger information" breaksw default: set setactive_binary_desc = "with unknown options" breaksw endsw if ( $?gtm_ver_noecho == 0 ) then echo "" echo "The previous binaries in use were from $gtm_exe" echo "which were compiled, assembled, and linked $setactive_binary_desc." endif unset setactive_found_type_code # GETTYPE: while ( $?setactive_found_type_code == "0" ) if ( $setactive_prompt_for_type == "1" ) then echo -n "Enter b for beta (bta), d for debug (dbg), p production (pro), or for no change: " set setactive_p2 = $< endif if ( "$setactive_p2" == "" ) then setenv gtm_exe $gtm_vrt/$setactive_old_gtm_exe # whatever it used to be set setactive_found_type_code # a null at this point is intentional and means no change of binary type else switch ($setactive_p2) case "[Bb]*": setenv gtm_exe $gtm_ver/bta # BTA set setactive_found_type_code breaksw case "[Dd]*": setenv gtm_exe $gtm_ver/dbg # DBG set setactive_found_type_code breaksw case "[Pp]*": setenv gtm_exe $gtm_ver/pro # PRO set setactive_found_type_code breaksw default: echo "Image type code $setactive_p2 is not known." if ( $setactive_interact == "1" ) then set setactive_p2 = "" # throw away invalid value else setenv gtm_exe $gtm_vrt/$setactive_old_gtm_exe # whatever it used to be set setactive_found_type_code # can't correct it, just give up and take leave as is echo "Image types in use have not been changed." endif breaksw endsw endif end switch (`basename $gtm_exe`) case "[Bb][Tt][Aa]": set setactive_binary_desc = "optimized, with asserts, and without debugger information" breaksw case "[Dd][Bb][Gg]": set setactive_binary_desc = "unoptimized, with asserts, and with debugger information" breaksw case "[Pp][Rr][Oo]": set setactive_binary_desc = "optimized, without asserts, and without debugger information" breaksw default: set setactive_binary_desc = "with unknown options" breaksw endsw if ( $?gtm_ver_noecho == 0 ) then echo "" echo "The binaries in use are now from $gtm_exe" echo "which were compiled, assembled, and linked $setactive_binary_desc." endif echo "setenv gtm_verno $gtm_verno" >> $4 echo "setenv gtm_ver $gtm_ver" >> $4 echo "setenv gtm_vrt $gtm_vrt" >> $4 echo "setenv gtm_bta $gtm_vrt/bta" >> $4 echo "setenv gtm_dbg $gtm_vrt/dbg" >> $4 echo "setenv gtm_pro $gtm_vrt/pro" >> $4 if (-w $gtm_vrt/log ) then echo "setenv gtm_log $gtm_vrt/log" >> $4 else echo "SETACTIVE1-E-LOGPERM : $gtm_vrt/log does not have group write permissions. Please fix that." echo "setenv gtm_log $gtm_log_path/$gtm_verno" >> $4 endif echo "setenv gtm_misc $gtm_vrt/misc" >> $4 echo "setenv gtm_tags $gtm_vrt/misc/tags" >> $4 echo "setenv gtm_exe $gtm_exe" >> $4 echo "setenv gtm_dist $gtm_exe" >> $4 echo "setenv gtm_lint $gtm_exe/lint" >> $4 echo "setenv gtm_map $gtm_exe/map" >> $4 echo "setenv gtm_obj $gtm_exe/obj" >> $4 FINI: exit $setactive_status