home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / JBuilder8.iso / install_solaris < prev    next >
Text File  |  2002-11-12  |  36KB  |  1,300 lines

  1. #!/bin/sh
  2. # LaunchAnywhere (tm) version 4.0
  3. # (c) Copyright 1999,2000 Zero G Software, Inc., all rights reserved.
  4. #
  5. #  To run this script you will need to have the following:
  6. #    1) a Java VM installed (however, it will handle a lack of Java nicely).
  7. #    2) a Java-style properties file having the same name as this script 
  8. #        with the suffix .lax.  If this script is appended to the
  9. #        self-extractor, it will look for the properties file in the
  10. #        directory specified by $seLaxPath; otherwise, it will look in
  11. #        the same directory that this script is in.
  12. #    3) a Java program in the file "lax.jar".
  13. #
  14. #  The .lax property file must contain at least the following properties:
  15. #    1)  lax.class.path  classpath (do not include the environment variable $CLASSPATH)
  16. #    2)  lax.nl.java.launcher.main.class  (main class of LaunchAnywhere Executable)
  17. #    3)  lax.currentVM  (VM to launch with)
  18. #
  19. #  This program is also used for the "Try It!" feature of the InstallAnywhere
  20. #  designer.  If the name of a VM is passed in as an argument when invoking
  21. #  this script, the VM will be checked for validity and used to run the 
  22. #  application specified in the .lax file.
  23.  
  24.  
  25. ####################################################################################
  26. # Set some constants
  27. if [ "$1" = "LAX_VM" ]; then
  28.     lax_vm="LAX_VM"
  29.     lax_vm_value="$2"
  30.     shift 2
  31. else
  32.     lax_vm=""
  33. fi 
  34. anyVMlist="JDK_J2 D12 JRE_J2 R12 JDK_J1 JRE_J1 JDK JRE ALL" 
  35.  
  36.  
  37. ####################################################################################
  38. # Format commandline args
  39. # To overcome the problem of quoted args (with internal spaces) to the launcher
  40. # is that they get "unquoted" or separated into discreet args when they are put
  41. # on the cmdline for the application.  This following block makes  sure the stay intact
  42. tmpArgs=""
  43. for arg in "$@"
  44. do
  45.         if [ "$arg" != "" ]
  46.         then
  47.                 tmpArgs="$tmpArgs \"$arg\""
  48.         fi
  49. done
  50. cmdLineArgs=$tmpArgs
  51. thisScript=$0
  52. # make sure thisScript is an abs path
  53. case $thisScript in
  54.     /*)
  55.     ;;
  56.     *)
  57.         thisScript="`pwd`/$thisScript"
  58.     ;;
  59. esac
  60.  
  61.  
  62. ####################################################################################
  63. #
  64. # WHere does the LAX_DEBUG output go?
  65. #
  66.  
  67. if [ "$LAX_DEBUG" = "file" ]; then
  68.     jx_log="`pwd`/jx.log"
  69.     rm -f "$jx_log"
  70.     touch "$jx_log"
  71.     if [ "$?" -gt "0" ]; then
  72.         jx_log_ok="false"
  73.         echo "Could not create $jx_log.  Sending debug output to console."
  74.     else 
  75.         jx_log_ok="true"
  76.     fi
  77. fi
  78.  
  79. debugOut()
  80. {
  81.     case "$LAX_DEBUG" in
  82.         "file" ) 
  83.             if [ "$jx_log_ok" = "true" ]; then
  84.                 echo "$1" >> "$jx_log"
  85.             else
  86.                 echo "$1"
  87.             fi
  88.         ;;
  89.         ""     )
  90.             echo "$1" >> /dev/null
  91.         ;;
  92.         *      )
  93.             echo "$1"
  94.         ;;
  95.     esac
  96. }
  97.  
  98. ####################################################################################
  99. #
  100. # UNIX ENVIRONMENT configuration
  101. #
  102. # Get os type , note that it is LOWER-CASED.  Used here and later on
  103. osName=`uname -s 2> /dev/null | tr "[:upper:]" "[:lower:]" 2> /dev/null`
  104. vmScript=".java_wrapper"
  105. case "$osName" in
  106.     *irix*)
  107.         cpuName="unknown"
  108.     ;;
  109.     *hp-ux*|*hpux*)
  110.         cpuName=`uname -m 2> /dev/null`
  111.     ;;
  112.     *solaris*|*sunos*)
  113.         cpuName=`uname -p 2> /dev/null`
  114.         THREADS_FLAG="";    export THREADS_FLAG 
  115.         PATH=/usr/bin:$PATH;    export PATH
  116.     ;;
  117.     *aix*)
  118.         cpuName="unknown"
  119.     ;;
  120.     *freebsd*)
  121.         cpuName=`uname -p 2> /dev/null`
  122.     ;;
  123.     *linux*)
  124.         cpuName=`uname -m 2> /dev/null`
  125.     ;;
  126.     *rhapsody*|*macos*)
  127.         cpuName=`uname -p 2> /dev/null`
  128.         vmScript=".java_command"
  129.     ;;
  130.     *compaq*|*dg*|*osf*)
  131.         cpuName="unknown"
  132.     ;;
  133.     *)
  134.         cpuName="unknown"
  135.     ;;
  136. esac
  137.  
  138. if [ -x /bin/ls ]; then
  139.     lsCMD="/bin/ls"
  140. else
  141.     lsCMD="/usr/bin/ls"
  142. fi
  143.  
  144. ####################################################################################
  145. # CREATE ENV.PROPERTIES and figure out if this is being exec'd from an installer
  146. #
  147. # Since USERENV is already set in the self-extractor, its its not set we know
  148. # this is not an installer but a separate launcher.  USERENV holds env variable
  149. # pairs
  150. #
  151. IS_INSTALLER=""
  152. if [ ! -z "$USERENV" ]; then
  153.     IS_INSTALLER="true"
  154. fi
  155. #
  156. # The sed command is used to escape backslashes so that when the properties
  157. # file is read by the java.util.Properties object, there is not a problem
  158. # with incorrectly interpreted escaped unicode.
  159. #
  160. USERENV=""; USERENV=`set | sed 's/\\\\/\\\\\\\\\\\\/g'`
  161. set x $USERENV; shift
  162. if [ -z "$envPropertiesFile" ]
  163. then
  164.     if [ -d /tmp ]
  165.     then
  166.         envPropertiesFile=/tmp/env.properties.$$
  167.     else
  168.         envPropertiesFile=$HOME/env.properties.$$
  169.     fi
  170. fi
  171. #
  172. # create the properties files BEFORE writing to it so that we can change is permissions to be more
  173. # secure... who knows? maybe the user has a password in an environment variable!
  174. #
  175. touch $envPropertiesFile
  176. chmod 600 $envPropertiesFile
  177. #
  178. # The first sed call is to escape spaces and tables from the RHS of environment values.
  179. # This white space would be interpreted as separate arguments to the for statement. So
  180. # this escaping with ||| for spaces and @@@ for tabs makes sure that env values with
  181. # such whitespace is accounted for
  182. OFS="$IFS"
  183. while test $# -gt 0; do
  184.     # line separator
  185.     case "x${1}x" in
  186.         *"="* ) BIFS=" "; ;;
  187.         *     ) BIFS="" ; ;;
  188.     esac
  189.     # word separator
  190.     case "x${2}x" in
  191.         *"="* ) AIFS=""; ;;
  192.         *     ) AIFS="" ; ;;
  193.     esac
  194.     INPUT="$INPUT$BIFS$1$AIFS"
  195.     shift
  196. done
  197.  
  198. while test "x$INPUT" != "x"; do
  199.     # get line
  200.     set x $INPUT; shift
  201.     X="$1"
  202.     shift
  203.     # remove word separators
  204.     INPUT="$@" 
  205.     IFS="=$AIFS"
  206.     set x $X; shift
  207.     IFS="$OFS"
  208.  
  209.     # assign values
  210.     lhs="$1"
  211.     shift
  212.     rhs="$@"
  213.  
  214.     #
  215.     # shove to file
  216.     #
  217.     # output in exact case stuff
  218.     echo lax.nl.env.exact_case.$lhs=$rhs >> $envPropertiesFile
  219.     # output the upper case stuff
  220.     lhs=`echo $lhs | tr [:lower:] [:upper:] 2> /dev/null`
  221.     echo lax.nl.env.$lhs=$rhs >> $envPropertiesFile
  222.     # output the lower case stuff
  223.     lhs=`echo $lhs | tr [:upper:] [:lower:] 2> /dev/null`
  224.     echo lax.nl.env.$lhs=$rhs >> $envPropertiesFile
  225. done
  226.  
  227. ####################################################################################
  228. #
  229. # Tracing symbolic links to actual launcher location
  230. #
  231.  
  232. resolveLink()
  233. {
  234.     rl_linked="true"
  235.     rl_operand="$1"
  236.     rl_origDir="`dirname "$1"`"
  237.  
  238.     # bypass the whole thing if this isnt a link
  239.     rl_ls=`$lsCMD -l "$rl_operand"`
  240.     case "$rl_ls" in
  241.         *"->"*)
  242.         ;;
  243.         *)
  244.             resolvedLink="$rl_operand"
  245.             return
  246.         ;;
  247.     esac 
  248.     
  249.     while [ "$rl_linked" = "true" ]; do
  250.         # if the operand is not of an abs path, get its abs path
  251.         case "$rl_operand" in
  252.             /*)
  253.                 rl_origDir=`dirname "$rl_operand"`
  254.             ;;
  255.             \./*)
  256.                 rl_origDir=`pwd`
  257.                 rl_operand="$rl_origDir/$rl_operand"
  258.             ;;
  259.             *)
  260.                 rl_operand="$rl_origDir/$rl_operand"
  261.             ;;
  262.         esac
  263.         #
  264.         # the prevPrev hack is here because .../java often points to .java_wrapper.
  265.         # at the end of the resolution rl_operand actually points to garbage
  266.         # signifying it is done resolving the link.  So prev is actually .java_wrapper.
  267.         # but we want the one just before that, its the real vm starting poiint we want
  268.         #
  269.         rl_prevOperand="$rl_operand"
  270.         rl_ls=`$lsCMD -l "$rl_operand"`
  271.         # get the output ls into a list
  272.         set x $rl_ls
  273.         # get rid of x and file info from ls -l
  274.         shift 9
  275.         
  276.         #is this a link?
  277.         case "$rl_ls" in
  278.             *"->"*)
  279.                 rl_linked="true"
  280.                 # is a link, shift past the "->"
  281.                 rl_linker=""
  282.                 while [ "$1" != "->" -a $# -gt 1 ]; do
  283.                     rl_linker="$rl_linker $1"
  284.                     shift
  285.                 done
  286.     
  287.                 if [ "$1" = "->" ]; then
  288.                     shift
  289.                 fi
  290.             ;;
  291.             *)
  292.                 # not a link, the rest must be the targets name
  293.                 rl_linked="false"
  294.             ;;
  295.         esac
  296.         # now grab what's left 
  297.         rl_linkee="$*"
  298.  
  299.         debugOut "Following link to LAX $rl_linker -> $rl_linkee"
  300.  
  301.         if [ "$rl_linked" = "true" -a "$rl_linkee" != "$vmScript" ]; then
  302.             # set to true incase the thing linked to is also a link and we can
  303.             # try again.  The current think linked to now becomes the operand
  304.             rl_operand="$rl_linkee"
  305.             # if the linkee is not abs, make it abs relative to the linker
  306.             case "$rl_operand" in
  307.                 /*)
  308.                 ;;
  309.                 *)
  310.                     rl_operand="$rl_origDir/$rl_operand"
  311.                 ;;
  312.             esac
  313.         else
  314.             # otherwise, this operand is not a link itself and we are done
  315.             rl_resolvedLink="$rl_prevOperand"
  316.             # however, do not resolve the last leg of a VMs linked scripts. this will
  317.             # disrupt their scripts.  it is expecting a link to the .java* script
  318.             # let us believe it is not linked and continue on...
  319.             if [ "$rl_linkee" = "$vmScript" ]; then
  320.                 rl_linked="false"
  321.             fi
  322.         fi
  323.         # make sure the path returned is absolute
  324.         case "$rl_operand" in
  325.             \.\/*)
  326.                 rl_operand="`pwd`/$rl_operand"
  327.             ;;
  328.         esac
  329.     done
  330.  
  331.     # remove "/./" in paths, make it "/"
  332.     # i,e,  "/a/b/./c" becomes "/a/b/c"
  333.     resolvedLink=`echo "$rl_resolvedLink" |  sed 's,/\./,/,'`
  334. }
  335.  
  336. ####################################################################################
  337. #
  338. #  FINDING THE LAX FILE
  339. #
  340. # If this is an installer, use $seLaxPath
  341. #
  342. debugOut ""
  343. debugOut "========= Analyzing LAX =============================================="
  344. olddir=`pwd`
  345. resolveLink "$thisScript"
  346. absLauncherName="$resolvedLink"
  347. cd "`dirname "$absLauncherName"`"
  348. if [ "$IS_INSTALLER" != "" ]; then
  349.     if [ ! -z "$seLaxPath" ]; then
  350.         propfname=$seLaxPath
  351.     else
  352.         # legacy for old self-extractors
  353.         propfname=$templaxpath
  354.     fi 
  355. else
  356.     propfname=$absLauncherName.lax
  357. fi
  358.  
  359.  
  360. if [ ! -r "$propfname" ]; then
  361.     debugOut "The file "$propfname" could not be found, and the"
  362.     debugOut "program cannot be run without it.  Try reinstalling the program."
  363.     exit;
  364. else 
  365.     debugOut "LAX found............................ OK."
  366. fi
  367.  
  368.  
  369. ####################################################################################
  370. # READING THE LAX FILE
  371. #
  372. OFS="$IFS"
  373. # run prop file through sed calls that do:
  374. # 1. transform first '=' on a line into a control-O
  375. # 2. transform all other ='s to control-F
  376. # 3. transform control-Os back to =
  377. # this is to differentiate the lhs=rhs processing from confusing the first = from other
  378. # = that might be part of the value.  Later on those =-tranformed-to-control-Fs are
  379. # transformed back to = signs.
  380. set x `cat "$propfname" | sed -e 's~^\([^\=]*\)\=\(.*\)~\1\\2~g' -e 's~=~~g' -e 's~~=~g' | grep '='`; shift
  381.  
  382. while test $# -gt 0; do
  383.     # line separator
  384.     case "x${1}x" in
  385.         *"="* ) BIFS=" "; ;;
  386.         *     ) BIFS="" ; ;;
  387.     esac
  388.     # word separator
  389.     case "x${2}x" in
  390.         *"="* ) AIFS=""; ;;
  391.         *     ) AIFS=""; ;;
  392.     esac
  393.     INPUT="$INPUT$BIFS$1$AIFS"
  394.     shift
  395. done
  396.  
  397. while test "x$INPUT" != "x"; do
  398.     set x $INPUT; shift
  399.     X="$1"
  400.     shift
  401.     INPUT="$@" 
  402.     IFS="=$AIFS"
  403.     set x $X; shift
  404.     IFS="$OFS"
  405.  
  406.     lhs="${1}"
  407.     shift
  408.     rhs="$@"
  409.  
  410.     # transform non lhs=rhs delimiting = signs back from ^F to =
  411.     case "$rhs" in
  412.         **)
  413.         rhs=`echo $rhs | sed 's~~=~g'`
  414.         ;;
  415.     esac
  416.  
  417.     # assing the values
  418.     case $lhs in
  419.         lax.class.path*)
  420.             lax_class_path="$rhs"
  421.         ;;
  422.         lax.main.class*)
  423.             lax_main_class="$rhs"
  424.         ;;
  425.         lax.nl.java.launcher.main.class*)
  426.             lax_nl_java_launcher_main_class="$rhs"
  427.         ;;
  428.         lax.nl.current.vm*)
  429.             lax_nl_current_vm="$rhs"
  430.         ;;
  431.         lax.user.dir*)
  432. #            lax_user_dir=`echo $lax_user_dir | sed 's;^[ ]*\(.*\)[ ]*$;\1;'`
  433.             # transform PWD to resolved dir
  434.             case "$rhs" in
  435.                 '$PWD')
  436.                    rhs=`pwd`/
  437.                    ;;
  438.             esac
  439.             lax_user_dir="$rhs"
  440.             debugOut "Lax_User_Dir..................$lax_user_dir"
  441.         ;;
  442.         lax.stdout.redirect*)
  443.             lax_stdout_redirect="$rhs"
  444.         ;;
  445.         lax.stderr.redirect*)
  446.             lax_stderr_redirect="$rhs"
  447.         ;;
  448.         lax.dir*)
  449.             # transform PWD to resolved dir
  450.             case "$rhs" in
  451.                 '$PWD')
  452.                    rhs=`pwd`/
  453.                    ;;
  454.             esac
  455.             lax_dir="$rhs"
  456.             debugOut "Lax_Dir..................$lax_dir"
  457.         ;;
  458.         lax.always.ask*)
  459.             lax_always_ask="$rhs"
  460.         ;;
  461.         lax.application.name*)
  462.             lax_application_name="$rhs"
  463.         ;;
  464.         lax.nl.message.vm.not.loaded*)
  465.             lax_nl_message_vm_loaded="$rhs"
  466.         ;;
  467.         lax.nl.valid.vm.list*)
  468.             # transform an blank value to "ALL"
  469.             case "$rhs" in
  470.                 "") rhs="ALL"; ;;
  471.             esac
  472.             lax_nl_valid_vm_list="$rhs"
  473.         ;;
  474.         lax.nl.java.option.check.source*)
  475.             verify_type="$rhs"
  476.         ;;
  477.         lax.nl.java.option.verify.mode*)
  478.             verify="$rhs"
  479.         ;;
  480.         lax.nl.java.option.verbose*)
  481.             verbo="$rhs"
  482.         ;;
  483.         lax.nl.java.option.garbage.collection.extent*)
  484.             gcxtnt="$rhs"
  485.         ;;
  486.         lax.nl.java.option.garbage.collection.background.thread*)
  487.             gcthrd="$rhs"
  488.         ;;
  489.         lax.nl.java.option.native.stack.size.max*)
  490.             nsmax="$rhs"
  491.         ;;
  492.         lax.nl.java.option.java.stack.size.max*)
  493.             jsmax="$rhs"
  494.         ;;
  495.         lax.nl.java.option.java.heap.size.max*)
  496.             jhmax="$rhs"
  497.         ;;
  498.         lax.nl.java.option.java.heap.size.initial*)
  499.             jhinit="$rhs"
  500.         ;;
  501.         lax.nl.java.option.debugging*)
  502.             debug="$rhs"
  503.         ;;
  504.         lax.nl.$osName.$cpuName.java.compiler*)
  505.             lax_nl_osname_cpuname_java_compiler="$rhs"
  506.         ;;
  507.         lax.nl.$osName.java.compiler*)
  508.             lax_nl_osname_java_compiler="$rhs"
  509.         ;;
  510.         lax.nl.java.compiler*)
  511.             lax_nl_java_compiler="$rhs"
  512.         ;;
  513.         lax.nl.java.option.additional*)
  514.             lax_nl_java_option_additional="$rhs"
  515.         ;;
  516.         ######################################################
  517.         # JIT overrides
  518.         lax.nl.unix.JDK_J1.java.compiler*)
  519.             lax_nl_unix_JDK_J1_java_compiler="$rhs"
  520.         ;;
  521.         lax.nl.unix.JDK_J2.java.compiler*)
  522.             lax_nl_unix_JDK_J2_java_compiler="$rhs"
  523.         ;;
  524.         lax.nl.unix.JRE_J1.java.compiler*)
  525.             lax_nl_unix_JRE_J1_java_compiler="$rhs"
  526.         ;;
  527.         lax.nl.unix.JRE_J2.java.compiler*)
  528.             lax_nl_unix_JRE_J2_java_compiler="$rhs"
  529.         ;;
  530.         lax.nl.unix.J1.java.compiler*)
  531.             lax_nl_unix_J1_java_compiler="$rhs"
  532.         ;;
  533.         lax.nl.unix.J2.java.compiler*)
  534.             lax_nl_unix_J2_java_compiler="$rhs"
  535.         ;;
  536.         lax.nl.unix.JRE.java.compiler*)
  537.             lax_nl_unix_JRE_java_compiler="$rhs"
  538.         ;;
  539.         lax.nl.unix.JDK.java.compiler*)
  540.             lax_nl_unix_JDK_java_compiler="$rhs"
  541.         ;;
  542.         lax.nl.unix.ALL.java.compiler*)
  543.             lax_nl_unix_ALL_java_compiler="$rhs"
  544.         ;;
  545.         #
  546.         lax.nl.JDK_J1.java.compiler*)
  547.             lax_nl_JDK_J1_java_compiler="$rhs"
  548.         ;;
  549.         lax.nl.JDK_J2.java.compiler*)
  550.             lax_nl_JDK_J2_java_compiler="$rhs"
  551.         ;;
  552.         lax.nl.JRE_J1.java.compiler*)
  553.             lax_nl_JRE_J1_java_compiler="$rhs"
  554.         ;;
  555.         lax.nl.JRE_J2.java.compiler*)
  556.             lax_nl_JRE_J2_java_compiler="$rhs"
  557.         ;;
  558.         lax.nl.J1.java.compiler*)
  559.             lax_nl_J1_java_compiler="$rhs"
  560.         ;;
  561.         lax.nl.J2.java.compiler*)
  562.             lax_nl_J2_java_compiler="$rhs"
  563.         ;;
  564.         lax.nl.JRE.java.compiler*)
  565.             lax_nl_JRE_java_compiler="$rhs"
  566.         ;;
  567.         lax.nl.JDK.java.compiler*)
  568.             lax_nl_JDK_java_compiler="$rhs"
  569.         ;;
  570.         lax.nl.ALL.java.compiler*)
  571.             lax_nl_ALL_java_compiler="$rhs"
  572.         ;;
  573.         #
  574.         lax.nl.$osName.JDK_J1.java.compiler*)
  575.             lax_nl_osname_JDK_J1_java_compiler="$rhs"
  576.         ;;
  577.         lax.nl.$osName.JDK_J2.java.compiler*)
  578.             lax_nl_osname_JDK_J2_java_compiler="$rhs"
  579.         ;;
  580.         lax.nl.$osName.JRE_J1.java.compiler*)
  581.             lax_nl_osname_JRE_J1_java_compiler="$rhs"
  582.         ;;
  583.         lax.nl.$osName.JRE_J2.java.compiler*)
  584.             lax_nl_osname_JRE_J2_java_compiler="$rhs"
  585.         ;;
  586.         lax.nl.$osName.J1.java.compiler*)
  587.             lax_nl_osname_J1_java_compiler="$rhs"
  588.         ;;
  589.         lax.nl.$osName.J2.java.compiler*)
  590.             lax_nl_osname_J2_java_compiler="$rhs"
  591.         ;;
  592.         lax.nl.$osName.JRE.java.compiler*)
  593.             lax_nl_osname_JRE_java_compiler="$rhs"
  594.         ;;
  595.         lax.nl.$osName.JDK.java.compiler*)
  596.             lax_nl_osname_JDK_java_compiler="$rhs"
  597.         ;;
  598.         lax.nl.$osName.ALL.java.compiler*)
  599.             lax_nl_osname_ALL_java_compiler="$rhs"
  600.         ;;
  601.         #
  602.         # JIT overrides
  603.         ######################################################
  604.     esac
  605. done
  606.  
  607. debugOut "LAX properties read.................. OK."
  608.  
  609. if [ "${lax_class_path:-""}" = "" ]; then
  610.     debugOut "The classpath specified in the LAX properties file"
  611.     debugOut "is invalid.  Try reinstalling the program."    
  612.     exit;
  613. fi
  614. if [ "${lax_nl_java_launcher_main_class:-""}" = "" ]; then
  615.     debugOut "The main class specified in the LAX properties file"
  616.     debugOut "is invalid.  Try reinstalling the program."
  617.     exit;
  618. fi
  619.  
  620. if [ ! -z "$INSTALLER_OVERRIDE_VMLIST" ]; then
  621.     lax_nl_valid_vm_list="$INSTALLER_OVERRIDE_VMLIST"
  622. fi
  623.  
  624.  
  625. ####################################################################################
  626. #
  627. # if  user.dir != .   then relative paths on the classpath will be broken.  they
  628. # are expecting the pwd to be '.' (meaning the install dir).  If user.dir is
  629. # any other directory, it will break
  630. lax_class_path=`echo "$lax_class_path" | sed 's^;^:^g'`
  631. #absInstallDir=`dirname "$absLauncherName"`
  632. #if [ $absInstallDir = '.' ]; then
  633. absInstallDir=$lax_dir
  634. #fi
  635. OFS="$IFS"
  636. IFS=":"
  637. set x $lax_class_path; shift
  638. IFS="$OFS"
  639. tmp_lcp=""
  640. while test $# -gt 0; do
  641.     case "$1" in
  642.         \/*)
  643.             tmp_lcp="$tmp_lcp:$1"
  644.         ;;
  645.         *|*\$ENV_CLASSPATH\$*)
  646.             tmp_lcp="$tmp_lcp:${absInstallDir}$1"
  647.         ;;
  648.     esac
  649.     shift
  650. done
  651. lax_class_path="$tmp_lcp"
  652.  
  653. # resolve $ENV_CLASSPATH$
  654. OFS="$IFS"
  655. IFS=":"
  656. set x $lax_class_path; shift
  657. IFS="$OFS"
  658. tmp_lcp=""
  659. while test $# -gt 0; do
  660.     case "$1" in
  661.         *\$ENV_CLASSPATH\$*)
  662.             tmp_lcp="$tmp_lcp:$CLASSPATH"
  663.         ;;
  664.         *)
  665.             tmp_lcp="$tmp_lcp:$1"
  666.         ;;
  667.     esac
  668.     shift
  669. done
  670. lax_class_path="$tmp_lcp"
  671.  
  672.  
  673.  
  674. ####################################################################################
  675. # just incase this the lax was written in DOS, be sure to make all ';' path
  676. # separators into :'s or it will fubar the commandline
  677. #
  678. case "$smclp" in
  679.     *\;*)
  680.         oldIFS=$IFS
  681.         IFS=";"
  682.         for smclp_piece in $smclp; do
  683.             tmp_smclp="$tmp_smclp:$smclp_piece"
  684.         done
  685.         IFS=$oldIFS
  686.         clp=$tmp_smclp
  687.     ;;
  688. esac
  689.  
  690. ##################################################################
  691. # Setting stdout and stderr redirection
  692. #
  693. if [ "$LAX_DEBUG" = "file" -o "$LAX_DEBUG" = "" ]; then
  694.     echo "lax.stderr.redirect=$lax_stderr_redirect" >> $envPropertiesFile
  695.     echo "lax.stdout.redirect=$lax_stdout_redirect" >> $envPropertiesFile
  696. else
  697.     echo "lax.stderr.redirect=console" >> $envPropertiesFile
  698.     echo "lax.stdout.redirect=console" >> $envPropertiesFile
  699.     lax_stdout_redirect="console"
  700.     lax_stderr_redirect="console"
  701. fi
  702.  
  703. lax_version="3.0"
  704.  
  705. validVMtypeList="$lax_nl_valid_vm_list"
  706.  
  707. # MMA 04.26.2000
  708. #
  709. # Added check for validVMtypeList not being set to any value, in
  710. # which case we should just set the valid list to all. 
  711. #
  712. if [ "$validVMtypeList" = "ALL" -o "$validVMtypeList" = "" ]; then
  713.     validVMtypeList=$anyVMlist
  714. fi
  715.  
  716.  
  717. #############################################################
  718. # PICK A VALID VM
  719. #
  720.  
  721. debugOut "" 
  722. debugOut "========= Finding VM ================================================="
  723. debugOut "Valid VM types....................... $validVMtypeList"
  724.  
  725. #
  726. # If the vm gets a relative path, we must make it absolute to the Install
  727. #   Directory    tm 3/3
  728. #
  729. if [ ! -z "${lax_nl_current_vm:-""}" ]; then
  730.     isABSpath=`expr $lax_nl_current_vm : '\/'`
  731.     if [ "$isABSpath" = "0" ]; then
  732.         abs_lax_nl_current_vm=$lax_dir$lax_nl_current_vm
  733.     else
  734.         abs_lax_nl_current_vm=$lax_nl_current_vm
  735.     fi
  736. fi
  737.  
  738.  
  739. # determine type of specific vm binary
  740. inspectVM()
  741. {
  742.     resolveLink "$1"
  743.     inspectee="$resolvedLink"
  744.     inspecteeDir=`dirname "$inspectee"`
  745.     inspecteeName=`basename "$inspectee"`
  746.     #
  747.     # is it JDK1.1 , JDK1.2  or JRE1.2?
  748.     #
  749.     if [ "$inspecteeName" = "oldjava" ]; then
  750.         inspectedOldVMtype="OLDJAVA"
  751.         inspectedVMtype="OLDJAVA"
  752.     elif [ "$inspecteeName" = "java" ]; then
  753.  
  754.         ############################################################
  755.         # Do some OS-specific quirky stuff
  756.         #
  757.         # MacOS X / Rhapsody
  758.         #
  759.         quirk_classesZip=""
  760.         if [ "$osName" = "rhapsody" ]; then
  761.             if [ "`expr "$inspecteeDIR" : ".*JavaVM.framework$"`" != "0" ]; then
  762.                 quirk_classesZip="$file/Classes/classes.jar"
  763.                 inspecteeDir="$inspecteeDir/Home/bin"
  764.             fi
  765.         fi
  766.         # END OS quirky stuff
  767.         ############################################################
  768.  
  769.         #
  770.         # is it JDK1.1?
  771.         # 
  772.         if [ -r "$inspecteeDir/../lib/classes.zip" -o -r "$quirk_classesZip" ]; then
  773.             inspectedOldVMtype="JDK"
  774.             inspectedVMtype="JDK_J1"
  775.         else
  776.             # JDK1.2
  777.             # 
  778.             # is the "java" JRE1.2 or JDK1.2?
  779.             #
  780.             if [ -r "$inspecteeDir/../lib/dt.jar" ]
  781.             then
  782.                 inspectedOldVMtype="D12"
  783.                 inspectedVMtype="JDK_J2"
  784.             else
  785.                 inspectedOldVMtype="R12"
  786.                 inspectedVMtype="JRE_J2"
  787.             fi
  788.         fi
  789.     elif [ "$inspecteeName" = "jre" ]; then
  790.         inspectedOldVMtype="JRE"
  791.         inspectedVMtype="JRE_J1"
  792.     else
  793.         inspectedOldVMtype="UNKNOWN"
  794.         inspectedVMtype="UNKNOWN"
  795.     fi
  796. }
  797.  
  798. # massage valid VM list.  Expand inclusive types (i.e. JRE = JRE_J1 and JRE_J2 )
  799. tmpValidVMlist=""
  800. for type in $validVMtypeList; do
  801.     case $type in
  802.         J1)        tmpValidVMlist="$tmpValidVMlist JRE_J1 JDK_J1" ;;
  803.         J2)        tmpValidVMlist="$tmpValidVMlist JRE_J2 JDK_J2" ;;
  804.         JRE)    tmpValidVMlist="$tmpValidVMlist JRE_J2 R12 JRE_J1" ;;
  805.         JDK)    tmpValidVMlist="$tmpValidVMlist JDK_J2 D12 JDK_J1" ;;
  806.         *)        tmpValidVMlist="$tmpValidVMlist $type " ;;
  807.     esac
  808. done
  809. validVMtypeList="$tmpValidVMlist"
  810. debugOut "Expanded Valid VM types.............. $validVMtypeList"
  811.  
  812. # if a VM was forced on the command line use it otherwise search
  813. if [ "$lax_vm" = "LAX_VM" ]; then
  814.     # Using VM passed in as argument
  815.     inspectVM "$lax_vm_value"
  816.     actvmType="$inspectedVMtype"
  817.     actvm="$lax_vm_value"
  818.     debugOut "* Using VM:........(LAX_VM).......... $actvm"
  819. else
  820.  
  821.     # 1st inspect the  lax.nl.current.vm.  As long as it is in the
  822.     # valid vm list it takes precedence over everything else.  
  823.     laxVMisValid="false"
  824.     # is the lax current vm is specifies
  825.     if [ ! -z "$abs_lax_nl_current_vm" -a -x "$abs_lax_nl_current_vm" ]; then
  826.         # inspect it
  827.         inspectVM "$abs_lax_nl_current_vm"
  828.         eval laxVMtype="$inspectedVMtype"
  829.         # if the type of this vm is in the valid list, deem it valid
  830.     
  831.  
  832.         case "$validVMtypeList" in
  833.             *$laxVMtype*)
  834.                 laxVMisValid="true"
  835.             ;;
  836.         esac
  837.     fi
  838.     # if the lax current vm is valid use it
  839.     if [ "$laxVMisValid" = "true" ]; then
  840.         actvm="$abs_lax_nl_current_vm"
  841.         actvmType="$laxVMtype"
  842.         debugOut "* Using VM....(lax.nl.current.vm).... $actvm"
  843.     else    
  844.     # other wise search the path
  845.         debugOut "WARNING! No valid lax.nl.current.vm available."
  846.         # sift through the path to look for VMs
  847.         vmNumber=0;
  848.         OFS=$IFS
  849.         IFS=":"
  850.         set x $PATH; shift
  851.         IFS=$OFS
  852.         debugOut "Searching for VMs in PATH:"
  853.         for pathDir in $*; do
  854.             debugOut "Looking in:.......................... $pathDir"
  855.             # For each type of binary vm name
  856.             for binaryName in java jre oldjava; do
  857.                 # if the binary exists, is executable and is not a directory...
  858.                 if [ -x "$pathDir/$binaryName" -a \( ! -d "$pathDir/$binaryName" \) ]; then
  859.                     resolveLink "$pathDir/$binaryName" 2> /dev/null
  860.                     vmPath="$resolvedLink"
  861.                     debugOut "  Found VM:.......................... $vmPath"
  862.                     inspectVM "$vmPath"
  863.                     # set up a Bourne-style array of VM props using var1, var2, etc...
  864.                     eval vmBinary$vmNumber="$vmPath"
  865.                     eval vmType$vmNumber="$inspectedVMtype"
  866.                     eval oldVMtype$vmNumber="$inspectedOldVMtype"
  867.                     vmNumber=`expr ${vmNumber:-0} + 1`
  868.                 fi
  869.             done
  870.         done
  871.     
  872.         #########################################
  873.         # VERIFY VMS against valid types
  874.         #
  875.         actvmType=""
  876.         vmHighNumber="$vmNumber"
  877.  
  878.         # for each type of valid VM
  879.         for validType in $validVMtypeList; do
  880.             vmNumber="0";
  881.  
  882.             # run through the list of VMs found
  883.             while [ "$vmNumber" -lt $vmHighNumber ]; do
  884.                 eval type="$"vmType$vmNumber""
  885.                 eval oldType="$"oldVMtype$vmNumber""
  886.                 eval  bin="$"vmBinary$vmNumber""
  887.         
  888.                 # if the type of this VM is of '$type' or '$oldType'
  889.                 # make it the actual vm (actvm) to use
  890.                 case "${type} ${oldType}" in
  891.                     *${validType}*)
  892.         
  893.                         actvm="$bin"
  894.                         actvmType="$type"
  895.                         debugOut "* Using VM:.......................... $actvm"
  896.                         break 2
  897.                     ;;
  898.                 esac
  899.                 vmNumber=`expr ${vmNumber:-0} + 1`
  900.             done
  901.         done    
  902.     fi
  903. fi
  904.  
  905.     # If no VMs are found in path
  906.     if [ -z "$actvm" ]
  907.     then
  908.         echo "No Java virtual machine could be found from your PATH"
  909.         echo "environment variable.  You must install a VM prior to"
  910.         echo "running this program."
  911.         
  912.         # Mikey [5/16/2000] -- If this was SEA'd then remove the temp directory
  913.         if [ "$IS_INSTALLER" = "true" ]; then
  914.             echo "Remove temporary installation directory: \"$lax_user_dir\""
  915.             rm -rf "$lax_user_dir"
  916.         fi
  917.         
  918.         cd $olddir
  919.         exit
  920.     fi
  921.  
  922.     # noLaxBackup is true for self-extractor, and the current vm should not
  923.     # be changed the LAX_VM is used
  924.     noLaxBackup=${noLaxBackup:="false"}
  925.     if [ "$lax_vm" != "LAX_VM" -a "$noLaxBackup" != true -a -w "$propfname" ]
  926.     then
  927.         sedscript="s;^lax.nl.current.vm.*;lax.nl.current.vm=$actvm;"
  928.         sed $sedscript "$propfname">file.lax 
  929.         mv "$propfname" "$propfname.bak" > /dev/null 2>&1
  930.         mv file.lax "$propfname" > /dev/null 2>&1
  931.         rm "$propfname.bak" > /dev/null 2>&1
  932.     fi
  933.  
  934.     # set up a variable to esilty know if we are going to run 1.1 or 1.2 
  935.     # for setting up VM cmd line options later on
  936.     case "$actvmType" in
  937.         "JRE" | "JDK" | "JRE_J1" | "JDK_J1" )
  938.             actvmVersion="1.1"
  939.         ;;
  940.         "R12" | "D12" | "JDK_J2" | "JRE_J2" | "OLDJAVA")
  941.             actvmVersion="1.2"
  942.         ;;
  943.         *)
  944.             actvmVersion=""
  945.         ;;
  946.     esac
  947.  
  948. #
  949. # end of finding VMs
  950. ##########################################################################################
  951.  
  952. ####################################################################################
  953. # Determining VM invocation options to use
  954. #
  955.  
  956. #
  957. # Verification
  958. #
  959. verify=${verify:="null"}
  960. if [ "$actvmVersion" = "1.1" ]; then
  961.     if [ "$verify" = "remote" -o "$verify_type" = "remote" ]; then
  962.             options="-verifyremote"
  963.     elif [ "$verify" = "all" ]; then
  964.         if [ "$verify_type" = "remote" ]; then
  965.             options="-verifyremote"
  966.         else
  967.             options="-verify"
  968.         fi
  969.     elif [ "$verify" = "none"  -o "$verify_type" = "remote" ]; then
  970.         options="-noverify"
  971.     fi
  972. fi
  973. verbo=${verbo:="none"}
  974. if [ $verbo = "normal" ]; then
  975.     if [ "$actvmVersion" = "1.1" ]; then
  976.         options="$options -verbose"
  977.     elif [ "$actvmVersion" = "1.2" ]; then
  978.         options="$options -verbose:class"
  979.     fi
  980. elif [ $verbo = "all" ]; then
  981.     if [ "$actvmVersion" = "1.1" ]; then
  982.         options="$options -verbose -verbosegc"
  983.     elif [ "$actvmVersion" = "1.2" ]; then
  984.         options="$options -verbose:class -verbose:gc"
  985.     fi
  986. elif [ $verbo = "gc" ]; then
  987.     if [ "$actvmVersion" = "1.1" ]; then
  988.         options="$options -verbosegc"
  989.     elif [ "$actvmVersion" = "1.2" ]; then
  990.         options="$options -verbose:gc"
  991.     fi    
  992. fi
  993.  
  994. #
  995. # Memory mgnt
  996. #
  997. gcxtnt=${gcxtnt:="none"}
  998. if [ $gcxtnt = "min" ]
  999. then
  1000.     if [ "$actvmVersion" = "1.1" ]; then
  1001.         options="$options -noclassgc"
  1002.     elif [ "$actvmVersion" = "1.2" ]; then
  1003.         options="$options -Xnoclassgc"
  1004.     fi
  1005. fi
  1006.  
  1007. gcthrd=${gcthrd:="none"}
  1008. if [ "$actvmVersion" = "1.1" ]; then
  1009.     if [ $gcthrd = "off" ]
  1010.     then
  1011.         options="$options -noasyncgc"
  1012.     fi
  1013. fi
  1014.  
  1015. nsmax=${nsmax:="none"}
  1016. jsmax=${jsmax:="none"}
  1017. if [ "$actvmVersion" = "1.1" ]; then
  1018.     if [ "$nsmax" != "none" ]; then
  1019.         options="$options -ss$nsmax"
  1020.     fi
  1021.     
  1022.     if [ "$jsmax" != "none" ]; then
  1023.             options="$options -oss$jsmax"
  1024.     fi
  1025. fi
  1026.  
  1027. jhmax=${jhmax:="none"}
  1028. if [ "$jhmax" != "none" ]; then
  1029.     if [ "$actvmVersion" = "1.1" ]; then
  1030.         options="$options -mx$jhmax"
  1031.     elif [ "$actvmVersion" = "1.2" ]; then
  1032.         options="$options -Xmx$jhmax"
  1033.     fi
  1034. fi
  1035.  
  1036. jhinit=${jhinit:="none"}
  1037. if [ "$jhinit" != "none" ]; then
  1038.     if [ "$actvmVersion" = "1.1" ]; then
  1039.         options="$options -ms$jhinit"
  1040.     elif [ "$actvmVersion" = "1.2" ]; then
  1041.         options="$options -Xms$jhinit"
  1042.     fi
  1043. fi
  1044.  
  1045. debug=${debug:-"off"}
  1046. if [ $debug != "off" ]; then
  1047.     if [ "$actvmVersion" = "1.1" ]; then
  1048.         options="$options -debug"
  1049.     elif [ "$actvmVersion" = "1.2" ]; then
  1050.         options="$options -Xdebug"
  1051.     fi
  1052. fi
  1053.  
  1054. ###############################################################
  1055. # JIT options
  1056. # Resetting java home and JIT compiler environment variables
  1057. #
  1058. jitOnOrOff=on;
  1059. #
  1060. # turn off according to VM type
  1061. #
  1062. if   [ ! -z "$lax_nl_osname_JDK_J1_java_compiler" -a "$actvmType" = "JDK_J1" ]; then
  1063.     jitOnOrOff=$lax_nl_osname_JDK_J1_java_compiler
  1064. elif [ ! -z "$lax_nl_osname_JDK_J2_java_compiler" -a "$actvmType" = "JDK_J2" ]; then
  1065.     jitOnOrOff=$lax_nl_osname_JDK_J2_java_compiler
  1066. elif [ ! -z "$lax_nl_osname_JRE_J1_java_compiler" -a "$actvmType" = "JRE_J1" ]; then
  1067.     jitOnOrOff=$lax_nl_osname_JRE_J1_java_compiler
  1068. elif [ ! -z "$lax_nl_osname_JRE_J2_java_compiler" -a "$actvmType" = "JRE_J2" ]; then
  1069.     jitOnOrOff=$lax_nl_osname_JRE_J2_java_compler
  1070. elif [ ! -z "$lax_nl_osname_J1_java_compiler" -a "$actvmType" = "J1" ]; then
  1071.     jitOnOrOff=$lax_nl_osname_J1_java_compiler
  1072. elif [ ! -z "$lax_nl_osname_J2_java_compiler" -a "$actvmType" = "J2" ]; then
  1073.     jitOnOrOff=$lax_nl_osname_J2_java_compiler
  1074. elif [ ! -z "$lax_nl_osname_JRE_java_compiler" -a "$actvmType" = "JRE" ]; then
  1075.     jitOnOrOff=$lax_nl_osname_JRE_java_compiler
  1076. elif [ ! -z "$lax_nl_osname_JDK_java_compiler" -a "$actvmType" = "JDK" ]; then
  1077.     jitOnOrOff=$lax_nl_osname_JDK_java_compiler
  1078. elif [ ! -z "$lax_nl_osname_ALL_java_compiler" ]; then
  1079.     jitOnOrOff=$lax_nl_osname_ALL_java_compiler
  1080. #
  1081. elif [ ! -z "$lax_nl_unix_JDK_J1_java_compiler" -a "$actvmType" = "JDK_J1" ]; then
  1082.     jitOnOrOff=$lax_nl_unix_JDK_J1_java_compiler
  1083. elif [ ! -z "$lax_nl_unix_JDK_J2_java_compiler" -a "$actvmType" = "JDK_J2" ]; then
  1084.     jitOnOrOff=$lax_nl_unix_JDK_J2_java_compiler
  1085. elif [ ! -z "$lax_nl_unix_JRE_J1_java_compiler" -a "$actvmType" = "JRE_J1" ]; then
  1086.     jitOnOrOff=$lax_nl_unix_JRE_J1_java_compiler
  1087. elif [ ! -z "$lax_nl_unix_JRE_J2_java_compiler" -a "$actvmType" = "JRE_J2" ]; then
  1088.     jitOnOrOff=$lax_nl_unix_JRE_J2_java_compler
  1089. elif [ ! -z "$lax_nl_unix_J1_java_compiler" -a "$actvmType" = "J1" ]; then
  1090.     jitOnOrOff=$lax_nl_unix_J1_java_compiler
  1091. elif [ ! -z "$lax_nl_unix_J2_java_compiler" -a "$actvmType" = "J2" ]; then
  1092.     jitOnOrOff=$lax_nl_unix_J2_java_compiler
  1093. elif [ ! -z "$lax_nl_unix_JRE_java_compiler" -a "$actvmType" = "JRE" ]; then
  1094.     jitOnOrOff=$lax_nl_unix_JRE_java_compiler
  1095. elif [ ! -z "$lax_nl_unix_JDK_java_compiler" -a "$actvmType" = "JDK" ]; then
  1096.     jitOnOrOff=$lax_nl_unix_JDK_java_compiler
  1097. elif [ ! -z "$lax_nl_unix_ALL_java_compiler" ]; then
  1098.     jitOnOrOff=$lax_nl_unix_ALL_java_compiler
  1099. #
  1100. elif [ ! -z "$lax_nl_JDK_J1_java_compiler" -a "$actvmType" = "JDK_J1" ]; then
  1101.     jitOnOrOff=$lax_nl_JDK_J1_java_compiler
  1102. elif [ ! -z "$lax_nl_JDK_J2_java_compiler" -a "$actvmType" = "JDK_J2" ]; then
  1103.     jitOnOrOff=$lax_nl_JDK_J2_java_compiler
  1104. elif [ ! -z "$lax_nl_JRE_J1_java_compiler" -a "$actvmType" = "JRE_J1" ]; then
  1105.     jitOnOrOff=$lax_nl_JRE_J1_java_compiler
  1106. elif [ ! -z "$lax_nl_JRE_J2_java_compiler" -a "$actvmType" = "JRE_J2" ]; then
  1107.     jitOnOrOff=$lax_nl_JRE_J2_java_compler
  1108. elif [ ! -z "$lax_nl_J1_java_compiler" -a "$actvmType" = "J1" ]; then
  1109.     jitOnOrOff=$lax_nl_J1_java_compiler
  1110. elif [ ! -z "$lax_nl_J2_java_compiler" -a "$actvmType" = "J2" ]; then
  1111.     jitOnOrOff=$lax_nl_J2_java_compiler
  1112. elif [ ! -z "$lax_nl_JRE_java_compiler" -a "$actvmType" = "JRE" ]; then
  1113.     jitOnOrOff=$lax_nl_JRE_java_compiler
  1114. elif [ ! -z "$lax_nl_JDK_java_compiler" -a "$actvmType" = "JDK" ]; then
  1115.     jitOnOrOff=$lax_nl_JDK_java_compiler
  1116. elif [ ! -z "$lax_nl_ALL_java_compiler" ]; then
  1117.     jitOnOrOff=$lax_nl_ALL_java_compiler
  1118. #
  1119. elif [ ! -z "$lax_nl_osname_java_compiler" ]; then
  1120.     jitOnOrOff=$lax_nl_osname_java_compiler
  1121. elif [ ! -z "$lax_nl_java_compiler" ]; then
  1122.     jitOnOrOff=$lax_nl_java_compiler
  1123. else
  1124.     jitOnOrOff=on
  1125. fi
  1126.  
  1127. # JIT is ON by default, so we only need to change its status
  1128. # the above else-if lists figures it should be OFF
  1129. if [ "$jitOnOrOff" = "off" ]; then
  1130.     if [ "$actvmVersion" = "1.1" ]; then
  1131.         case "$osName" in
  1132.             *irix*)
  1133.                 jitinvoc="-nojit"
  1134.                 JIT_OPTIONS="-nojit"
  1135.                 export JIT_OPTIONS
  1136.             ;;
  1137.             *hp-ux*|*hpux*)
  1138.                 JIT_OPTIONS="-nojit"
  1139.                 export JIT_OPTIONS
  1140.                 jitinvoc="-nojit"
  1141.             ;;
  1142.             *solaris*|*sunos*)
  1143.                 jitinvoc="-Djava.compiler="
  1144.             ;;
  1145.             *aix*)
  1146.                 JAVA_COMPILER=off
  1147.                 export JAVA_COMPILER
  1148.             ;;
  1149.             *freebsd*)
  1150.                 jitinvoc="-Djava.compiler="
  1151.             ;;
  1152.             *linux*)
  1153.                 jitinvoc="-Djava.compiler="
  1154.             ;;
  1155.             *rhapsody*|*macos*)
  1156.             ;;
  1157.             *compaq*|*dg*|*osf*)
  1158.                 jitinvoc="-nojit"
  1159.             ;;
  1160.             *)
  1161.                 debugOut "Unknown OS name (\"$osName\"). Cannot set JIT Options."
  1162.             ;;
  1163.         esac
  1164.     elif [ "$actvmVersion" = "1.2" ]; then
  1165.         jitinvoc="-Djava.compiler="
  1166.     else
  1167.         debugOut "Unknown VM version. Cannot set JIT Options."
  1168.     fi
  1169. fi
  1170.  
  1171. options="$jitinvoc $options"
  1172.  
  1173. ##################################################################
  1174. # Passing in addtional stuff
  1175. options="$options $lax_nl_java_option_additional"
  1176.  
  1177.  
  1178. # Changing working directory
  1179. if [ ! "$lax_user_dir" = "" ]
  1180. then
  1181.     if [ ! "$lax_user_dir" = "." ];
  1182.     then
  1183.         cd "$lax_user_dir"
  1184.     fi
  1185. else
  1186.     cd "$olddir"
  1187. fi
  1188.  
  1189. # Optional printout of all variable values for debugging purposes
  1190.  
  1191. debugOut ""
  1192. debugOut "========= Virtual Machine Options ===================================="
  1193. debugOut "LAX properties incorporated.......... OK."
  1194. debugOut "classpath............................ \"$lax_class_path\""
  1195. debugOut "main class........................... \"$lax_main_class\""
  1196. debugOut ".lax file path....................... \"$propfname\""
  1197. debugOut "user directory....................... \"$lax_user_dir\""
  1198. debugOut "stdout to............................ \"$lax_stdout_redirect\""
  1199. debugOut "sterr to............................. \"$lax_stderr_redirect\""
  1200. debugOut "install directory.................... \"$lax_dir\""
  1201. debugOut "JIT.................................. ${jittype:-"none"}"
  1202. debugOut "option (verify)...................... ${verify:-"none"}"
  1203. debugOut "option (verbosity)................... ${verbo:-"none"}"
  1204. debugOut "option (garbage collection extent)... ${gcxtnt:-"none"}"
  1205. debugOut "option (garbage collection thread)... ${gcthrd:-"none"}"
  1206. debugOut "option (native stack max size)....... ${nsmax:-"none"}"
  1207. debugOut "option (java stack max size)......... ${jsmax:-"none"}"
  1208. debugOut "option (java heap max size).......... ${jhmax:-"none"}"
  1209. debugOut "option (java heap initial size)...... ${jhinit:-"none"}"
  1210.  
  1211. resolveLink "$actvm"
  1212. actvm="$resolvedLink"
  1213.  
  1214. actvmBinaryName=`basename $actvm`
  1215. # get dirname of binary
  1216. actvmHome=`dirname "$actvm"`
  1217. # is the dir the binary is in named "bin"?
  1218. if [ "`basename $actvmHome`" = "bin" ]; then
  1219.     # if so then the dir above bin is the java home
  1220.     JAVA_HOME=`dirname "$actvmHome"`
  1221. else
  1222.     JAVA_HOME=
  1223. fi
  1224.  
  1225.  
  1226.  
  1227.  
  1228. # LAUNCH VMS
  1229.  
  1230. # Making $JAVA_HOME available to the application.
  1231. export JAVA_HOME
  1232.  
  1233. if [ "$actvmBinaryName" = "jre" ]; then
  1234.  
  1235.     CLASSPATH=
  1236.     export CLASSPATH
  1237.     # MMA - clear ENV to address a problem where the shell initialization
  1238.     # file (.Xshrc) pointed to by ENV may overide the classpath we have just set,
  1239.     # causing the app to fail.  Drawback is that other environment variables set
  1240.     # in the init file will not be available in the environment (they will be
  1241.     # available as Java system properties, however).  Comment out the two lines
  1242.     # below to change this behavior.
  1243.     ENV=
  1244.     export ENV
  1245.     # I split these up so they would be a bit clearer on the screen.
  1246.     debugOut ""
  1247.     debugOut "========= VM Command Line ============================================"
  1248.     debugOut "$actvm $options -cp \"$lax_class_path\" $lax_nl_java_launcher_main_class \"$propfname\" $envPropertiesFile $cmdLineArgs"
  1249.     # Here is where we actually run the app in Java:
  1250.     debugOut ""
  1251.     debugOut "========= Executing JRE =============================================="
  1252.     eval $actvm $options -cp \"$lax_class_path\" $lax_nl_java_launcher_main_class \"$propfname\" $envPropertiesFile $cmdLineArgs
  1253.     exitValue=$?
  1254.     debugOut "========= JRE Finished ==============================================="
  1255.     debugOut ""
  1256.  
  1257. elif [ "$actvmBinaryName" = "java" -o "$actvmBinaryName" = "oldjava" ]; then
  1258.  
  1259.     CLASSPATH=$lax_class_path
  1260.       export CLASSPATH 
  1261.     # MMA - clear ENV to address a problem where the shell initialization
  1262.     # file (.Xshrc) pointed to by ENV may overide the classpath we have just set,
  1263.     # causing the app to fail.  Drawback is that other environment variables set
  1264.     # in the init file will not be available in the environment (they will be
  1265.     # available as Java system properties, however).  Comment out the two lines
  1266.     # below to change this behavior.
  1267.     ENV=
  1268.     export ENV
  1269.     # I split these up so they would be a bit clearer on the screen.
  1270.     debugOut ""
  1271.     debugOut "========= VM Command Line ============================================"
  1272.     debugOut "CLASSPATH=\"$lax_class_path\""
  1273.     debugOut "$actvm $options $lax_nl_java_launcher_main_class \"$propfname\" $envPropertiesFile $cmdLineArgs"
  1274.     # Here is where we actually run the app in Java:
  1275.     debugOut ""
  1276.     debugOut "========= Executing JAVA ============================================="
  1277.     eval $actvm $options $lax_nl_java_launcher_main_class \"$propfname\" $envPropertiesFile $cmdLineArgs
  1278.     exitValue=$?
  1279.     debugOut "========= JAVA Finished =============================================="
  1280.     debugOut ""
  1281.  
  1282. else
  1283.  
  1284.     debugOut VMTYPE_UNKNOWN=\"$actvmBinaryName\"
  1285.  
  1286. fi
  1287.  
  1288. #  Change back to directory used priory to this script running.
  1289.  
  1290. cd "$olddir"
  1291.  
  1292. if [ "$IS_INSTALLER" = "true" ]; then
  1293.     debugOut "Removing tmp install dir: \"$lax_user_dir\""
  1294.     rm -rf "$lax_user_dir"
  1295. fi
  1296. rm -f "$envPropertiesFile"
  1297. exit $exitValue
  1298.