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