【发布时间】:2021-07-05 13:51:41
【问题描述】:
我正在开发一个不能在 Windows 上运行的 Perl 模块,以防止 CPAN 测试人员在 Windows 上失败我想使用从 Makefile 生成的分发中的元文件来防止模块被安装或测试在 Windows 上。
如果情况相反(模块仅适用于 Windows),指定对 Win32 的依赖项将使其仅可安装在 Windows 上。
另外如果模块转换为Dist::Zilla,需要对应的dist.ini解决方案。
【问题讨论】:
-
Win32.pm 在其 Makefile.PL 中仅包含
unless ($^O eq "MSWin32" || $^O eq "cygwin") { die "OS unsupported\n"; }。您可以使用相同的方法(只是翻转条件)。 -
两次失败,这个解决方案所做的只是使安装在不受支持的平台上失败,它没有包含在元 yml/json 文件中。对于那些没有支持平台的特定密钥的人来说,这是规范的错误。另一个失败是如果分发切换到它,解决方案不会移植到 Dist::Zilla。
-
我刚刚找到了解决可移植性的 Devel::AssertOS 和 Dist::Zilla::Plugin::AssertOS。
-
Re "它没有被包含在元 yml/json 文件中",它甚至没有到达生成这些文件的地步!
-
Re "我刚刚发现 Devel::AssertOS 和 Dist::Zilla::Plugin::AssertOS 可以解决可移植性问题。",一点也不。他们不可能做任何不同的事情。 Devel::AssertOS 甚至与模块安装没有任何关系