在 lts-7.8 及更高版本上构建依赖于 gtk2hs 的项目失败

2024-01-10

在 lts-7.8 上以及 Cabal 变为 1.24.1.0 之后,构建依赖于 glib 的项目失败。

重现步骤

  1. 将 glib 添加到项目的 .cabal 文件中

    build-depends:       base
                       , gtktest
                       , glib
    
  2. 运行以下命令

    stack install gtk2hs-buildtools
    stack build
    

Result

出现以下错误

...

[debug] Ignoring package Cabal due to wanting version 1.24.1.0 instead of 1.24.0.0
@(Stack\Build\Installed.hs:196:5)

...

--  While building package glib-0.13.4.1 using:
  C:\Users\foo\AppData\Local\Programs\stack\x86_64-windows\ghc-8.0.1\bin\ghc.EXE --make -odir C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\.stack-work\dist\b7fec021\setup -hidir C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\.stack-work\dist\b7fec021\setup -i -i. -package=Cabal-1.24.0.0 -clear-package-db -global-package-db -package-db=C:\sr\snapshots\a78c6a89\pkgdb C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\Setup.hs -o C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\.stack-work\dist\b7fec021\setup\setup
Process exited with code: ExitFailure 1
Logs have been written to: C:\Users\foo\Documents\Files\Haskell\gtktest\.stack-work\logs\glib-0.13.4.1.log

[1 of 1] Compiling Main             ( C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\Setup.hs, C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\.stack-work\dist\b7fec021\setup\Main.o )

C:\Users\foo\AppData\Local\Temp\stack5512\glib-0.13.4.1\Setup.hs:8:29: error:
     Couldn't match expected type ‘Distribution.Simple.UserHooks.UserHooks’
                  with actual type ‘Cabal-1.24.1.0:Distribution.Simple.UserHooks.UserHooks’
      NB: Cabal-1.24.1.0:Distribution.Simple.UserHooks.UserHooks’
            is defined in ‘Distribution.Simple.UserHooks’
                in package ‘Cabal-1.24.1.0’
          ‘Distribution.Simple.UserHooks.UserHooks’
            is defined in ‘Distribution.Simple.UserHooks’
                in package ‘Cabal-1.24.0.0’
     In the first argument of ‘defaultMainWithHooks’, namely
        gtk2hsUserHooks’
      In the expression: defaultMainWithHooks gtk2hsUserHooks
      In an equation for ‘main’:
          main = defaultMainWithHooks gtk2hsUserHooks

我认为 ghc-8.0.1 全局包中的 Cabal-1.24.0.0 导致了问题,并在 ghc 的全局包中安装 Cabal-1.24.1.0 后成功构建了它。

然而,这种方法对于初学者来说很困难,我认为这不是正确的解决方案。正确的解决方法是怎样的呢?

堆栈版本

Version 1.2.0, Git revision 123819b7d65df2ad7fe63fb5eb39a98536acb5f3 (4055 commits) x86_64 hpack-0.14.0

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 lts-7.8 及更高版本上构建依赖于 gtk2hs 的项目失败 的相关文章

随机推荐