You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

runjacks.sh 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. #!/bin/sh
  2. # run jacks against javac and ajc (with and without usejavac)
  3. # @process-test ajc runjacks.sh # run jacks tests against javac and ajc (with and without usejavac)
  4. [ -n "$DEBUG" ] && set -vx
  5. errMssg() {
  6. [ -n "$1" ] && echo "## $0 $1"
  7. [ -n "$2" ] && exit "$2"
  8. }
  9. toJavaPath() {
  10. echo "$1" | sed 's|/cygdrive/\([a-zA-Z]\)/|\1:/|'
  11. }
  12. toDosPath() {
  13. toJavaPath "$1" | sed 's|/|\\|g'
  14. }
  15. emit_ajcbat() {
  16. cat<<EOF
  17. $jhomeDos\bin\java -classpath "$ajlibDos\aspectjtools.jar;$ajlibDos\aspectjrt.jar;$jhomeDos\lib\tools.jar" org.aspectj.tools.ajc.Main %1 %2 %3 %4 %5 %6 %7 %8
  18. EOF
  19. }
  20. emit_ajcsetup() {
  21. cat<<EOF
  22. # Set the paths for your tools in this file
  23. set JAVA_HOME $jhomeJ
  24. set JAVA_CLASSPATH ""
  25. set JAVAC $jacksDirJ/ajc.bat
  26. set JAVAC_FLAGS "$javacFlags"
  27. # To test the assert statement, use this setup
  28. #set JAVAC_FLAGS "-source 1.4"
  29. set JAVA ${JDKDIR}/jre/bin/java.exe
  30. set JAVA_FLAGS ""
  31. # This activates encoding support.
  32. set JAVAC_ENCODING_FLAG "-encoding "
  33. set tcltest::testConstraints(encoding) 1
  34. # Activate javac only test cases
  35. set tcltest::testConstraints(javac) 1
  36. # Uncomment this to test the assert statement
  37. #set tcltest::testConstraints(assert) 1
  38. EOF
  39. }
  40. compareJacksResults() {
  41. [ -f javac.out ] || exit 2
  42. sc='/^==== [^ ][^ ]* FAILED/s|^==== \([^ ][^ ]*\) .*|\1 '
  43. for ajc in ajc usejavac ; do
  44. [ -f $ajc.out ] || exit 2
  45. for i in $ajc javac ; do
  46. sed -n "$sc$i|p" "$i.out" | sort > "$i.join"
  47. done
  48. join -a 1 -a 2 $ajc.join javac.join \
  49. | sed "/$ajc javac/d" \
  50. | sort > compare.javac.$ajc.out
  51. rm $ajc.join javac.join
  52. ajcCount=`sed -n "/ $ajc/p" compare.javac.$ajc.out | wc -l`
  53. javacCount=`sed -n "/ javac/p" compare.javac.$ajc.out | wc -l`
  54. echo "## $ajcCount $ajc failures unmatched by javac"
  55. echo "## $javacCount javac failures unmatched by $ajc"
  56. done
  57. wc -l *.out
  58. }
  59. #############################################
  60. SKIP_USEJAVAC=skippingUseJavac
  61. #pattern='*abrupt*' # use this to test script w/o running all
  62. if [ ! "$1" = "compare" ] ; then
  63. tclDir=/cygdrive/c/home/apps/tcl # XXX crosscut only
  64. case `uname` in
  65. CYGWIN* ) ;;
  66. * ) errMssg "only cygwin supported" 4 ;;
  67. esac
  68. [ -z "$JDKDIR" -o -x "$JDKDIR/bin/java" ] \
  69. || errMssg "requires valid JDKDIR=$JDKDIR" 5
  70. [ -z "$tclDir" -o -x "$tclDir/bin/tclsh" ] \
  71. || errMssg "requires valid tclDir=$tclDir" 5
  72. cvsroot=":pserver:anoncvs@oss.software.ibm.com:/usr/cvs/jikes"
  73. scriptDir=`dirname "$0"`
  74. scriptDir=`cd "$scriptDir";pwd`
  75. toBaseDir=../../..
  76. jacksDir="${jacksDir:-`cd "$scriptDir/$toBaseDir";pwd`/jacks}"
  77. ajlibDir="${ajlibDir:-`cd "$scriptDir/$toBaseDir";pwd`/aj-build-modules/jars}"
  78. outDir="${outDir:-${1:-.}}"
  79. [ -d "$outDir" ] || exit 3
  80. jacksDirJ=`toJavaPath "$jacksDir"`
  81. jhomeJ=`toJavaPath "$JDKDIR"`
  82. ajlibDos=`toDosPath "$ajlibDir"`
  83. jhomeDos=`toDosPath "$JDKDIR"`
  84. [ -f "$ajlibDir/aspectjtools.jar" ] \
  85. || errMssg "bad ajlibDir=$ajlibDir" 4
  86. ## get jacks if necessary
  87. if [ -d "$jacksDir" ] ; then
  88. [ -f "$jacksDir/jacks.tcl" ] || errMssg "bad jacksDir" 4
  89. echo "## using existing jacks dir at $jacksDir"
  90. else
  91. cd `dirname "$jacksDir"` || errMssg "bad path to $jacksDir" 5
  92. echo anoncvs | cvs -d "$cvsroot" login
  93. cvs -d "$cvsroot" co jacks
  94. fi
  95. ## setup our stuff
  96. cd "$jacksDir" || errMssg "jacks dir failed" 6
  97. # comment unix, uncomment cygwin
  98. sc='/ulimit/s|^|#|'
  99. sc="$sc;"'/^exec tclsh8*/s|^|#|'
  100. sc="$sc;"'/^##* *exec tclsh.*cygpath/s|^##* *e|e|'
  101. sed "$sc" jacks > ff \
  102. && mv ff jacks || errMssg "unable to setup jacks for cygwin" 2
  103. export PATH="$tclDir/bin:$JDKDIR/bin:$jacksDir:$PATH"
  104. ## javac should work in any case
  105. if [ -f javac.out ] ; then
  106. echo "using existing javac.out"
  107. ls -ald javac.out
  108. else
  109. ## need to setup JAVA_HOME, JAVAC, JAVA
  110. sc='/^set JAVA_HOME /s|.*|set JAVA_HOME '"$JDKDIR|"
  111. sc="$sc;"'/^set JAVAC /s|.*|set JAVAC $JAVA_HOME/bin/javac.exe|'
  112. sc="$sc;"'/^set JAVA /s|.*|set JAVA $JAVA_HOME/bin/java.exe|'
  113. sed "$sc" javac_setup > ff && mv ff javac_setup
  114. echo "## starting javac at `date`"
  115. jacks javac $pattern > "$outDir/"javac.out || errMssg "javac failed " "$?"
  116. echo "## ending javac at `date`"
  117. fi
  118. if [ -f "$outDir/"ajc.out ] ; then
  119. echo "using existing ajc.out"
  120. ls -ald "$outDir/"ajc.out
  121. else
  122. ## setup and run ajc
  123. emit_ajcbat > ajc.bat
  124. emit_ajcsetup > ajc_setup
  125. echo "## starting ajc at `date`"
  126. jacks ajc $pattern > "$outDir/"ajc.out || errMssg "ajc failed " "$?"
  127. echo "## ending ajc at `date`"
  128. fi
  129. if [ -f "$outDir/"usejavac.out ] ; then
  130. echo "using existing usejavac.out"
  131. ls -ald "$outDir/"usejavac.out
  132. elif [ -n "$SKIP_USEJAVAC" ] ; then
  133. echo "skipping usejavac"
  134. else
  135. ## setup -usejavac
  136. javacFlags="-usejavac"
  137. emit_ajcsetup > ajc_setup
  138. echo "## starting ajc -usejavac at `date`"
  139. jacks ajc $pattern > "$outDir/"usejavac.out || errMssg "usejavac failed " "$?"
  140. echo "## ending ajc -usejavac at `date`"
  141. fi
  142. fi ## not only comparing
  143. compareJacksResults