@@ -, +, @@ --------- -- note the version number -- note it says Readonly::XS is not installed. -- note the versions and colours of the other modules. -- Readonly::XS should list the version noted in step 1. -- the other modules' output should be unchanged. --- C4/Installer/PerlModules.pm | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) --- a/C4/Installer/PerlModules.pm +++ a/C4/Installer/PerlModules.pm @@ -4,6 +4,7 @@ use warnings; use strict; use File::Spec; +use Data::Dumper; use C4::Installer::PerlDependencies; @@ -80,8 +81,34 @@ sub version_info { } } else { - for (sort keys(%{$PERL_DEPS})) { + my $Readonly_XS_Version; + PERLDEP: for (sort keys(%{$PERL_DEPS})) { my $pkg = $_; # $_ holds the string + if ($pkg eq 'Readonly::XS') { + my @data; + eval { + @data = + `/usr/bin/perldoc -m Readonly::XS`; + }; + if (@data) { + my @filtered = grep { $_ =~ /\$VERSION\s*=\s*['"]/ } @data; + if (@filtered) { + my $line = $filtered[0]; + my @data = split(/['"]/,$line); + $Readonly_XS_Version = $data[1]; + } + } + if (!$Readonly_XS_Version) { + push (@{$self->{'missing_pm'}}, {$_ => {cur_ver => 0, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}}); + } + elsif ($Readonly_XS_Version lt $PERL_DEPS->{$_}->{'min_ver'}) { + push (@{$self->{'upgrade_pm'}}, {$_ => {cur_ver => $Readonly_XS_Version, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}}); + } + else { + push (@{$self->{'current_pm'}}, {$_ => {cur_ver => $Readonly_XS_Version, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}}); + } + next PERLDEP; + } eval "require $pkg"; if ($@) { push (@{$self->{'missing_pm'}}, {$_ => {cur_ver => 0, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}}); --