2016-05-05 15 views
9

Một trong số my CPAN modulesnot available trên ActivePerl thông qua tiện ích ppm của nó. Rõ ràng đơn vị của tôi thử nghiệm cho mô-đun này là quá kỹ lưỡng và ActiveState's build process times out khi nó cố gắng để xây dựng nó.Làm thế nào để phát hiện phiên bản ActiveState của perl?

Vì vậy, những gì tôi muốn làm trong các bài kiểm tra của tôi là phát hiện khi mô-đun của tôi đang được xây dựng trên ActivePerl, và nếu có, để cung cấp quy trình xây dựng với một bộ thử nghiệm nhỏ hơn và nhanh hơn.

One way I've found to do this là:

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

nhưng tôi tự hỏi nếu có một tùy chọn trọng lượng nhẹ hơn. Một biến môi trường luôn luôn (và chỉ) được đặt trong ActivePerl? Cái gì đó trong Config? Bất cứ một đề nghị nào khác?

CẬP NHẬT: Có vẻ như $ENV{ACTIVESTATE_PPM_BUILD} được đặt trong các bản dựng này.

+2

FWIW: 'Config :: local_patches()' có thể có một số giá trị. Trên máy của tôi, nó trả về 'ActivePerl Build 2201 [299574]'. – tjd

Trả lời

7

Kiểm tra xem nó có đang chạy trong ActivePerl không tối ưu. Lý tưởng nhất là bạn muốn kiểm tra xem nó có đang chạy trong môi trường xây dựng của ActiveState hay không. Tôi sẽ đổ env trong t/00-use.t để xem nếu họ đặt một số biến chỉ ra điều này.

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

Bạn cũng có thể liên hệ với ActiveState và hỏi họ những gì họ đề xuất.


Ngoài ra, bạn có thể thực hiện để các thử nghiệm chậm nhất chỉ chạy theo yêu cầu (ví dụ: khi có môi trường nhất định). 5 phút thử nghiệm có vẻ hơi quá mức đối với những người khác.


Đối với kiểm tra nếu bạn đang chạy một ActiveState xây dựng, đây là một số khả năng:

  • use Config; print Config::local_patches(); trả về một chuỗi bao gồm ActivePerl Build.
  • $Config{cf_email} được đặt thành [email protected]
  • ActivePerl :: Mô-đun cấu hình tồn tại.
  • ActivePerl :: Mô-đun PPM tồn tại.

Luôn kiểm tra tất cả.

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 }; 
+0

Đây là tất cả những gợi ý tuyệt vời. Cảm ơn! – mob

4

Theo một tìm kiếm nhanh cho activeperl ppm build increase timeout bạn có thể báo cáo tình hình này vào danh sách gửi thư của họ/hỗ trợ và họ sẽ tự tăng giá trị thời gian chờ cho xây dựng các mô-đun của bạn.

Các vấn đề liên quan