This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
PATCH: [perl #121292] wrong perlunicode BOM claims
[perl5.git] / Porting / perlhist_calculate.pl
CommitLineData
6a23a794
CJ
1#!perl
2# Generates info for perlhist from this perl tree
3# run this from the root of a perl tree
4#
5# Data is on STDOUT.
6
7use 5.010000;
8use File::Find;
9use warnings;
10use strict;
11
8ed35a78
RS
12sub emit {
13 my $H = '%-9s:';
14 my $D = '%6d';
15 printf "$H $D $D\n", @_;
16}
17
6a23a794
CJ
18sub calc_core {
19
20 my @core;
21 push @core, glob '*.h';
22 push @core, glob '*.c';
23 push @core, glob '*.y';
24 my $coresize = 0;
25
26 foreach my $corefile (@core) {
27 $coresize += (-s $corefile) / 1000;
28 }
29
30 my $corenumber = scalar @core;
31 $coresize = int $coresize;
32
8ed35a78 33 return $coresize, $corenumber;
6a23a794
CJ
34}
35
36sub calc_lib {
37
38 our $libsize = 0;
39 our $libnumber = 0;
40 sub wanted_lib {
41 $File::Find::name =~ /[.] (?:pm|pl)\z/msx or return;
42 $libsize += (-s $_) / 1000;
43 $libnumber++;
44 }
45
46 find(\&wanted_lib, 'lib');
47 $libsize = int $libsize;
48
8ed35a78 49 return $libsize, $libnumber;
6a23a794
CJ
50}
51
52sub calc_ext {
53
54 our $extsize = 0;
55 our $extnumber = 0;
56 sub wanted_ext {
57 $File::Find::name =~ /[.] (?:h|c|y|t|xs|pm)\z/msx or return;
58 $extsize += (-s $_) / 1000;
59 $extnumber++;
60 }
61
62 if (-d 'dist') {
63 find(\&wanted_ext, 'ext', 'dist', 'cpan');
64 } else {
65 find(\&wanted_ext, 'ext');
66 }
67
68 $extsize = int $extsize;
69
8ed35a78 70 return $extsize, $extnumber;
6a23a794
CJ
71}
72
73sub calc_t {
74
75 our $tsize = 0;
76 our $tnumber = 0;
77 sub wanted_t {
78 $File::Find::name =~ /[.] t\z/msx or return;
79 $tsize += (-s $_) / 1000;
80 $tnumber++;
81 }
82
83 find(\&wanted_t, '.');
84
85 $tsize = int $tsize;
86
8ed35a78 87 return $tsize, $tnumber;
6a23a794
CJ
88}
89
90sub calc_doc {
91
92 my @doc;
93 push @doc, 'INSTALL';
94 push @doc, 'README';
95 push @doc, glob 'README.*';
96 our $docsize = 0;
97
98 foreach my $docfile (@doc) {
99 $docsize += (-s $docfile) / 1000;
100 }
101
102 our $docnumber = scalar @doc;
103
104 sub wanted_doc {
105 $File::Find::name =~ /[.] pod\z/msx or return;
106 $docsize += (-s $_) / 1000;
107 $docnumber++;
108 }
109
110 find(\&wanted_doc, 'pod');
111
112 $docsize = int $docsize;
113
8ed35a78 114 return $docsize, $docnumber;
6a23a794
CJ
115}
116
117sub calc_dir {
118 my $dir = shift;
119
120 return if ! -d $dir;
121
122 our $dirnumber = 0;
123 our $dirsize = 0;
124
125 sub wanted_dir {
126 $dirsize += (-s $_) / 1000;
127 $dirnumber++;
128 }
129
130 find(\&wanted_dir, $dir);
131
132 $dirsize = int $dirsize;
133
8ed35a78 134 emit $dir => $dirsize, $dirnumber;
6a23a794
CJ
135}
136
137
138sub calc_longtable {
139
8ed35a78 140 print "\n\nTable:\n";
6a23a794 141
6a23a794
CJ
142 my $configure_size = int ((-s 'Configure') / 1000);
143
8ed35a78 144 emit Configure => $configure_size, 1;
6a23a794 145
c67aee7a 146 foreach my $dir (qw(Cross djgpp emacs h2pl hints NetWare os2 plan9 Porting qnx symbian utils vms vos win32)) {
6a23a794
CJ
147 calc_dir($dir);
148 }
149}
150
151say "Selected release sizes for perl tarball:";
152print "\n";
153
8ed35a78
RS
154 #5.16.0 5562 109 1077 80 20504 2702 8750 2375 4815 152
155
156sub calc_line {
157 printf " %-12s %6s %3s %6s %3s %6s %4s %6s %4s %6s %3s\n",
158 '5.xx.0', calc_core(), calc_lib(), calc_ext(), calc_t(), calc_doc();
159}
160
161calc_line();
162
6a23a794
CJ
163calc_longtable();
164
165exit;