2017-11-29 5 views
1

jbuild仕様を定義するときに特定のOCamlバージョンを要求するにはどうすればよいですか?jbuilderパッケージで最小のOCamlバージョンを要求する

(jbuild_version 1) 

(library 
((name myjson) 
    (public_name myjson) 
    (synopsis "My version of json") 
    (libraries (yojson)))) 

しかし、その後、私はOCamlの< 4.06では使用できませんUnix.unsafe_environmentを、使用したい:

たとえば、私は、このファイルがあるとします。どのようにしてこの制約をパッケージに追加すれば、古いOCamlでコンパイルしようとしている人が(より秘密のError: Unbound value Unix.unsafe_environmentの代わりに)良いエラーメッセージを受け取るでしょうか?

ocaml_versionという変数がありますが、使用方法の簡単な例は見つかりませんでした。 (このパッケージはインストールされないように)

答えて

1

ocamlのバージョンがライブラリと互換性がない場合、jbuilderが穏やかなメッセージを表示するような組み込みの方法はありません。

空の.mlを生成するルール・スタンザではocaml_versionを使用できますが、バージョンが正しくない場合は失敗します。しかし、この機能の願いを尋ねる方がよいでしょう。

0

あなたはmyjson.opamにこれを追加することにより、opamレベルでそれを解決することができます?

available: [ ocaml-version >= "4.06.0" ] 

(あなたはUnix.environmentはあなたのために動作しないことを確認しているunsafe_environmentが来ます

+0

私が実際に必要とするのは、 'jbuilder build'コマンド(OPAMを使わずにローカルでコンパイルしようとしているとき)がファイルをコンパイルしようとしているのを避けてからです。したがって、OPAMのステップは少し遠すぎます。 ( 'unsafe_environment'については' @ since'タグを持つ関数の単なるランダムな例でした) – anol

関連する問題