Bug 17880 - Use version.pm to parse version numbers in C4::Installer::PerlModules
authorDavid Cook <dcook@prosentient.com.au>
Thu, 12 Jan 2017 00:15:22 +0000 (11:15 +1100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 20 Jan 2017 13:47:27 +0000 (13:47 +0000)
Signed-off-by: Mark Tompsett <mtompset@hotmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

C4/Installer/PerlModules.pm

index fac0fec..9d8d1c8 100644 (file)
@@ -68,10 +68,12 @@ sub version_info {
     if ($params{'module'}) {
         return -1 unless grep {m/$params{'module'}/} keys(%$PERL_DEPS);
         eval "require $params{'module'}";
+        my $pkg_version =  $params{'module'} &&  $params{'module'}->can("VERSION") ? $params{'module'}->VERSION : 0;
+        my $min_version =  $PERL_DEPS->{$params{'module'}}->{'min_ver'} // 0;
         if ($@) {
             return {$params{'module'} => {cur_ver => 0, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, upgrade => 0, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}};
         }
-        elsif ($params{'module'}->VERSION lt $PERL_DEPS->{$params{'module'}}->{'min_ver'}) {
+        elsif (version->parse("$pkg_version") < version->parse("$min_version")) {
             return {$params{'module'} => {cur_ver => $params{'module'}->VERSION, min_ver => $PERL_DEPS->{$params{'module'}}->{'min_ver'}, upgrade => 1, required => $PERL_DEPS->{$params{'module'}}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}};
         }
         else {
@@ -82,10 +84,12 @@ sub version_info {
         for (sort keys(%{$PERL_DEPS})) {
             my $pkg = $_;  #  $_ holds the string
             eval "require $pkg";
+            my $pkg_version =  $params{'module'} &&  $params{'module'}->can("VERSION") ? $params{'module'}->VERSION : 0;
+            my $min_version = $PERL_DEPS->{$_}->{'min_ver'} // 0;
             if ($@) {
                 push (@{$self->{'missing_pm'}}, {$_ => {cur_ver => 0, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
             }
-            elsif ($pkg->VERSION lt $PERL_DEPS->{$_}->{'min_ver'}) {
+            elsif (version->parse("$pkg_version") < version->parse("$min_version")) {
                 push (@{$self->{'upgrade_pm'}}, {$_ => {cur_ver => $pkg->VERSION, min_ver => $PERL_DEPS->{$_}->{'min_ver'}, required => $PERL_DEPS->{$_}->{'required'}, usage => $PERL_DEPS->{$_}->{'usage'}}});
             }
             else {