# # QSUB -s /bin/csh # QSUB -lT 30:00 # QSUB -q prem # QSUB -lM 10Mw # QSUB -nr # # 6/3/97: Rewrite /FOSTER/tgcm/tgcm12_src.tar w/ mods for f90 # (modsrc_f90) and in-core option (modsrc_incore). # Also write object tar files for f77ymp, f90ymp, f90jse, f90c90, etc. # # Cray script to tar tgcm source on remote unix machine, rcp to cwd, # extract, compile, and optionally write source and object tar files # to mss. # This will typically be used to write an cvs updated or new version # of tgcm to mss from vishnu:$TGCMROOT/tgcm_version. # The mss filenames are usually /FOSTER/tgcm/$tgcmversion_src.tar, # and /FOSTER/tgcm/$tgcmversion_obj.tar. # Source tar file is written to mss only if mss_src is set, and # Object tar file is written to mss only if mss_obj is set, and # For testing, one might comment out mss_src and mss_obj, run this script # (it will stop after make), and make some test runs of the model before # disposing to mss in a later job. # Also, may want to run this 1st w/ both mss_src and mss_obj set, then # make subsequent runs on different machines w/ only mss_obj set # to write different objects for different machines and compilers. # cd $TMPDIR set tgcm_version = tgcm12 batchname wrmss_$tgcm_version.$$ set tmpdir = /usr/tmp/foster if (! -e $tmpdir) mkdir 777 $tmpdir set rmach = vishnu.hao.ucar.edu # remote unix machine set rdir = /home/tgcm/$tgcm_version # remote unix directory to get src # set srctar = ${tgcm_version}_src.tar #set mss_src = /FOSTER/tgcm/$srctar set CF = f90 # fortran compiler set ARCH = j90 # machine type set objtar = ${tgcm_version}_${CF}${ARCH}_obj.tar set mss_obj = /FOSTER/tgcm/$objtar # # Get source tar file from remote unix and extract source: # #rsh $rmach "cd $rdir ; tar cf $srctar *.h *.f" || goto tar_fail #echo "Made $srctar on $rmach at $rdir" rcp ${rmach}:${rdir}/${srctar} . || goto rcpsrc_fail echo "Copied ${rdir}/${srctar} from $rmach" #rsh $rmach "cd $rdir ; rm $srctar" #echo "Removed ${rdir}/${srctar} from $rmach" tar xf $srctar echo "Extracted source from $srctar" # # Make Depends (dependencies), Objects (list of objects), and run make: # INCLUDE -h $TGCMROOT/bin/mkdep #INCLUDE -h ~/tgcm/bin/mkdep if (-e Depends) rm -f Depends if (-e Objects) rm -f Objects echo ' ' echo Executing mkdep ... perl mkdep || goto mkdep_fail # # Make Makefile according to CF and ARCH: # INCLUDE -h $TGCMROOT/bin/mkmake #INCLUDE -h ~/tgcm/bin/mkmake if (-e Makefile) then echo "Using existing Makefile -- mkmake not used." else if (! $?FFLAGS) set FFLAGS = "(default)" if (! $?LDFLAGS) set LDFLAGS = "(default)" echo ' ' echo Executing mkmake to make Makefile... perl mkmake $CF $ARCH FFLAGS=$FFLAGS LDFLAGS=$LDFLAGS || goto mkmake_fail endif # echo Making executable ... make || goto make_fail # # Make succeeded -- write source tar file to mss if requested: # if ($?mss_src) then echo "Writing $srctar to mss $mss_src ..." mswrite -t 367 $srctar $mss_src || goto msssrc_fail endif # # tar up the object code and write it to mss if requested: # if ($?mss_obj) then tar cf $objtar *.o echo "Writing $objtar to mss $mss_obj ..." mswrite -t 367 $objtar $mss_obj || goto mssobj_fail endif # # Clean up any old version off the disk: # (should also manually clean up from tmpdir on other Crays) # if (-d ${tmpdir}/${srctar}) then rm ${tmpdir}/${srctar} echo Removed ${tmpdir}/${srctar} endif if (-d ${tmpdir}/${objtar}) then rm ${tmpdir}/${objtar} echo Removed ${tmpdir}/${objtar} endif endif exit 0 # #-------------------------------------------------------------- # # Error traps: # rcpsrc_fail: echo "rcp of remote src ${rmach}:${rdir}/${srctar} failed" exit 1 # tar_fail: echo "remote tar command failed" exit 1 # mkdep_fail: echo "mkdep failed" exit 1 # mkmake_fail: echo "mkmake failed" exit 1 # make_fail: echo "make failed" exit 1 # msssrc_fail: echo "mswrite of $srctar to $mss_src failed" exit 1 # mssobj_fail: echo "mswrite of $objtar to $mss_obj failed" exit 1 #