问题标签 [haskell-stack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
43 浏览

security - Stack 可以确保依赖项不被篡改吗?

Cabal 的一个问题是它从 Hackage 中提取软件包,正如前段时间所讨论的,一段恶意代码可以通过多种方式进入。

Stack 是否改善了这种情况,是否采取了任何预防措施?是否可以确保为给定项目从外部下载的所有代码都经过验证?

这包括额外的依赖 - 如果有任何声明,是否可以让堆栈验证它们,例如给出下载包的预期哈希?

0 投票
1 回答
2275 浏览

haskell - Haskell Stack 和 C 库

这可能是这篇文章的副本。但它得到的唯一答案似乎对我不起作用,所以我在这里发布我自己的案例,希望找到一个具体的解决方案。我在 Linux Ubuntu Trusty 上。

我有一个专有的 C 库 libMyLib.so,位于 /usr/local/lib(包含在 LD_LIBRARY_PATH 中)。

我以通常的方式将 haskell 绑定写到了这个 C 库。主要.hs:

我可以用 ghci 测试这个程序,将库和可以找到它的目录传递给它:ghci /usr/local/lib/ -lMyLib它工作得很好。

现在,独立地,我正在尝试开始使用堆栈,并且按照本指南,我能够构建几个非平凡的程序示例。

但是,我无法堆栈构建上面的 FFI Main.hs 程序,因为它抱怨缺少 C 库:

第一次尝试 :
me@user:~/myProject$ stack build

在第二次尝试之前,我确实添加了以下内容:
- 添加extra-lib-dirs: [/usr/local/lib]到 stack.yaml 文件中。
- 添加extra-include-dirs: [/usr/local/lib]到 stack.yaml 文件中(尽管可能不需要)。
-extra-libraries: lMyLib在项目的 cabal 文件中添加到可执行文件或库标签下(我也尝试extra-libraries: libMyLib.so过相同的结果)。

第二次尝试:
me@user:~/myProject$ stack build

所以现在它知道它需要哪个 C 库,因为它抱怨它,同时添加了正确的额外库目录(参见错误消息的最后)。我不确定评论(you may need the "-dev" version)是否相关。

我的问题:我被困在这里。我还应该对 yaml 或 cabal 文件或其他地方做些什么,以便stack build找到 C 库?

0 投票
0 回答
620 浏览

haskell - Haskell Stack 和 C 库 II

这是这篇文章的后续内容(不幸的是)。

我正在尝试stack build一个项目,其中对位于(包含在) 中Main.hs的专有 C 库有一些 FFI 调用。libMyLib.so/usr/local/libLD_LIBRARY_PATH

当使用命令在 GHCi(外部stack)中运行时ghci /usr/local/lib/ -lMyLib,一切正常。

但是,在运行时stack build,我遇到了与链接相关的问题:

这是相关 cabal 文件的额外内容:

运行stack exec env显示LD_LIBRARY_PATH指向正确的目录 ( LD_LIBRARY_PATH=/usr/local/lib),只是为了确保我已将此目录添加到.yaml文件 ( extra-lib-dirs: [/usr/local/lib])。

我玩过各种 GCC 编译选项,例如,通过文件参数或直接通过( )-pthread代替-threaded...,但无济于事。.cabalstack buildstack build --ghc-options="-foo..."

我的问题:我还应该去哪里看?我应该运行什么样的测试来找出问题的根源(明显的链接问题)?

== 编辑 ==
安装了同一个 C 库的两个版本,一个依赖于另一个 C 库,比如libOther.so. 当我终于意识到这一点时,我将它添加到 cabal 文件中并且效果很好:

0 投票
1 回答
148 浏览

haskell - Yesod的`stack build`问题

我正在尝试在一个干净的(新)VPS 服务器上堆叠构建一个新的基于 Yesod 的项目,该服务器在 Ubuntu Trusty x86_64 上运行。

如果它对问题很重要,这里是内存信息:

这是堆栈项目的 cabal 文件的一部分:

除了 yesod 之外,依赖项中还有其他包,当我stack build没有在依赖项中添加 yesod 时,各种包正常下载并且一切看起来都很好 - 当然构建无法完成,因为还需要 yesod。

但是,当我添加 yesod 依赖项列表时,我收到一条Progress: 0/96Killed错误消息。依赖项列表中是否存在其他包似乎并不重要。这是一个转储stack build --verbose

me@user:~/proj-web01$ stack build --verbose

我在这些输出消息中看不到任何东西,它提供了最后发生的事情的线索Progress: 0/96Killed,没有警告,什么都没有……我在网上搜索了类似的问题,但找不到任何问题,我被困在那里。

我的问题:我应该寻找什么,我还应该在哪里看?有没有我应该做的测试让我知道问题可能来自哪里?谢谢。

== 编辑 ==

事实上,这个问题更容易重现:

安装其他较小的软件包就可以了(例如stack install csv...)

按照 Sibi 的建议,我尝试增加 VPS 上的交换空间,但显然这在用户级别是不允许的(U&L 讨论)。围绕这个限制有一些技巧,但是在尝试安装yesod时似乎并没有改变任何东西。

0 投票
1 回答
407 浏览

haskell - 目录结构 Yesod 和 Stack

我有一个简单的 Yesod 项目,其通常的目录结构如下:

我正在尝试使用堆栈构建这个项目,通常Main.hs程序位于app目录下。

我试图将所有 Yesod 结构放在app目录下(app目录在.上面)。

该项目的 cabal 文件如下所示:

现在,当我尝试时stack build,我收到以下错误消息:

widgetFileNoReload不知道在哪里可以找到app/templates目录中的“默认布局”文件。

我的问题:我应该以不同的方式编写 cabal 文件,还是应该将模板、处理程序...文件夹放在其他地方(例如在 src 中)?使用堆栈时最自然的目录结构是什么?或者如何设置堆栈参数(cabal 和 yaml 文件)以适应通常的 Yesod 目录结构?

0 投票
0 回答
137 浏览

macos - ghc-mod 尝试为堆栈项目执行 cabal(即使不存在 dist/ 目录)

我正在使用在 OSX 上使用堆栈安装的 ghc-mod:

但是,当我尝试在 spacemacs 中或从命令行使用没有dist/dir 的堆栈项目时,它会一直尝试执行 cabal。

为什么是这样?

注意我之前从https://ghcformacosx.github.io/安装了 OSX ghc/cabal 。但是,我已经删除了 cabal 所在的 ~/Library/Haskell 目录以及它从 Applicaitons 安装的 app 目录。此外,这里的 ghc-mod 是使用 stack 和 stack 的 ghc 构建的。

0 投票
0 回答
87 浏览

haskell - GHC Haskell 工具路径

用项目搭建开发环境需要哪些路径GHC?或者更具体地说,stack托管GHC环境?

我对GHC, cabal,stack和需要什么ghc-mod感到困惑hdevtools

我知道这stack path会打印出托管路径,但我认为它以不同的键名打印它们,而不是我需要的环境变量或命令行参数GHC和其他工具,所以它对我没有直接用处。

例如,在处理典型Java项目时,我只需要设置PATHJAVA_HOME我需要的所有工具都可以在这个环境中工作(因为Java我通常不需要maven为每个项目单独存储库,因为链接方式不同)。

理想情况下,我想打电话stack $SHELL并在环境中配置所有内容(stack ghci之后不会)。

0 投票
1 回答
1118 浏览

windows - 如何更改 Windows 上 stack.yaml 的默认位置?

我正在尝试在 Windows 机器上安装 Stack for Haskell。对于安装,我使用了 64 位安装程序。安装程序完成后,我想安装堆栈依赖项

在命令行中。但是,我收到此错误:

如果我不得不猜测是因为堆栈的默认 stack.yaml 配置文件存储在 AppData 中,其中文件夹名称包含我的用户名。而且我猜这个文件夹名称中的特殊字符不受支持(因为实际用户和用户文件夹称为“René”)。

我也已经尝试将 Stack 安装在默认位置(也在 AppData 内)和用户文件夹之外的不同文件夹 - 仍然是同样的问题。

是否有可能更改堆栈从中获取其默认 stack.yaml 文件的位置或针对此问题的任何其他已知解决方法?

0 投票
1 回答
235 浏览

haskell - haskell-stack 获取 TlsExceptionHostPort 错误

通过 vagrant 在 Debian 8.2 中运行 stack/ghc 有一段时间了。今天早上:

即使我删除,同样的错误仍然存​​在~/.stack。我搞砸了什么吗?

0 投票
1 回答
576 浏览

haskell - 尝试使用 GHCJS 编译器创建新 Stack 项目时出错

我正在尝试按照http://docs.haskellstack.org/en/stable/ghcjs.html中的说明在 NixOS 上使用 GHCJS 作为编译器建立一个新的 Stack 项目

我在我的 stack.yaml 文件中包含以下代码行(全部在一行,因为制表符空格似乎会产生问题):

我在运行时检索到以下错误消息stack setup

此外,我尝试删除该setup-info字段,因为 Stack 抱怨它,让我的stack.yaml文件如下:

它使用堆栈设置命令生成此输出:

有谁知道为什么会发生这种情况?