通常のコマンド形式への書き下しについては見当たらず困っています。
もしくは、書き下すための良いサイトの検索方法などありましたらご教授頂けると幸いです。
例えばjavac に関してもオプションとして sourceは見当たるものの、destdirとclasspathrefについてはどのように追加すべきかわかりません。
build.xml全文:https://www.dropbox.com/s/ht9cre199ic0ru6/build.xml?dl=0
112行目
<target name="cvc3"
depends="configure-cvc3,check-config.status"
unless="config.status.present">
<exec dir="../cvc3" executable="/usr/bin/make"/>
<copy file="../cvc3/java/lib/${cvc3.jar}" todir="${lib.dir}" />
</target>
119行目
<target name="compile-tests" depends="jar">
<mkdir dir="${build.dir}/test"/>
<javac srcdir="${test.dir}"
destdir="${testClasses.dir}"
classpathref="junit-classpath"/>
</target>
126行目
<target name="test" depends="compile-tests">
<junit fork="yes">
<env key="LD_LIBRARY_PATH" path="../cvc3/java/lib:../cvc3/lib" />
<classpath refid="junit-classpath"/>
<batchtest>
<formatter type="plain" usefile="false" />
<fileset dir="${testClasses.dir}">
<include name="**/*Test.class" />
<exclude name="**/RhinoTest.class"/>
<exclude name="**/Cvc3Test.class"/>
</fileset>
</batchtest>
</junit>
</target>
テストケースを実行しようとしているところまで来てるっぽいので、この辺りのことは突破されたのだとは思いますが、
これに関してはunixに書き下す方法はネットにはないかと思われる
antコマンドを、通常のunixコマンドへの書き下し方法をご教授下さい。an... - Yahoo!知恵袋
某チエリアンが、面白いことを書いてたのを見てしまったので、ネット初の書き込みを :-p
# んな、こたあない
112行目からの targert cvc3 は、こんな感じです。
$ (cd ../cvc3 ; /usr/bin/make) $ cp ../cvc3/java/lib/libcvc3-3.0.0.jar ./lib
もしくは、こう。
$ pushd ../cvc3 $ /usr/bin/make $ popd $ cp ../cvc3/java/lib/libcvc3-3.0.0.jar ./lib
きっと、make にはパスが通ってるので、/usr/bin/make じゃなく、make でも OK 。
119行目からの target compile-tests は、こんな感じになります。
$ mkdir ./build/test $ CLASSPATH="./lib/junit-4.8.2.jar:./lib/js-symbolic-executor.jar: ..." $ export CLASSPATH $ javac -d ./build/test `find ./src -name "*.java"`
CLASSPATH は長いので、端折りました。コロン ":" で、jar ファイルやディレクトリを区切ります。
126行目からの target test は、コマンドラインからではちょっと厳しいので、bash のスクリプトで、こんな感じになると思います。
LD_LIBRARY_PATH="../cvc3/java/lib:../cvc3/lib" export LD_LIBRARY_PATH CLASSPATH="./lib/junit-4.8.2.jar:./lib/js-symbolic-executor.jar: ..." export CLASSPATH list=`(cd ./build/test ; find . -type f -name "*Test.class" -print) | sed -e 's,^./,,' -e 's/\.class$//' -e "s,/,\.,g" -e '/\.RhinoTest$/d' -e '/\.Cvc3Test$/d'` for t in $list do java org.junit.runner.JUnitCore $t done
こちらも CLASSPATH を端折ってます。
因みに、JUnit を起動するやつは、ant の junit タスクと、全く同じにはなりません。
js-symbolic-executor をビルドする build.xml ですが、CVC3 のライブラリをビルドするところ以外は、Ant のレベルでは Windows でもいけそうな気がします。
ただ、つまづきそうなのは CVC3 が、基本的に C++ のライブラリだということ。
java の API も用意されていますが、C++ のライブラリを呼び出しているだけで、JNI というインターフェースに乗っかってます。
JNI は、動的リンクライブラリを要求するのですが、Windows と Unix 系ではフォーマットが違います。
CVC3 の Makefile を斜め読みした感じだと、cygwin の対応はしてるっぽいですが、Windows 用の DLL を作るようにはなっていないと思います。
http://www.cs.nyu.edu/acsys/cvc3/download.html
↑は、CVC3 のダウンロードのページですが、Windows 版のバイナリが配布されていますけれども、ライブラリは静的ライブラリしか入っておらず、ファイルの末尾が .a なので、cygwin 用だと思います。
なので、Windows の java では、多分、動かすことができません。
そもそも、JNI を cygwin の gcc でビルドできるかどうかも、怪しいもんです。
多分、Linux の何かを導入して、試されているのだとは思いますので、参考程度で :-)
こんばんは。
2014/11/19 23:15:18度々ご回答いただき、本当にありがとうございます!!
ご指摘の通りUBUNTU上で実行しています。
ご回答いただいた点を一つ一つ確認しながら進めていたため、現在ようやく
$ java -jar lib/js-symbolic-executor.jar test/data/sample.js f 5 0 5
の実行を行っている最中です。
途中pathの記述を.bashrcにコピーしたせいで、.bashrcを破損させてしまったようで修正しつつ勉強しています。
ただ、ご回答いただいたお蔭で、不思議とファイルの関係が頭の中でつながってきて冷静に対応できてきています。
(といってもREADMEを読んでLD_LIBRARY_PATHが一つだけだとダメじゃんとエラーを見て気づける程度ですが(苦笑)
export LD_LIBRARY_PATH=/home/maru/Dropbox/js-symbolic-executor_orig/cvc3/java/lib;/home/maru/Dropbox/js-symbolic-executor_orig/cvc3/lib
で解決し、実行できるようになるかと思われます。
また、わかり始めると楽しいですね。
build.xmlをちゃんと読めてなかったなあなどと反省して再度読み直しております。(最初に呼ばれるクラスからmanifestをたどってなどといった過程を終えず、大事な事に気づけていませんでした。
まだ開発の作法やプロトコルには疎いため、ご回答いただいた点まで取りかかるには明日になってしまうかと思いますが、
これを機にLINUXの開発関係の知識が急激に増えるかなと嬉しく感じています。
a-kuma3さんには、重ね重ねご回答いただき本当に本当にありがとうございます。
これからsymbolic execution engineの真骨頂のテストの入力とPATHを解析してくれている部分がどこかにあるのでそれを頑張ってみつけて使いこなせるようになります!
Ant のタスクを、コマンドに書き起こすのは、遊びみたいなもので、Ant ができることは、Ant に任せておけば良いと思います。
2014/11/20 00:03:56Ant は make よりも後出なので、Makefile よりも多少は分かりやすくなっているような気もしますが、やっぱり Makefile や build.xml は、敷居が高いと思います。
ビルドが通っていれば、テストケースを動かすには LD_LIBRARY_PATH と CLASSPATH の設定だと思う(PATH と JAVA_HOME もか?)ので、後、もう少しだと思います(多分)。