Package: devscripts
Version: 2.10.63
Severity: important
Tags: patch
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Since today's upgrade uscan fails:
$ uscan -verbose -report
- -- Scanning for watchfiles in .
- -- Found watchfile in ./debian
Use of uninitialized value $package in exists at /usr/bin/uscan line 579.
[..]
I suspected that this is related to the changes with versort and
debversort (cf. #577043 and commits around this subject).
A little digging around:
* @debdirs in uscan, beforeline line 559:
$VAR1 = [
'0.03-1',
'.',
'libmemoize-memcached-perl',
'0.03'
];
* @debdirs afterwards:
$VAR1 = [
'0.03-1',
'.'
];
That explains why $package is not initialized in line 579 :)
So the problem is in Devscripts::Versort::deb_versort().
The _versort() sub with the map/sort/map combination gave me a bit of
a headache, so I tried to analyze it step by step (see attached
uscan.pl).
After transfering back the final result, which just maps all 4
elements, to Devscripts/Versort.pm uscan works for me in my quick
tests. Patch attached.
Cheers,
gregor
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
iQIcBAEBCAAGBQJLxJWxAAoJELs6aAGGSaoGNKgQAIqd9QMcL7RL0PbsBujmw3By
I46TriysRsOx0NhrxFOkHlpspxdUwtdPD7iaurMd7fLVsVzDFja9u7iKvG3LLqRj
K9FfF5RqG5HqvJyLvutW1+SLAwwrseQ0fLdhqz1OaC+rV6pDcuMawVMzIs8pLNrQ
ohPRB9/sa6/5x2A6KUz3VUjuAOu+iOSrg6EkoG+3/2tTOMxfP5NcH0sLL6ectEgP
rIsNkKy2swbVpF+btV4642SyvBeeFegXD7pB9SIm/k+ob3pLEZ3fhwWHFZO1SW18
e4NI/KdEqAgHF4O/jb4ZGNUj7nagrkkHz2+jcq6GpGvx7OBF214rtc4iJzyBKFJg
+g/VGjf/aw9LzMCN+iEm6YTB+/enE5VWHhMNf/iv767J/NQMpVqrfgwkzxzEt575
1cfcqaKFQAjlO5ygfVnpJAfu4CWPIiQ4uRlEfY9AEaVwJlE66Hep4kLl3LXK9Nv0
DFR8Xo3q83BRiHJ351G0RKwPJbrijDKMGsBizX7MrZ6QfnOdygeuEC562bTdkjTe
VrpxNOVk+PSEPwKa9h4AzvhHMlB65LMcqavsaCZ/YmfZAlZEFTP6iCp5cPaJ9nqk
0e0K5PDbd2Vypdi1HlpWjahrhryVvIObsbrxFYFw6De6nghC4y14Wisdedqv63lN
hjyMR2ztjDIOv8x/ckzv
=9Qil
-----END PGP SIGNATURE-----
#!/usr/bin/perl
use Dpkg::Version;
use Data::Dumper;
# status of @debdirs in uscan, 565
@namever_pairs = [ '0.03-1', '.', 'libmemoize-memcached-perl', '0.03' ];
print Dumper @namever_pairs;
my $check = 0;
# from Devscripts::Versort, sub _versort
my @sorted = map { [$_->[0], $_->[1]] }
sort { $a->[2] <=> $b->[2] }
map { [$_->[0], $_->[1], Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
print Dumper @sorted;
# let's split it up
my @checked = map { [$_->[0], $_->[1], Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
print Dumper @checked;
# hm, at that point the package is lost, let's save it
my @checked2 = map { [$_->[0], $_->[1], $_->[2], Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
print Dumper @checked2;
# and now the sort, this time with [3]
my @sorted2 = map { [$_->[0], $_->[1], $_->[2]] }
sort { $a->[3] <=> $b->[3] }
@checked2;
print Dumper @sorted2;
# better, stick it together
my @sortednew = map { [$_->[0], $_->[1], $_->[2]] }
sort { $a->[3] <=> $b->[3] }
map { [$_->[0], $_->[1], $_->[2], Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
print Dumper @sortednew;
# ok, uversion is missing, maybe we need it later?
my @sortednew2 = map { [$_->[0], $_->[1], $_->[2], $_->[3]] }
sort { $a->[4] <=> $b->[4] }
map { [$_->[0], $_->[1], $_->[2], $_->[3], Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
print Dumper @sortednew2;
# good, now it looks like at the beginning
--- Versort.pm.orig 2010-04-13 17:37:35.000000000 +0200
+++ Versort.pm 2010-04-13 17:48:03.000000000 +0200
@@ -40,9 +40,9 @@
{
my ($check, @namever_pairs) = @_;
- my @sorted = map { [$_->[0], $_->[1]] }
- sort { $a->[2] <=> $b->[2] }
- map { [$_->[0], $_->[1], Dpkg::Version->new($_->[0], check =>
$check)] }
+ my @sorted = map { [$_->[0], $_->[1], $_->[2], $_->[3]] }
+ sort { $a->[4] <=> $b->[4] }
+ map { [$_->[0], $_->[1], , $_->[2], $_->[3],
Dpkg::Version->new($_->[0], check => $check)] }
@namever_pairs;
return reverse @sorted;