- yoshihiro503
- 1415
- 0
- 0
- 0
標準ライブラリに意図せず Config という名前を使われたせいで既存のコードが走らなくなっていると思われる事態に直面している。pythonの__hoge__ も神経質だが、僕の理解が正しければOCamlの名前空間の汚し方豪快すぎでは。
2015-03-30 18:24:54既存ユーザーは自分の目的のためにガンガン最新のライブラリ・言語機能を使う→パッケージシステムは敷居を下げるためにapt-getとかyumで"古い"バージョンの物しかユーザの目に触れないように腐心する→そこらに転がっているコード片が軽くインストールした環境で走らない→関数型むずい
2015-03-30 18:29:00@kumagi OCamlの標準ライブラリにConfigなんてモジュールありましたっけ?それできたらうちの会社のコードもコンフリクトするw
2015-03-30 18:29:25@osiire lib/ocaml/compiler-libs/ocamlcommon.cmxa の中でConfigって名前使ってるからダメ、と怒られました。commonって名前が入ってるぐらいなので標準じゃないかと思うんですが僕の理解が間違ってるかも。
2015-03-30 18:30:49@kumagi ocamltterでも昔Configというモジュールありましたが、 OConfig.という風にリネームしてます。
2015-03-30 18:36:45@kumagi あ、compiler-libsね。それはコンパイラ改造用の特殊ツールですが、何に使ってます?特殊なコンパイラを作るのでなければocamlcommon.cmxaはリンクしなくてもいいと思います。
2015-03-30 18:39:40@osiire プロジェクト全体を grep "ocamlcommon" * -rI しても出てこないというホラー…。誰が使っているのかC++のエラーのように出てこない…?
2015-03-30 18:47:39@kumagi もしかしてmktopを使ってますかね。4.0以降mktopがcompiler-libsを使うようになったらしく、そこ経由で入っている可能性があります。
2015-03-30 18:49:53因みにさっきの問題を解決する策はOPAMのバージョンを上げる、という物だった。なんで解決したのか不可解過ぎてQiitaにも書けそうにない感。
2015-03-30 18:52:52@kumagi ppxは関係ないような気が。あと「既存のコードが走らなくなっていると思われる事態」というのが詳細分かりませんが、もしConfigモジュールが競合していてもシャドウイングされるだけで特に動作がおかしくなるとは思えない感じです。
2015-03-30 18:55:46@osiire @kumagi ocamlcommon とかを使っているのではないでしょうか。よくある -for-pack 案件です
2015-03-30 19:03:39@kumagi opam経由で利用していた何かのライブラリにcompiler-libsを使わないという変更が入ったんですかね。謎。
2015-03-30 19:03:53@osiire 地雷っぽいので誰かが踏んで直したのかも知れないです。opamのバージョンが変わると入れれるライブラリのバージョンが変わるのも不思議ですが…。
2015-03-30 19:12:02@kumagi @osiire opam 1.2 しか理解できない opam ファイルは当然 1.1 には無視される
2015-03-30 19:18:58@kumagi 確かにopam upgrade相当の事をしない限りライブラリは変わりませんよね。opamが余計な依存を入れていたのかな。参考までに問題があったopamのバージョンを教えてもらってもいいですか?
2015-03-30 19:19:15@camloeba @osiire opam1.2で入るppx_derivingとopam1.1で入るppx_derivingでバージョンが大幅に違う…。
2015-03-30 19:29:11@kumagi でも元々opam 1.1でコンパイルして動いていたはずですよね。もしビルドスクリプトにopam upgradeとかが入っているなら、危険なので外した方がいいかも。
2015-03-30 19:35:11@osiire opam upgradeは入れてなかったのですが、opam install foo bar 的な感じに書いておいてこれで動くと思っていたものが、別のまっさらな環境でopam installしてひどい目に遭ったというやつでこれ解決するにはbundler的なのが必要…
2015-03-30 19:36:29