1. If you're using Windows, please download cygwin from http://www.cygwin.com/. This is not required for Linux. 2. JDK 1.4 (or above) from http://java.sun.org/ (For development with SVMDCP, JDK 1.4 or higher is required; for execution of binary release, JRE 1.3 is enough, provided that "-target 1.3" flag is specified while compiling.) 3. AspectJ 1.1 (or above) from http://aspectj.org/. 4. JavaCC 3.2 (or above) from https://javacc.dev.java.net/. 5. Make sure the following programs are in your PATH: java and javac (Java tools) ajc (AspectJ compiler) javacc (JavaCC compiler) INSTRUCTIONS: 1. Obtain SVMDCP from CVS: $ export CVS_RSH="ssh" $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/svm co svmdcp 2. Build SVMDCP from source: $ export CLASSPATH=`pwd`:$CLASSPATH (add the parent directory of svmdcp to CLASSPATH) $ export ASPECTJ_HOME=$HOME/aspectj1.1 && export CLASSPATH=$ASPECTJ_HOME/lib/aspectjrt.jar:$CLASSPATH (add the AdpectJ runtime package to CLASSPATH, ASPECTJ_HOME might be different for your case) $ cd svmdcp $ LANG=C make (make SVMDCP, set LANG=C because JavaCC has a bug for non-European systems) 3. Build Ptolemy II: $ cd .. get Ptolemy source from http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII3.0/ptII3.0.2.src.tar.gz $ tar -zxvf ptII3.0.2.src.tar.gz $ cd ptII3.0.2 $ export PTII=`pwd` (set PTII to the current path) $ ./configure && make go to have a cup of coffee or two; when back, $ bin/vergil (try to see if Ptolemy works, especially, if its Expression demo works) 4. Add rollback support to Ptolemy Expression model: get the dependency list from http://msdl.cs.mcgill.ca/people/tfeng/uml/svmdcp/aspects.new.lst $ java svmdcp.DCPGenerator.DCPGenerator `cat aspects.new.lst` (generate aspects for every file listed in aspects.new.lst) get http://msdl.cs.mcgill.ca/people/tfeng/uml/svmdcp/VergilApplication.java and save it to ptolemy/vergil/ (overwrite the old one) $ rm -f ptolemy/vergil/VergilApplication*.class (remove the old class file, otherwise vergil might not be correctly re-built) $ JAVAC_FILE=`which javac` $ mv $JAVAC_FILE `dirname $JAVAC_FILE`/javac.bak $ pico $JAVAC_FILE input the following to the file and save it (modify SVMDCP_PATH and ASPECTJ_PATH): #!/bin/bash # -- change these variables according to your system SVMDCP_PATH=$HOME/projects/svmdcp ASPECTJ_PATH=$HOME/aspectj1.1 # -- osys=`uname -s` nsys=${osys/CYGWIN/} if [[ $osys != $nsys ]]; then PATHSEP=";" else PATHSEP=":" fi CLASSPATH="${SVMDCP_PATH}/..${PATHSEP}${ASPECTJ_PATH}/lib/aspectjrt.jar${PATHSEP}$CLASSPATH" param=${@/-O/} ajc -classpath $CLASSPATH $param $ chmod +x $JAVAC_FILE $ make -C ptolemy (re-build Ptolemy, Good Luck!) $ mv `dirname $JAVAC_FILE`/javac.bak $JAVAC_FILE $ bin/vergil (re-start vergil, and test the new Expression demo) Up to this point, the building is finished, for more information on the SVMDCP project, please go to its homepage (http://msdl.cs.mcgill.ca/people/tfeng/?research=svmdcp). Enjoy! -- Thomas Feng