@@ -, +, @@ --------- -- 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 | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) --- a/C4/Installer/PerlModules.pm +++ a/C4/Installer/PerlModules.pm @@ -80,8 +80,38 @@ 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') { + eval { + use Readonly; + if ($Readonly::XSokay) { + if (-e "/usr/bin/dpkg") { + my @data = + `/usr/bin/dpkg -l libreadonly-xs-perl`; + my $line = pop @data; + # line is likely: + # ii libreadonly-xs {version} + # col0 col1 col2 + # handle the extra spaces to get col2 + $line =~ s/ / /g; + @data = split(/ /,$line); + $Readonly_XS_Version = $data[2]; + } + } + }; + 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'}}}); --