【问题标题】:MakeMaker: make test vs make distMakeMaker:制作测试与制作 dist
【发布时间】:2011-03-18 19:10:11
【问题描述】:

假设我使用module-starter 创建了一个目录,并从那时起编写了几个额外的模块和测试。

make test 将在t/ 中对lib/ 中的所有 模块运行all 测试,但是make dist 只会打包MANIFEST 中提到的文件进入 tar.gz。

所以我最近因为运行make test && make dist 而被烧毁了,但仍然得到一个损坏的包。

我的问题是:我是否遗漏了什么,或者这可以报告为 MakeMaker 中的一个小错误? (Makefile.PL 似乎依赖于哪个)。

【问题讨论】:

  • 我错过了这个错误?你的意思是你不应该更新你的清单吗?它如何自动知道您要添加什么?
  • 我不介意反过来说:测试时跳过不在清单中的文件。这很难忽视,也不需要魔法。
  • 您应该考虑使用Dist::Zilla。它的标准插件之一是 TestRelease,它解压缩 tarball 并使用它运行测试,以确保您发布的发行版确实通过了它的测试。

标签: perl cpan makemaker


【解决方案1】:

您可以使用make disttest,它将从清单创建一个分发目录(相当于make distdir)并在其中运行make test。这保证您运行的文件与将要交付的文件相同。

作为发布的一部分,我还重建了我的 MANIFEST,这需要使您的 MANIFEST.SKIP 保持最新。

总而言之,我的基本发布脚本是:

perl Makefile.PL
make manifest
make disttest
make dist

【讨论】:

  • make disttest 确实是我希望make test 工作的方式,谢谢。
【解决方案2】:

在你发布你的包之前运行make distcheck。这将警告您 MANIFEST 中可能缺少的任何内容。

某些模块在构建过程中会生成文件(包括lib/ 下),因此MANIFEST 中缺少的文件不一定会导致make dist 失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多