2011-07-22 6 views
4

あるときに提供されていないのNetsysの実現を訴えてコンパイルに失敗したが、私は得る:OCamlbuildは、それは私がocamlbuildでOCamlので<a href="http://code.google.com/p/xmlrpc-light/" rel="nofollow noreferrer">xmlrpc-light library</a>を使用して書かれたXML-RPCサーバーをコンパイルしようとしている

$ ocamlbuild server.native 
Finished, 0 targets (0 cached) in 00:00:00. 
+ ocamlfind ocamlopt -linkpkg -package xmlrpc-light -package unix -package threads -package netsys -thread server.cmx -o server.native 
File "_none_", line 1, characters 0-1: 
Error: No implementations provided for the following modules: 
     Netsys referenced from /usr/lib/ocaml/equeue/equeue.cmxa(Uq_engines) 
Command exited with code 2. 
Compilation unsuccessful after building 4 targets (3 cached) in 00:00:00. 

注意をそのI (同じCLのclient.nativeのためにこのプラグインは、他のケースでは私のためにうまく働いてい

<server.ml> or <server.native>: pkg_unix,pkg_netsys,pkg_xmlrpc-light,pkg_threads 

this oneようmyocamlbuild.mlファイルおよび単一の行を含む_tagsファイルを持っていますient/serverアプリケーションなど)では使用できませんが、server.nativeでは使用できません。この苦情は、ライブラリNetsysがコンパイラで利用できないことを示唆しています。しかし私たちは得る

$ ocamlfind query netsys 
/usr/lib/ocaml/netsys 

/usr/lib/ocaml/netsysにnetsysがインストールされていることを意味します。そのディレクトリを検査する私を与える:また

$ ls /usr/lib/ocaml/netsys 
META libnetsys.a netsys.a netsys.cma netsys.cmi netsys.cmxa netsys.mli 

$ ocamlfind list | grep netsys 
netsys    (version: 2.2.9) 

だから、実際のNetsysがインストールと呼ばれるライブラリがあり、それが使用できるようになりcmxaファイルを持っているが、いくつかの奇妙な理由で、 ocamlbuildはモジュールNetsysの実装が提供されていないと不平を言う。 ocamlbuildが /usr/lib/ocaml/equeue/equeue.cmxaを読み取ることができるという事実は、ライブラリを見つけるという点で環境($ PATHなど)に関してすべてがうまくいくと結論付けるには十分であるはずです。

これはすべてDebian 6.0にあり、私のOCamlのバージョンは3.11.2です。

閲覧した後、svn commit messagerepository diff)が見つかり、使用されたスレッドの数と関係がある可能性があることがわかりました。そして、実際には私のコードのどこかでMutexを使っています(server.mlclient.mlのコードをthis other questionにチェックしてください)。私がserver.mlからMutexのものを取り除くと、それでもエラーが発生します。しかし、_tagsファイルからpkg_threadsをさらに削除すると、すべてがコンパイルされます。だから私の結論は、xmlrpc-lightというスレッドライブラリを直接使うことはできないということです。これは変です。

答えて

1

IMHO equeue METAが間違っています。依存関係にnetsysを追加すると、問題が修正されます:

sed -i 's/threads/netsys,threads/' /usr/lib/ocaml/equeue/META 
関連する問題