我正在编写一个CI脚本,以在GitHub上构建一个Perl库。
现在我是这样做的:
cpanp i Module::Install # and other configure dependencies
perl Makefile.PL
make dist
cpanp i Foo-Bar-6.66.tar.gz
- 我想为我构建的所有依赖项创建一个标准杆数包。这就是我使用cpanp的原因
- 与
cpanm .
不同,cpanp i .
有缺陷,并且使用目录名称来命名分发,这是不正确的。这就是我使用make-dist步骤的原因
当然,只要建立了我的PAR,我就可以使用其他东西。有https://metacpan.org/pod/PAR::Dist#blib_to_par该函数原则上可以在任何其他构建过程中调用。
我目前的方法的问题是:
- 配置依赖项列表是手动维护的。我想用一些自动的工具
- 在Windows上,CCD_ 3可以被称为CCD_ 4或CCD_。我想使用现有的自动检测逻辑,而不是滚动自己的
- 最后,我想自动检测Makefile.PL与Build.PL,这样我就可以复制粘贴不同发行版的代码
我的问题是:有没有任何方法可以通过使用cpanp(这种方法可以解决我的问题(或任何其他适用于不同版本的Windows Perl并构建依赖项的标准杆数分发来构建分发的本地源?
我自己设法找到了解决方案。
-
CPANPLUS除了
cpanp
之外还附带了另一个名为cpan2dist
的工具。cpan2dist --archive Foo-Bar-6.66.tar.gz
按预期工作——它构建依赖关系和当前tarball的分布,并像cpanp
那样自动检测必要的构建工具。 -
要确定真正的
make
,可以使用CPANPLUS::Config->new->get_prog('make')
。它再次使用与CPANPLUS
相同的自动检测逻辑,因此它非常健壮。