stack.yaml
はどこで読むのか
Runner.hs#withBuildConfigAndLock なんてのがあって、ここで読んでいる。実際に読んでいるのは Config.hs#loadProjectConfigとかで、こいつが FromJSONのインスタンス になっていてパースしてる。設定の優先順位とかは この辺 で決まってる。設定は Monoid
として定義されていて、ほとんどはFirstだが物によっては挙動が違うので注意。
Resolver
のロード
build
を呼ぶお膳立てをしてくれる withBuildConfigAndLock
から潜っていくと BuildConfigを読むための関数を作っている。ここで利用する loadBuildConfig
が BuildPlan#loadResolver の先で ダウンロードなどをしている。
用意された lcLoadBuildConfig
は buildが呼ばれる前に使われる 。この段階で MiniBuildPlanが決定されて コンパイラのバージョンが決まっている。