Bug 26651

Summary: сравнение версий работает не всегда правильно
Product: Sisyphus Reporter: Vladimir Lettiev <crux>
Component: perl-upstreamwatchAssignee: viy <viy>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: at, cas, crux, ender, force, ldv, mike, misha, mithraen, pma, shaba, viy
Version: unstable   
Hardware: all   
OS: Linux   

Description Vladimir Lettiev 2011-11-29 09:27:13 MSK
Сравнение версий в upstreamwatch.pm производится через утилиту rpmvercmp, но некорректно обрабатывается возвращаемый этой утилитой результат, т.к. воспринимаются только значения -1,0,1, для других значений возвращается false (пустая строка)

Примеры версий, когда это приводит к ошибке:

$ rpmvercmp 3 1
2

$ rpmvercmp 2 9
-7

Предлагаю такое исправление:

--- a/upstreamwatch.pm
+++ b/upstreamwatch.pm
@@ -1145,9 +1145,7 @@ sub _vercmp {
     my $returncode = `rpmvercmp $v1 $v2`;
     chomp($returncode);
 #    print "ver1=$v1 ver2=$v2 return=$returncode !!!\n";
-    return 0 if($returncode eq "0");
-    return 1 if($returncode eq "1");
-    return -1 if($returncode eq "-1");
+    return $returncode <=> -$returncode;
 #    return `rpmvercmp $v1 $v2`;
 #    return 1;
 }

Неплохо бы покрыть тестами код
Comment 1 Michael Shigorin 2011-11-29 10:22:59 MSK
liks@ съел IBM, помнится.
Comment 2 Repository Robot 2011-11-29 15:12:15 MSK
perl-upstreamwatch-0.6.2.11.1-alt2 -> sisyphus:

* Tue Nov 29 2011 Igor Vlasenko <viy@altlinux> 0.6.2.11.1-alt2
- synced versort with rpm-uscan 0.6.2.11.1 - (closes: 26651)
Comment 3 viy 2011-11-29 15:19:03 MSK
Спасибо!
Это остался незамеченным старый кусок кода,
я его заменил на sub versort (@) из rpm-uscan.
(в alt2)

> Неплохо бы покрыть тестами код
еще не понятно, какое api будет в итоге.
Пока оно совместимо со старым upstreamwatch от liks,
и работает с его вариантом /usr/bin/uscan.
но я бы хотел в перспективе написать утилиту /usr/bin/uscan-query
с более богатым интерфейсом, а также переехать на библиотеку в rpm-uscan.