Medium sized Internalization made by flattener against megalog-2018-03-11
[andk-cpan-tools.git] / eg / find-module-install-sudo-bugs.pl
blob5ea3afb6b6c7d34a93611383e5f85d308d125cc6
4 =pod
6 This script investigates all CPAN distros if they contain
7 inc/Module/Install/AutoInstall.pm but not
8 inc/{Module,ExtUtils}/AutoInstall.pm. We wanted to write these authors
9 hat they should upgrade their distris with a newer release of
10 Module::Install.
12 This exercise was amazing as it revealed several unrelated bugs like
13 broken signatures and distros that could not be untarred for some
14 reason. And bugs in CPAN.pm that did not react adequatly to certain
15 error conditions.
17 =cut
19 use lib 'lib';
20 use CPAN 1.81; # 1.80 broken for *.tgz
21 use Cwd qw(cwd);
22 use File::Path qw(rmtree);
23 my $restart_after;
24 if (-f "$0.out") {
25 open my $fh, "$0.out" or die;
26 while (<$fh>) {
27 chomp;
28 $restart_after = $_;
31 my $cwd = cwd;
32 my @brokensig = qw(
33 A/AU/AUTRIJUS/Lingua-ZH-TaBE-0.06.tar.gz
34 A/AU/AUTRIJUS/Parse-SVNDiff-0.03.tar.gz
35 B/BM/BMORROW/PerlIO-nline-0.03.tar.gz
36 B/BO/BOBMATH/Crypt-CAST5_PP-1.03.tar.gz
37 B/BU/BURAK/CGI-Auth-Basic-1.02.tar.gz
38 B/BU/BURAK/GD-SecurityImage-1.583.tar.gz
39 B/BU/BURAK/MP3-M3U-Parser-2.1.tar.gz
40 C/CR/CRAIHA/Geo-Coordinates-Parser-0.01.tar.gz
41 D/DA/DARREN/Text-TabularDisplay-1.21.tar.gz
42 D/DM/DMAKI/Class-Validating-0.02.tar.gz
43 D/DM/DMAKI/DateTime-Event-Lunar-0.04.tar.gz
44 D/DM/DMAKI/DateTime-Util-Astro-0.06.tar.gz
45 D/DM/DMAKI/POE-Component-StackedProcessor-0.05.tar.gz
46 D/DR/DROLSKY/DateTime-Format-HTTP-0.36.tar.gz
47 G/GO/GOZER/Scalar-Readonly-0.01.tar.gz
48 J/JJ/JJORE/B-Lisp-0.01.tar.gz
49 J/JJ/JJORE/Geo-TigerLine-Abbreviations-0.02.tar.gz
50 J/JM/JMEHNLE/apache-auth-userdb/Apache-Auth-UserDB-0.11.tar.gz
51 J/JM/JMEHNLE/clamav-client/ClamAV-Client-0.11.tar.gz
52 J/JM/JMEHNLE/courier-filter/Courier-Filter-0.17.tar.gz
53 J/JM/JMEHNLE/net-address-ipv4-local/Net-Address-IPv4-Local-0.12.tar.gz
54 J/JM/JMEHNLE/www-restaurant-menu/WWW-Restaurant-Menu-0.11.tar.gz
55 K/KC/KCLARK/SQL-Translator-0.07.tar.gz
56 K/KM/KMELTZ/SSN-Validate-0.13.tar.gz
57 K/KU/KUDARASP/PHP-Strings-0.28.tar.gz
58 L/LO/LORENSEN/Net-BGP-0.08.tar.gz
59 N/NI/NIKC/SVN-Web-0.42.tar.gz
60 P/PT/PTANDLER/PBib/Bundle-PBib-2.08.01.tar.gz
61 P/PT/PTANDLER/PBib/Bundle-PBib-2.08.tar.gz
62 R/RE/REEDFISH/Term-Menus-1.11.tar.gz
63 R/RR/RRWO/Acme-AutoColor-0.01.tar.gz
64 R/RR/RRWO/Acme-Mobile-Therbligs-0.04.tar.gz
65 R/RR/RRWO/Algorithm-ScheduledPath-0.41.tar.gz
66 R/RR/RRWO/Algorithm-SkipList-1.02.tar.gz
67 R/RR/RRWO/CPAN-Mini-Tested-0.22.tar.gz
68 R/RR/RRWO/CPAN-YACSmoke-0.03.tar.gz
69 R/RR/RRWO/CPAN-YACSmoke-Plugin-Phalanx100-0.02.tar.gz
70 R/RR/RRWO/File-HomeDir-Win32-0.03.tar.gz
71 R/RR/RRWO/Graphics-ColorNames-1.06.tar.gz
72 R/RR/RRWO/Log-Dispatch-Win32EventLog-0.13.tar.gz
73 R/RR/RRWO/Logic-Kleene-0.05.tar.gz
74 R/RR/RRWO/Module-Phalanx100-0.05.tar.gz
75 R/RR/RRWO/Mozilla-Backup-0.06.tar.gz
76 R/RR/RRWO/Params-Smart-0.06.tar.gz
77 R/RR/RRWO/Pod-Readme-0.05.tar.gz
78 R/RR/RRWO/Text-Truncate-1.03.tar.gz
79 R/RR/RRWO/Tie-RangeHash-1.03.tar.gz
80 R/RR/RRWO/Tie-RegexpHash-0.13.tar.gz
81 R/RR/RRWO/Tree-Node-0.06.tar.gz
82 R/RR/RRWO/Win32-EventLog-Carp-1.39.tar.gz
83 S/SA/SAMV/Parse-SVNDiff-0.03.tar.gz
84 S/SC/SCHUMACK/CircuitLayout-0.07.tar.gz
85 S/SC/SCHUMACK/
86 S/SI/SIMON/Lingua-EN-Keywords-2.0.tar.gz
87 S/SI/SIMON/Mail-Miner-2.7.tar.gz
88 S/SM/SMUELLER/Acme-Chef-1.00.tar.gz
89 S/SM/SMUELLER/
92 my @brokendist = qw(
93 B/BC/BCH/Win32-Filenames-0.01.tar.gz
94 B/BR/BRUNODIAZ/Finance-Bank-ES-INGDirect-0.02.tar.gz
95 D/DA/DAOTOAD/Log-WithCallbacks-1.00.tar.gz
96 D/DE/DENKINGER/Games-Poker-HistoryParser-1.3.tar.gz
97 E/EC/ECASTILLA/DBIx-PasswordIniFile-1.1.tar.gz
98 J/JO/JONATHAN/Math-Calculus-TaylorEquivalent-0.1.tar.gz
99 J/JO/JONATHAN/Math-Calculus-TaylorSeries-0.1.tar.gz
100 K/KO/KOKOGIKO/Location-GeoTool-Plugin-Locapoint-0.01.tar.gz
101 M/MA/MARKWIN/CNC-Cog-0.06.tar.gz
102 N/NI/NILSONSFJ/subs-parallel-0.07.tar.gz
103 P/PH/PHOENIXL/extensible_report_generator_1.13.zip
104 R/RV/RVOSA/Bio-Phylo-0.04.tar.gz
107 for my $x (@brokensig,@brokendist) {
108 if ($restart_after) {
109 if ($x gt $restart_after) {
110 $restart_after = $x;
112 } else {
113 $restart_after = $x;
117 DISTRO: for $d (CPAN::Shell->expand("Distribution","/./")){
118 my $id = $d->id;
119 next if $restart_after && $id le $restart_after;
120 print "---->[$id]<----\n";
121 next DISTRO if grep {$_ eq $id or
122 ( m/\/$/ && substr($id,0,length($_)) eq $_)
123 } @brokensig, @brokendist;
124 $d->get;
125 my $dir = $d->dir or die;
126 if (-f "$dir/inc/Module/Install/AutoInstall.pm"
128 ! -f "$dir/inc/Module/AutoInstall.pm"
130 ! -f "$dir/inc/ExtUtils/AutoInstall.pm"){
131 open my $rfh, ">>", "$cwd/$0.out" or die "Cannot open >$cwd/$0.out: $!";
132 print $rfh $d->id, "\n";
133 close $rfh;
135 rmtree $dir;
138 __END__
139 # Local Variables:
140 # mode: cperl
141 # cperl-indent-level: 2
142 # End: