Сравнение версий в 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; } Неплохо бы покрыть тестами код
liks@ съел IBM, помнится.
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)
Спасибо! Это остался незамеченным старый кусок кода, я его заменил на sub versort (@) из rpm-uscan. (в alt2) > Неплохо бы покрыть тестами код еще не понятно, какое api будет в итоге. Пока оно совместимо со старым upstreamwatch от liks, и работает с его вариантом /usr/bin/uscan. но я бы хотел в перспективе написать утилиту /usr/bin/uscan-query с более богатым интерфейсом, а также переехать на библиотеку в rpm-uscan.