On Sat, Nov 27, 2004 at 05:28:17PM +0000, Nicholas Clark wrote:
> Anyway, change 23554 is now in, and with luck won't break on VMS or Windows
> (or anything Unix for that matter)
Which I checked, and it's fortunate that I did (and make a habit of it)
because it broke on anything with a case sensitive file system. Mmm. HFS+.
Anyway, I modified Config.pm to log which entries are really read:
--- build/lib/perl5/5.8.5/i686-linux/Config.pm~ 2004-11-27 20:56:18.000000000
+0000
+++ build/lib/perl5/5.8.5/i686-linux/Config.pm 2004-11-27 21:00:16.000000000
+0000
@@ -1187,9 +1187,20 @@ sub fetch_virtual {
$self->{$key} = $value;
}
+my %uses;
+
+END {
+ my $file = "/home/nick/Fotango/Build-585/configdb";
+ local *F;
+ open F, ">>", $file or die "Config $file: $!";
+ while (my ($k, $v) = each %uses) {
+ print F "$k:$v\n";
+ }
+}
+
sub FETCH {
my($self, $key) = @_;
-
+ $uses{$key}++;
# check for cached value (which may be undef so we use exists not defined)
return $self->{$key} if exists $self->{$key};
and build stuff using the Fotango build system, on the assumption that all
the tests in all the modules with all their dependencies would give a
possibly more balanced view of what really gets used in %Config. The
assumption to date has been:
archname osname osvers prefix libs libpth dynamic_ext static_ext dlsrc so cc
ccflags cppflags privlibexp archlibexp installprivlib installarchlib
sharpbang startsh shsharp
possibly based on older data. The top 50 I find to be somewhat different
(here with number of access and their values):
path_sep: 8490 ':'
d_readlink: 7101 'define'
d_symlink: 7101 'define'
archlibexp: 4318
'/home/nick/Fotango/Build-585/build/lib/perl5/5.8.5/i686-linux'
sitearchexp: 4305
'/home/nick/Fotango/Build-585/build/lib/perl5/site_perl/5.8.5/i686-linux'
sitelibexp: 4305
'/home/nick/Fotango/Build-585/build/lib/perl5/site_perl/5.8.5'
privlibexp: 4163 '/home/nick/Fotango/Build-585/build/lib/perl5/5.8.5'
ldlibpthname: 4041 'LD_LIBRARY_PATH'
libpth: 2134 '/usr/local/lib /lib /usr/lib'
archname: 1591 'i686-linux'
exe_ext: 1256 ''
scriptdir: 1155 '/home/nick/Fotango/Build-585/build/bin'
version: 1116 '5.8.5'
useithreads: 1002 undef
osvers: 982 '2.4.21-9.elhugemem'
osname: 851 'linux'
inc_version_list: 783 ' '
dont_use_nlink: 779 undef
intsize: 759 '4'
usevendorprefix: 642 undef
dlsrc: 624 'dl_dlopen.xs'
cc: 541 'cc'
lib_ext: 520 '.a'
so: 512 'so'
ld: 501 'cc'
ccdlflags: 500 '-Wl,-E'
ldflags: 495 ' -L/usr/local/lib'
obj_ext: 495 '.o'
cccdlflags: 493 '-fpic'
lddlflags: 493 '-shared -L/usr/local/lib'
ar: 492 'ar'
dlext: 492 'so'
libc: 492 '/lib/libc-2.3.2.so'
ranlib: 492 ':'
full_ar: 491 '/usr/bin/ar'
vendorarchexp: 491 ''
vendorlibexp: 491 ''
installman1dir: 489 '/home/nick/Fotango/Build-585/build/man/man1'
installman3dir: 489 '/home/nick/Fotango/Build-585/build/man/man3'
installsitebin: 489 '/home/nick/Fotango/Build-585/build/bin'
installsiteman1dir: 489 '/home/nick/Fotango/Build-585/build/man/man1'
installsiteman3dir: 489 '/home/nick/Fotango/Build-585/build/man/man3'
installvendorman1dir: 489 ''
installvendorman3dir: 489 ''
d_flexfnam: 474 'define'
eunicefix: 360 ':'
d_link: 347 'define'
installsitearch: 344
'/home/nick/Fotango/Build-585/build/lib/perl5/site_perl/5.8.5/i686-linux'
installscript: 341 '/home/nick/Fotango/Build-585/build/bin'
installprivlib: 337 '/home/nick/Fotango/Build-585/build/lib/perl5/5.8.5'
I think I'm going to put the numbers data for the top 100 into configpm, and
make it selectable how many it builds into the %Config cache, with its
default making the last included value 'dlsrc';
I've attached the analyser program.
Nicholas Clark
#!/usr/bin/perl -w
use strict;
use Config;
my %seen;
while (<>) {
chomp;
next unless length;
/^(\S+):(\d+)$/ or die "Malformed line '$_'";
$seen{$1}+=$2;
}
my @order = sort {$seen{$b} <=> $seen{$a} || $a cmp $b} keys %seen;
foreach (@order) {
my $val = $Config{$_};
print "$_:\t$seen{$_}\t", defined $val ? "'$val'\n" : "undef\n";
}