diff options
author | Paul Phillips <paulp@improving.org> | 2012-02-14 08:32:34 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-02-14 13:55:19 -0800 |
commit | 94166682eed2a49038d9bdc1515e0b2f0630ab20 (patch) | |
tree | 630517b403c4c00dd4c2a3f2839b991402d96635 /test/instrumented/mkinstrumented.sh | |
parent | a2ce52f838d7ae4a1af93e5149e38ef87e9cd06d (diff) | |
download | scala-94166682eed2a49038d9bdc1515e0b2f0630ab20.tar.gz scala-94166682eed2a49038d9bdc1515e0b2f0630ab20.tar.bz2 scala-94166682eed2a49038d9bdc1515e0b2f0630ab20.zip |
Made speclib less of a maintenance headache.
Now it copies in the current versions of BoxesRunTime and ScalaRunTime
and applies patches to them, and the whole build is automated.
# This is the only thing I actually typed, the rest is fancy echo.
$ test/instrumented/mkinstrumented.sh build
% rm -rf /scratch/trunk1/test/instrumented/classes
% cp /scratch/trunk1/test/instrumented/../../src/library/scala/runtime/BoxesRunTime.java /scratch/trunk1/test/instrumented/../../src/library/scala/runtime/ScalaRunTime.scala /scratch/trunk1/test/instrumented/library/scala/runtime
% patch BoxesRunTime.java /scratch/trunk1/test/instrumented/boxes.patch
patching file BoxesRunTime.java
% patch ScalaRunTime.scala /scratch/trunk1/test/instrumented/srt.patch
patching file ScalaRunTime.scala
Hunk #3 succeeded at 63 (offset 23 lines).
Hunk #4 succeeded at 78 (offset 23 lines).
Hunk #5 succeeded at 81 (offset 23 lines).
Hunk #6 succeeded at 96 (offset 23 lines).
% /scratch/trunk1/test/instrumented/../../build/pack/bin/scalac -d /scratch/trunk1/test/instrumented/classes /scratch/trunk1/test/instrumented/library/scala/runtime/BoxesRunTime.java /scratch/trunk1/test/instrumented/library/scala/runtime/ScalaRunTime.scala
% javac -cp /scratch/trunk1/test/instrumented/../../build/pack/lib/scala-library.jar -d /scratch/trunk1/test/instrumented/classes /scratch/trunk1/test/instrumented/library/scala/runtime/BoxesRunTime.java
% cd /scratch/trunk1/test/instrumented/classes
% jar cf instrumented.jar .
% mv -f instrumented.jar /scratch/trunk1/test/instrumented/../../test/files/speclib
/scratch/trunk1/test/files/speclib/instrumented.jar has been created.
Diffstat (limited to 'test/instrumented/mkinstrumented.sh')
-rwxr-xr-x | test/instrumented/mkinstrumented.sh | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/instrumented/mkinstrumented.sh b/test/instrumented/mkinstrumented.sh new file mode 100755 index 0000000000..d734dd2e00 --- /dev/null +++ b/test/instrumented/mkinstrumented.sh @@ -0,0 +1,51 @@ +#/bin/sh +# +# Used to compile a jar with instrumented versions of certain classes. +# + +set -e + +run () { + echo "% $@" + "$@" +} + +if [ $# -ne 1 ] +then + echo "Must provide build dir ('target' or 'build')." + exit 1 +fi + +scriptDir=$(cd $(dirname $0) && pwd) + +TOPDIR="$scriptDir/../.." +RUNTIME="$TOPDIR/src/library/scala/runtime" +SOURCES="$RUNTIME/BoxesRunTime.java $RUNTIME/ScalaRunTime.scala" +SCALAC=$TOPDIR/$1/pack/bin/scalac +SRC_DIR="$scriptDir/library/scala/runtime" +SCALALIB=$TOPDIR/$1/pack/lib/scala-library.jar +CLASSDIR="$scriptDir/classes" +ARTIFACT=instrumented.jar +DESTINATION="$TOPDIR/test/files/speclib" + +[[ -x "$SCALAC" ]] || exit 1; + +# compile it +run rm -rf $CLASSDIR && mkdir $CLASSDIR +run cp $SOURCES $SRC_DIR +( cd $SRC_DIR && run patch BoxesRunTime.java $scriptDir/boxes.patch && run patch ScalaRunTime.scala $scriptDir/srt.patch ) + +ORIG=$(find $SRC_DIR -name '*.orig') +[[ -z "$ORIG" ]] || rm -f $ORIG + +JSOURCES=$(find $SRC_DIR -name "*.java" -print) +SOURCES=$(find $SRC_DIR -type f -print) +# echo $SOURCES +run $SCALAC -d $CLASSDIR $SOURCES +run javac -cp $SCALALIB -d $CLASSDIR $JSOURCES + +# jar it up +run cd $CLASSDIR +run jar cf $ARTIFACT . +run mv -f $ARTIFACT "$DESTINATION" +echo "$(cd "$DESTINATION" && pwd)/$ARTIFACT has been created."
\ No newline at end of file |