次の質問があります。
相互に依存する 2 つの Haskell ライブラリがあり、両方のライブラリは cabal によって管理されています。対応する cabal ファイルは次のようになります。
ライブラリ 1:
name: Lib1
version: 0.1
cabal-version: >=1.2
build-type: Simple
author: Matthias
library
hs-source-dirs: src
build-depends:
base >= 4,
Lib2
ghc-options: -Wall
exposed-modules: <...>
ライブラリ 2:
name: Lib2
version: 0.1
cabal-version: >=1.2
build-type: Simple
author: Matthias
library
hs-source-dirs: src
build-depends:
base >= 4,
Lib1
ghc-options: -Wall
exposed-modules: <...>
ライブラリの 1 つ (ここではライブラリ 2) をインストールすると、次のようにcabal install
機能します。
Resolving dependencies...
In order, the following will be installed:
Lib2-0.1 (reinstall)
Warning: Note that reinstalls are always dangerous. Continuing anyway...
Configuring Lib2-0.1...
Building Lib2-0.1...
Preprocessing library Lib2-0.1...
Registering Lib2-0.1...
Installing library in
C:\Users\Matthias\AppData\Roaming\cabal\Lib2-0.1\ghc-7.4.2
Registering Lib2-0.1...
ただし、他のライブラリ (ここではライブラリ 1) をインストールしようとするとcabal install
、依存関係エラーが発生します。
Resolving dependencies...
cabal.exe: Could not resolve dependencies:
trying: Lib1-0.1 (user goal)
next goal: Lib2 (dependency of Lib1-0.1)
rejecting: Lib2-0.1/installed-aa4... (package is broken)
相互に依存している 2 つのライブラリを処理して、依存関係エラーが発生しないようにする方法はありますか?また、cabal がそのようなケースを適切に処理できないだけですか?