# easily obtained, I'll just hard code the bigger ones we use here. the same
# hash will be filled later with information gathered from the source files.
%requires = (
+ 'DateTime' => {
+ 'DateTime::Duration' => 1,
+ 'DateTime::Infinite' => 1,
+ },
'Rose::DB::Object' => {
'Rose::DB::Object::ConventionManager' => 1,
'Rose::DB::Object::Manager' => 1,
my ($useline) = m/^use\s+(.*?)$/;
- next if $useline =~ /^[\d.]+;/; # skip version requirements
+ next if $useline =~ /^[\d._]+;/; # skip version requirements
next if !$useline;
$uselines{$useline} ||= [];
next if $useline =~ /^most and offer that in a small/; # YAML
my $version = Module::CoreList->first_release($module);
- $modules{$module} = $supplied{$module} ? 'included'
- : $version ? sprintf '%2.6f', $version
- : is_documented($module) ? 'required'
- : '!missing';
+ $modules{$module} = { status => $supplied{$module} ? 'included'
+ : $version ? sprintf '%2.6f', $version
+ : is_documented($module) ? 'required'
+ : '!missing',
+ files => $uselines{$useline},
+ };
# build requirement tree
for my $file (@{ $uselines{$useline} }) {
$changed = 0;
for my $src_module (keys %requires) {
for my $dst_module (keys %{ $requires{$src_module} }) {
- if ( $modules{$src_module} =~ /^required/
- && $modules{$dst_module} eq '!missing') {
- $modules{$dst_module} = "required"; # . ", via $src_module";
+ if ( $modules{$src_module}
+ && $modules{$dst_module}
+ && $modules{$src_module}->{status} =~ /^required/
+ && $modules{$dst_module}->{status} eq '!missing') {
+ $modules{$dst_module}->{status} = "required"; # . ", via $src_module";
$changed = 1;
}
}
}
}
-print sprintf "%8s : %s", color_text($modules{$_}), $_
+print sprintf "%8s : %s (%s)", color_text($modules{$_}->{status}), $_, join(' ', @{ $modules{$_}->{files} || [] })
for sort {
- $modules{$a} cmp $modules{$b}
- || $a cmp $b
+ $modules{$a}->{status} cmp $modules{$b}->{status}
+ || $a cmp $b
} keys %modules;
sub modulize {
This module is documented in C<SL:InstallationCheck> to be necessary, or is a
dependancy of one of these. Everything alright.
-= item !missing
+=item !missing
These modules are neither core, nor included, nor required. This is ok for
developer tools, but should never occur for modules the actual program uses.
+=back
+
=head1 AUTHOR
http://www.ledgersmb.org/ - The LedgerSMB team