如何检测perl的ActiveState版本?

时间:2016-05-05 17:17:40

标签: perl activestate

my CPAN modules中的一个not available通过其ppm实用程序在ActivePerl上ActiveState's build process times out。显然,我对此模块的单元测试过于彻底,并且在尝试构建它时会One way I've found to do this

所以我在测试中要做的是检测我的模块何时在ActivePerl上构建,如果是,则为构建过程提供更小更快的测试集。

Config是:

($is_activestate) = grep /provided by ActiveState/, qx($^X -v)

但我想知道是否有更轻量级的选项。在ActivePerl中始终(且仅)设置的环境变量? $ENV{ACTIVESTATE_PPM_BUILD}中的某些内容?还有其他建议吗?

更新:在这些版本中,似乎设置了{{3}}。

2 个答案:

答案 0 :(得分:7)

检查它是否在ActivePerl构建下运行不是最佳的。理想情况下,您要检查它是否在ActiveState的构建环境中运行。我会在t/00-use.t中转储env以查看它们是否设置了一些变量来指示这一点。

info("$_=$ENV{$_}") for sort keys %ENV;

您也可以联系ActiveState并询问他们的建议。

或者,您可以这样做,以便最慢的测试仅按需运行(例如,当存在特定环境时)。对其他人来说,5分钟的测试似乎也有些过分。

至于检查您是否正在运行ActiveState构建,以下是一些可能性:

  • use Config; print Config::local_patches();返回包含ActivePerl Build
  • 的字符串
  • $Config{cf_email}设置为support@ActiveState.com
  • ActivePerl :: Config模块存在。
  • ActivePerl :: PPM模块存在。

可以随时检查所有这些。

use Config qw( %Config );

my $is_activeperl = 0;
$is_activeperl ||= eval { Config::local_patches() =~ /ActivePerl/i };
$is_activeperl ||= $Config{cf_email} =~ /ActiveState/i;
$is_activeperl ||= eval { require ActivePerl::Config };
$is_activeperl ||= eval { require ActivePerl::PPM };

答案 1 :(得分:4)

根据对activeperl ppm build increase timeout的快速搜索,您可以将此情况报告给他们的邮件列表/支持,他们将手动增加模块构建的超时值。