安装自定义版本的 Cabal 并将其用于堆栈

Installing a customized version of Cabal and use it for stack

我正在尝试针对自定义版本的 Cabal 构建堆栈。为此,我首先尝试通过 cabal install --project-file=cabal.project.release --lib Cabal 从修改后的 git 树中安装我的自定义 Cabal 版本,生成以下修剪输出:

[...]
Resolving dependencies...
Build profile: -w ghc-8.10.5 -O1
In order, the following will be built (use -v for more details):
 - Cabal-3.7.0.0 (lib) (requires build)
Starting     Cabal-3.7.0.0 (lib)
Building     Cabal-3.7.0.0 (lib)
Installing   Cabal-3.7.0.0 (lib)
Completed    Cabal-3.7.0.0 (lib)

后来我尝试安装堆栈。然而,在构建时我发现我的旧系统 Cabal 版本 3.2.1.0 而不是我修改后的版本 3.7.0.0 使用:

[...]
stack                > configure (lib + exe)
[1 of 2] Compiling Main             ( /home/max/stack/Setup.hs, /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/Main.o )
[2 of 2] Compiling StackSetupShim   ( /home/max/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs, /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/StackSetupShim.o )
Linking /home/max/stack/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/setup/setup ...
Configuring stack-2.7.4...

查找我的 cabal 版本给出:

$ cabal list --installed Cabal
* Cabal
    Synopsis: A framework for packaging Haskell software
    Default available version: 3.6.2.0
    Installed versions: 3.2.1.0
    Homepage: http://www.haskell.org/cabal/
    License:  BSD3

看来我修改后的Cabal 3.7.0.0版本没有安装成功。有什么方法可以安装自定义的 Cabal 库并在不同的项目中使用它,例如在构建堆栈时?

如@sjakobi 所述,解决方案是将 extra-deps 添加到堆栈 yaml 文件并使用堆栈构建自身。