如何使用“Haskell Stack”在本地构建和修改来自 Hackage 的包的源代码?

问题描述 投票:0回答:1

背景

我下载了包的源文件(例如

test-framework
)来仔细查看它的架构,修改它以进行实验,并可能稍后做出贡献。

我下载了源代码,但遇到了不兼容性和大量编译器错误。

问题

是否有关于如何正确获取源代码并使用 Haskell Stack 设置此类项目的分步过程?

haskell haskell-stack
1个回答
1
投票

程序

我们可以从以下两个机会中进行选择:

  • 不使用 tarball 文件
  • 使用 tarball 文件

程序 - 不使用 tarball 文件

感谢“抽烟的男人”...

  1. 设置您的主项目

  2. 解压应该获取源代码的包

    stack unpack

  3. 将当前目录更改为创建的文件夹

    cd <package>

  4. 初始化文件夹(创建文件

    stack.yaml

    stack init

  5. 修改主项目的

    stack.yaml
    ,添加相对路径的包到
    packages
    部分!!!

  6. 修改主项目的

    package.yaml
    ,将带有约束的包的依赖项(例如
     == 1.2.1
    )添加到第
    dependencies

    部分
  7. 删除 cabal 文件(此处

    local-from-hackage-without-tarball.cabal
    ),如果有的话

  8. 在主文件夹中构建主项目

    stack build

注意:此设置甚至可以在 ghci 中使用,只需输入

stack ghci
:reload

程序 - 使用 tarball 文件

  1. 设置您的主项目

  2. 解压应该获取源代码的包

    stack unpack

  3. 将当前目录更改为创建的文件夹

    cd <package>

  4. 初始化文件夹(创建文件

    stack.yaml

    stack init

  5. 生成包代码的 tarball 文件

    stack sdist

  6. 修改主项目的

    stack.yaml
    ,添加相对路径的包到
    extra-deps
    部分!!!

  7. 修改主项目的

    package.yaml
    ,将带有约束的包的依赖项(例如
     == 1.2.1
    )添加到第
    dependencies

    部分
  8. 删除 cabal 文件(此处

    local-from-hackage-by-tarball.cabal
    ),如果有的话

  9. 在主文件夹中构建主项目

    stack build

更详细的流程

欲了解更多详情,请查看来源: 使用“stack”从源代码本地构建包

示例项目

此外,对于这两种替代方案,您可以在这里找到完整的项目,其中模块

Random
导出附加功能。

GitHub:

来自 tarball 的 hackage 的本地

测试 6 - 使用 tarball 文件

© www.soinside.com 2019 - 2024. All rights reserved.