type holyshared = Engineer<mixed>

PHP、Hack、Ruby、OCaml、Rust、Javascript周りの技術ブログ

jbuilderからduneに変えた

dune1.0がリリースされたので、jbuilderからduneに置き換えました。
作業内容としてはそんなに修正箇所はありませんでした。

github.com

作業内容

  1. jbuildファイルの変更
    • jbuildファイルをduneにリネーム
    • 設定ファイルの変更
  2. コマンドをjbuilderからduneに変更
  3. opamファイルの変更
    • 依存しているパッケージをjbuilderからduneに変更
  4. コンパイル時のwarningメッセージを出ないように修正
    • コンパイル時のオプションが変わったのか、warningがでるようになったのでソースを修正

1. jbuildファイルの変更

jbuildファイルをduneに名前を変えた後に、S式の()を一つ外します。
duneではいらなくなったようです。

削除し忘れていても、ビルド時にメッセージで()がいらないと言われるので、すぐ直せます。

不要な()を削除する

修正前
(library (
  (public_name typesafety.misc)
  (name misc)
))
修正後
(library
  (public_name typesafety.misc)
  (name misc)
)

パラメメータの置き換え

パラメータは${}で指定できましたが、duneからは%{}に変わったようです。  

(rule (
  (targets (github_t.ml github_t.mli))
  (deps (github.atd))
  (action (run ${bin:atdgen} -t ${<}))
))
(rule
  (targets github_t.ml github_t.mli)
  (deps github.atd)
  (action (run %{bin:atdgen} -t %{deps}))
)

2. コマンドをjbuilderからduneに変更

これは単純にjbuilderをduneに置き換えるだけです。

修正前

build:
    jbuilder build

修正跡

build:
    dune build

3. opamファイルの変更

これも単純にjbuilderをduneに置き換えるだけです。

修正前

build: [
  ["jbuilder" "build" "-p" name "-j" jobs]
]
build-test: [
  ["jbuilder" "runtest" "-p" name]
]
depends: [
  "jbuilder" {build}
]

修正後

build: [
  ["dune" "build" "-p" name "-j" jobs]
]
build-test: [
  ["dune" "runtest" "-p" name]
]
depends: [
  "dune" {build}
]

4. コンパイル時のwarningメッセージを出ないように修正

使用していない式や型の定義などは、warningがでるようになりました。
これは単純に直していけばいいので、そんなに難しくないかと思います。