OCamlでConfigモジュール問題

どなたでも編集してください。
0
くまぎ @kumagi

標準ライブラリに意図せず Config という名前を使われたせいで既存のコードが走らなくなっていると思われる事態に直面している。pythonの__hoge__ も神経質だが、僕の理解が正しければOCamlの名前空間の汚し方豪快すぎでは。

2015-03-30 18:24:54
くまぎ @kumagi

既存ユーザーは自分の目的のためにガンガン最新のライブラリ・言語機能を使う→パッケージシステムは敷居を下げるためにapt-getとかyumで"古い"バージョンの物しかユーザの目に触れないように腐心する→そこらに転がっているコード片が軽くインストールした環境で走らない→関数型むずい

2015-03-30 18:29:00
おしいれのぼうけん @osiire

@kumagi OCamlの標準ライブラリにConfigなんてモジュールありましたっけ?それできたらうちの会社のコードもコンフリクトするw

2015-03-30 18:29:25
くまぎ @kumagi

@osiire lib/ocaml/compiler-libs/ocamlcommon.cmxa の中でConfigって名前使ってるからダメ、と怒られました。commonって名前が入ってるぐらいなので標準じゃないかと思うんですが僕の理解が間違ってるかも。

2015-03-30 18:30:49
Yoshihiro Imai @yoshihiro503

@kumagi ocamltterでも昔Configというモジュールありましたが、 OConfig.という風にリネームしてます。

2015-03-30 18:36:45
おしいれのぼうけん @osiire

@kumagi あ、compiler-libsね。それはコンパイラ改造用の特殊ツールですが、何に使ってます?特殊なコンパイラを作るのでなければocamlcommon.cmxaはリンクしなくてもいいと思います。

2015-03-30 18:39:40
くまぎ @kumagi

@osiire プロジェクト全体を grep "ocamlcommon" * -rI しても出てこないというホラー…。誰が使っているのかC++のエラーのように出てこない…?

2015-03-30 18:47:39
くまぎ @kumagi

@yoshihiro503 OConfig、なら衝突しにくそうでいいですね。

2015-03-30 18:48:05
おしいれのぼうけん @osiire

@kumagi もしかしてmktopを使ってますかね。4.0以降mktopがcompiler-libsを使うようになったらしく、そこ経由で入っている可能性があります。

2015-03-30 18:49:53
くまぎ @kumagi

@osiire それは使ってないです。ううむppx_derivingだろうか…

2015-03-30 18:50:20
くまぎ @kumagi

因みにさっきの問題を解決する策はOPAMのバージョンを上げる、という物だった。なんで解決したのか不可解過ぎてQiitaにも書けそうにない感。

2015-03-30 18:52:52
おしいれのぼうけん @osiire

@kumagi ppxは関係ないような気が。あと「既存のコードが走らなくなっていると思われる事態」というのが詳細分かりませんが、もしConfigモジュールが競合していてもシャドウイングされるだけで特に動作がおかしくなるとは思えない感じです。

2015-03-30 18:55:46
くまぎ @kumagi

@osiire なぬ…そういうの許されるんですね…

2015-03-30 18:59:55
Jun Furuse 🐫🌴 @camloeba

@osiire @kumagi ocamlcommon とかを使っているのではないでしょうか。よくある -for-pack 案件です

2015-03-30 19:03:39
おしいれのぼうけん @osiire

@kumagi opam経由で利用していた何かのライブラリにcompiler-libsを使わないという変更が入ったんですかね。謎。

2015-03-30 19:03:53
くまぎ @kumagi

@osiire 地雷っぽいので誰かが踏んで直したのかも知れないです。opamのバージョンが変わると入れれるライブラリのバージョンが変わるのも不思議ですが…。

2015-03-30 19:12:02
Jun Furuse 🐫🌴 @camloeba

@kumagi @osiire opam 1.2 しか理解できない opam ファイルは当然 1.1 には無視される

2015-03-30 19:18:58
おしいれのぼうけん @osiire

@kumagi 確かにopam upgrade相当の事をしない限りライブラリは変わりませんよね。opamが余計な依存を入れていたのかな。参考までに問題があったopamのバージョンを教えてもらってもいいですか?

2015-03-30 19:19:15
くまぎ @kumagi

@camloeba @osiire opam1.2で入るppx_derivingとopam1.1で入るppx_derivingでバージョンが大幅に違う…。

2015-03-30 19:29:11
くまぎ @kumagi

@osiire 1.1だと動かなくて1.2なら動きました。かなり大きな差があるんですね…。

2015-03-30 19:29:43
おしいれのぼうけん @osiire

@kumagi でも元々opam 1.1でコンパイルして動いていたはずですよね。もしビルドスクリプトにopam upgradeとかが入っているなら、危険なので外した方がいいかも。

2015-03-30 19:35:11
くまぎ @kumagi

@osiire opam upgradeは入れてなかったのですが、opam install foo bar 的な感じに書いておいてこれで動くと思っていたものが、別のまっさらな環境でopam installしてひどい目に遭ったというやつでこれ解決するにはbundler的なのが必要…

2015-03-30 19:36:29
Jun Furuse 🐫🌴 @camloeba

@kumagi @osiire ポート経験ありますが、思ったよりキツくないはず

2015-03-30 19:39:12