ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Canary-Stability/Stability.pm
(Generate patch)

Comparing Canary-Stability/Stability.pm (file contents):
Revision 1.2 by root, Thu Jun 4 16:18:26 2015 UTC vs.
Revision 1.8 by root, Sun Mar 13 03:44:43 2016 UTC

1=head1 NAME 1=head1 NAME
2 2
3Canary::Stability - to be done 3Canary::Stability - canary to check perl compatibility for schmorp's modules
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use Canary::Stability; 7 # in Makefile.PL
8 use Canary::Stability DISTNAME => 2001, MINIMUM_PERL_VERSION;
8 9
9=head1 DESCRIPTION 10=head1 DESCRIPTION
10 11
11This is just a placeholder module, to be filled in later. 12This module is used by Schmorp's modules during configuration stage to
13test the installed perl for compatibility with his modules.
12 14
13=over 4 15It's not, at this stage, meant as a tool for other module authors,
16although in principle nothing prevents them from subscribing to the same
17ideas.
18
19See the F<Makefile.PL> in L<Coro> or L<AnyEvent> for usage examples.
14 20
15=cut 21=cut
16 22
17package Canary::Stability; 23package Canary::Stability;
18 24
19BEGIN { 25BEGIN {
20 $VERSION = 2001; # the year perl was accomodating enough to developers to foster weird ideas such as Coro 26 $VERSION = 2011;
21} 27}
22 28
23sub sgr { 29sub sgr {
24 # we just assume ANSI almost everywhere 30 # we just assume ANSI almost everywhere
25
26 # red 31, yellow 33, green 32 31 # red 31, yellow 33, green 32
32 local $| = 1;
27 33
28 $ENV{PERL_CANARY_STABILITY_COLOUR} ne 0 34 $ENV{PERL_CANARY_STABILITY_COLOUR} ne 0
29 and ((-t STDOUT and length $ENV{TERM}) or $ENV{PERL_CANARY_STABILITY_COLOUR}) 35 and ((-t STDOUT and length $ENV{TERM}) or $ENV{PERL_CANARY_STABILITY_COLOUR})
30 and print "\e[$_[0]m"; 36 and print "\e[$_[0]m";
31} 37}
36 $ENV{PERL_CANARY_STABILITY_DISABLE} 42 $ENV{PERL_CANARY_STABILITY_DISABLE}
37 and return; 43 and return;
38 44
39 $minperl ||= 5.008002; 45 $minperl ||= 5.008002;
40 46
47 sgr 33;
48 print <<EOF;
49
50***
51*** Canary::Stability COMPATIBILITY AND SUPPORT CHECK
52*** =================================================
53***
54*** Hi!
55***
56*** I do my best to provide predictable and reliable software.
57***
58*** However, in recent releases, P5P (who maintain perl) have been
59*** introducing regressions that are sometimes subtle and at other times
60*** catastrophic, often for personal preferences with little or no concern
61*** for existing code, most notably CPAN.
62***
63*** For this reason, it has become very hard for me to maintain the level
64*** of reliability and support I have committed myself to in the past, at
65*** least with some perl versions: I simply can't keep up working around new
66*** bugs or gratituous incompatibilities, and in turn you might suffer from
67*** unanticipated problems.
68***
69*** Therefore I have introduced a support and compatibility check, the results
70*** of which follow below, together with a FAQ and some recommendations.
71***
72*** This check is just to let you know that there might be a risk, so you can
73*** make judgement calls on how to proceed - it will not keep the module from
74*** installing or working.
75***
76EOF
77
41 if ($minvers > $VERSION) { 78 if ($minvers > $VERSION) {
42 sgr 33; 79 sgr 33;
43 print <<EOF; 80 print <<EOF;
44
45***
46*** The stability canary says: (nothing, he died of old age). 81*** The stability canary says: (nothing, it died of old age).
47*** 82***
48*** Your Canary::Stability module (used by $distname) is too old. 83*** Your Canary::Stability module (used by $distname) is too old.
49*** This is not a fatal problem - while you might want to upgrade to version 84*** This is not a fatal problem - while you might want to upgrade to version
50*** $minvers (currently installed version: $VERSION) to get better support 85*** $minvers (currently installed version: $VERSION) to get better support
51*** status testing, you might also not want to care at all, and all will 86*** status testing, you might also not want to care at all, and all will
52*** be well as long $distname works well enough for you, as the stability 87*** be well as long $distname works well enough for you, as the stability
53*** canary is only used when installing the distribution. 88*** canary is only used when installing the distribution.
54***
55
56EOF 89EOF
57 } elsif ($] < $minperl) { 90 } elsif ($] < $minperl) {
58 91
59 sgr 33; 92 sgr 33;
60 print <<EOF; 93 print <<EOF;
61
62***
63*** The stability canary says: chirp... (it seems a bit unhappy). 94*** The stability canary says: chirp (it seems concerned about something).
64*** 95***
65*** Your perl version ($]) is older than the $distname distribution 96*** Your perl version ($]) is older than the $distname distribution
66*** likes ($minperl). This is not a fatal problem - the module might work 97*** likes ($minperl). This is not a fatal problem - the module might work
67*** well with your version of perl, but it does mean the author likely 98*** well with your version of perl, but it does mean the author likely
68*** won't do anything to make it wokr if it breaks. 99*** won't do anything to make it work if it breaks.
69***
70
71EOF 100EOF
72 } elsif (defined $Internals::StabilityBranchVersion) { 101 } elsif (defined $Internals::StabilityBranchVersion) {
73 # note to people studying this modules sources: 102 # note to people studying this modules sources:
74 # the above test is not considered a clean or stable way to 103 # the above test is not considered a clean or stable way to
75 # test for the stability branch. 104 # test for the stability branch.
76 105
77 sgr 32; 106 sgr 32;
78 print <<EOF; 107 print <<EOF;
79
80***
81*** The stability canary says: chirp! chirp! (it seems to be quite excited) 108*** The stability canary says: chirp! chirp! (it seems to be quite excited)
82*** 109***
83*** It seems you are running schmorp's stability branch of perl. 110*** It seems you are running schmorp's stability branch of perl.
84*** All should be well, and if it isn't, you should report this as a bug 111*** All should be well, and if it isn't, you should report this as a bug
85*** to the $distname author. 112*** to the $distname author.
86***
87
88EOF 113EOF
89 } elsif ($] <= 4.020) { 114 } elsif ($] < 5.021) {
90 sgr 32; 115 #sgr 32;
91 print <<EOF; 116 print <<EOF;
92
93***
94*** The stability canary says: chirp! chirp! (it seems to be quite happy) 117*** The stability canary says: chirp! chirp! (it seems to be quite happy)
95*** 118***
96*** Your version of perl ($]) is quite supported by $distname, nothing 119*** Your version of perl ($]) is quite supported by $distname, nothing
97*** else to be said, hope it comes in handy. 120*** else to be said, hope it comes in handy.
98***
99
100EOF 121EOF
101 } else { 122 } else {
102 sgr 31; 123 sgr 31;
103 print <<EOF; 124 print <<EOF;
104
105***
106*** The stability canary says: (nothing, it was driven away by harsh weather) 125*** The stability canary says: (nothing, it was driven away by harsh weather)
107*** 126***
108*** It seems you are running perl version $], likely the "official" or 127*** It seems you are running perl version $], likely the "official" or
109*** "standard" version. While there is nothing wrong with doing that, 128*** "standard" version. While there is nothing wrong with doing that,
110*** standard perl versions 5.022 and up are not supported by $distname. 129*** standard perl versions 5.022 and up are not supported by $distname.
111*** While this might be fatal, it might also be all right - if you run into 130*** While this might be fatal, it might also be all right - if you run into
112*** problems, you might want to downgrade your perl or switch to the 131*** problems, you might want to downgrade your perl or switch to the
113*** stability branch. 132*** stability branch.
114*** 133***
115*** If everything works fine, you can ignore this message. 134*** If everything works fine, you can ignore this message.
116***
117EOF 135EOF
118 sgr 0; 136 sgr 0;
119 print <<EOF; 137 print <<EOF;
138***
120*** Stability canary mini-FAQ: 139*** Stability canary mini-FAQ:
121*** 140***
122*** Do I need to do anything? 141*** Do I need to do anything?
123*** With luck, no. While some distributions are known to fail 142*** With luck, no. While some distributions are known to fail
124*** already, most should probably work. This message is here 143*** already, most should probably work. This message is here
137*** 156***
138*** How can I skip this prompt on automated installs? 157*** How can I skip this prompt on automated installs?
139*** Set PERL_CANARY_STABILITY_NOPROMPT=1 in your environment. 158*** Set PERL_CANARY_STABILITY_NOPROMPT=1 in your environment.
140*** More info is in the Canary::Stability manpage. 159*** More info is in the Canary::Stability manpage.
141*** 160***
142*** Long version of this FAQ: http://stabilityperl.schmorp.de/faq.html 161*** Long version of this FAQ: http://stableperl.schmorp.de/faq.html
143*** Stability Branch homepage: http://stabilityperl.schmorp.de/ 162*** Stability Branch homepage: http://stableperl.schmorp.de/
144*** 163***
145 164
146EOF 165EOF
147 166
148 unless ($ENV{PERL_CANARY_STABILITY_NOPROMPT}) { 167 unless ($ENV{PERL_CANARY_STABILITY_NOPROMPT}) {
179=back 198=back
180 199
181=head1 AUTHOR 200=head1 AUTHOR
182 201
183 Marc Lehmann <schmorp@schmorp.de> 202 Marc Lehmann <schmorp@schmorp.de>
184 http://home.schmorp.de/ 203 http://software.schmorp.de/pkg/Canary-Stability.html
185 204
186=cut 205=cut
187 206
1881 2071
189 208

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines