繁体   English   中英

Haskell-将软件包从源代码添加到Yesod项目

[英]Haskell - adding a package from source to a Yesod project

我找到了一个很好的音频库来处理服务器端的音频,但是实际上在将它作为yesod的一部分时遇到了麻烦(也许是因为我不太了解cabal / stack)。

我正在尝试包含此模块Sound.File.Sndfile并且已经从此处http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz下载了其源文件。 完成该步骤有哪些步骤?

编辑

我尝试执行此步骤

runhaskell Setup.hs configure --ghc
runhaskell Setup.hs build
runhaskell Setup.hs install

但是它没有Setup.hs文件。

编辑2

我已经添加了Alexis King建议的依赖项hsndfile ,但是在hsndfile时出现以下错误:

[ 1 of 59] Compiling Enums            ( Enums.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.7.0/build/Enums.o )
<command line>: can't load .so/.DLL for: libsndfile.so (libsndfile.so: cannot open shared object file: No such file or directory)

--  While building package Fastwork-0.0.0 using:
      /home/geppetto/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.7.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.7.0 build lib:Fastwork exe:Fastwork --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1

我已经下载了libsndfile-1.0.25.tar.gz并将其libsndfile-1.0.25.tar.gz压缩,然后运行./configure、make、make install。 当我尝试在Yesod项目中再次进行stack build时,错误是相同的。 我想念什么?

有什么理由不能使用Hackage上的任何这些库 如果您使用的是实际软件包目录中的软件包,而不是仅使用tarball,则可能会更容易,更安全,更可预测。

如果您确实要使用找到的该库,并且正在使用堆栈,则可以将其添加到stack.yaml文件的packages部分:

packages:
- '.'
- location: http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.27.tar.gz
  extra-dep: true

然后,您可以将对libsndfile的依赖项添加到您的.cabal文件中。 但是,我会谨慎地依赖于来自任意URL的软件包,因此,至少,我可能会下载该软件包并将其解压缩。 然后,您可以仅指向本地路径而不是远程URL:

packages:
- '.'
- location: ./some/path/to/libsndfile
  extra-dep: true

有关更多信息,请参见stack.yaml文件文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM