Revisiting #1122181, I see that its proposed patch fixes the issue which I reported in #1130447. But some analysis may help.
The proposed patch in #1122181 moves an assignment to the $version variable.
Just past the moved assignment, the Http.pm script has this chunk:
$match = '';
if (defined $self->shared->{download_version}) {
if ($version eq $self->shared->{download_version}) {
$match = "matched with the download version";
}
}
my $priority = $mangled_version . '-' . get_priority($href);
return [$priority, $mangled_version, $href, $match, $version];
That is, $version becomes $_[4], and $match becomes $_[3]
But xtp.pm has this:
if (defined $watchSource->shared->{download_version}
and not $watchSource->versionmode eq 'ignore') {
# extract ones which has $match in the above loop defined
my @vfiles = grep { $$_[3] } @files;
if (@vfiles) {
That $$_[3] was carried over from 2015, when it replaced $$_[2].
The return statement with $version assigned to position 4 last changed
in August 2025, for commit 628a3507a8d278f55e4a5991f9de8b14c687a4f1,
which says
uscan: match unmangled versions against --download-version
with this chunk
@@ -497,12 +500,12 @@ sub parse_href {
}
$match = '';
if (defined $self->shared->{download_version}) {
- if ($mangled_version eq $self->shared->{download_version}) {
+ if ($version eq $self->shared->{download_version}) {
$match = "matched with the download version";
}
}
my $priority = $mangled_version . '-' . get_priority($href);
- return [$priority, $mangled_version, $href, $match];
+ return [$priority, $mangled_version, $href, $match, $version];
}
1;
Looking through the diffs (I may have missed one), the $match variable
has for a long time mapped to that $_[3] used in the grep command.
If that $$_[3] were changed to $$_[4], then the grep would use $version.
That (like my initial suggestion) would make the uscan succeed for my
configuration.
However, the $match variable itself will match @files because of these
chunks in Http.pm:
$match = '';
if (defined $download_version
and $mangled_version eq $download_version) {
$match = "matched with the download version";
}
and
push @hrefs, [$mangled_version, $href, $match];
which show up in a verbose log ($match becomes $$file[3]):
if (@files) {
@files = Devscripts::Versort::versort(@files);
my $msg
= "Found the following matching files on the web page (newest first):>
foreach my $file (@files) {
$msg .= " $$file[2] ($$file[1]) index=$$file[0] $$file[3]\n";
}
uscan_verbose $msg;
}
Given all of that, I'll close #1130447
--
Thomas E. Dickey <[email protected]>
https://invisible-island.net
signature.asc
Description: PGP signature

