堆栈安装开罗为threadcope

时间:2017-01-29 10:07:32

标签: haskell cabal cairo haskell-stack threadscope

我开始通过堆栈安装threadscope(而不是cabal,是吗?https://wiki.haskell.org/ThreadScope)。 threadscope需要cairo。

$ stack install cairo
cairo-0.13.3.1: configure

--  While building package cairo-0.13.3.1 using:
      /home/username/.stack/programs/x86_64-linux/ghc-8.0.1/bin/ghc --make -odir /tmp/stack13291/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup -hidir /tmp/stack13291/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup -i -i. -package=Cabal-1.24.2.0 -clear-package-db -global-package-db -package-db=/home/username/.stack/snapshots/x86_64-linux/lts-7.10/8.0.1/pkgdb /tmp/stack13291/cairo-0.13.3.1/Setup.hs /home/username/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -main-is StackSetupShim.mainOverride -o /tmp/stack13291/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup/setup -threaded
    Process exited with code: ExitFailure 1
    Logs have been written to: /home/username/.stack/global-project/.stack-work/logs/cairo-0.13.3.1.log

    [1 of 2] Compiling Main             ( /tmp/stack13291/cairo-0.13.3.1/Setup.hs, /tmp/stack13291/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup/Main.o )

    /tmp/stack13291/cairo-0.13.3.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.2.0’
        • In the first argument of ‘defaultMainWithHooks’, namely
            ‘gtk2hsUserHooks’
          In the expression: defaultMainWithHooks gtk2hsUserHooks
          In an equation for ‘main’:
              main = defaultMainWithHooks gtk2hsUserHooks

进一步追逐,我尝试安装gtk构建工具:

$ stack install gtk2hs-buildtools
Copying from /home/username/.stack/snapshots/x86_64-linux/lts-7.10/8.0.1/bin/gtk2hsC2hs to /home/username/.local/bin/gtk2hsC2hs
Copying from /home/username/.stack/snapshots/x86_64-linux/lts-7.10/8.0.1/bin/gtk2hsHookGenerator to /home/username/.local/bin/gtk2hsHookGenerator
Copying from /home/username/.stack/snapshots/x86_64-linux/lts-7.10/8.0.1/bin/gtk2hsTypeGen to /home/username/.local/bin/gtk2hsTypeGen

Copied executables to /home/username/.local/bin:
- gtk2hsC2hs
- gtk2hsHookGenerator
- gtk2hsTypeGen

我在cairo安装时遇到了同样的错误。我正在运行Ubuntu 14.04并安装了libcairo2-dev

$ stack install threadscope
glib-0.13.4.1: configure
cairo-0.13.3.1: configure
Progress: 2/6
--  While building package cairo-0.13.3.1 using:
      /home/username/.stack/programs/x86_64-linux/ghc-8.0.1/bin/ghc --make -odir /tmp/stack20456/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup -hidir /tmp/stack20456/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup -i -i. -package=Cabal-1.24.2.0 -clear-package-db -global-package-db -package-db=/home/username/.stack/snapshots/x86_64-linux/lts-7.10/8.0.1/pkgdb /tmp/stack20456/cairo-0.13.3.1/Setup.hs /home/username/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -main-is StackSetupShim.mainOverride -o /tmp/stack20456/cairo-0.13.3.1/.stack-work/dist/x86_64-linux/Cabal-1.24.2.0/setup/setup -threaded
    Process exited with code: ExitFailure 1

堆栈版本:

$ stack --version
Version 1.3.2, Git revision 3f675146590da4f3edf768b89355f798229da2a5 (4395 commits) x86_64 hpack-0.15.0

Cabal版本:

$ stack exec cabal -- --version
cabal-install version 1.24.0.1
compiled using version 1.24.1.0 of the Cabal library 

其他版本:

$ sudo apt-get install libgtk2.0-dev libpango1.0-dev libglib2.0-dev libcairo2-dev libghc-gtk-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libcairo2-dev is already the newest version.
libglib2.0-dev is already the newest version.
libglib2.0-dev set to manually installed.
libgtk2.0-dev is already the newest version.
libgtk2.0-dev set to manually installed.
libpango1.0-dev is already the newest version.
libpango1.0-dev set to manually installed.
libghc-gtk-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove

我在这里提出这个而不是超级用户或ubuntu的原因是这个错误:

  • Couldn't match expected type ‘Distribution.Simple.UserHooks.UserHooks’
                  with actual type ‘Cabal-1.24.1.0:Distribution.Simple.UserHooks.UserHooks’

似乎暗示Haskell包代码本身有一些时髦的东西,希望它在一个模块中,在某种程度上更深层次,在cabal- *中,对吧?

尚未清除的其他参考资料:

2 个答案:

答案 0 :(得分:1)

我认为这与recently

的问题相同

你能试试吗

Using System.Linq; ... comboFms.Items.AddRange(fmsDB.Where(s => !string.IsNullOrEmpty(s)).ToArray());

并查看是否能解决问题。

==编辑:==

但是,为了回答您的第一个问题,我可以使用以下命令通过堆栈安装threadscope,

stack setup --upgrade-cabal

但我使用的是Arch Linux。

答案 1 :(得分:1)

为了成功汇编cairo,您需要支持新的custom-setup feature in Cabal 1.24。官方发布的Stack版本尚未支持此功能,但master上提供了支持。为了安装它:

  • 运行stack upgrade --git --source-only
  • 确保目标目录(通常为$HOME/.local/bin)位于PATH
  • 为了更加确定,请运行stack --versionwhich stack

在此之后,stack build cairo应该有效。