[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1030193: lintian: Overriding for prefer-uscan-symlink is not possible



Control: reassign -1 libregexp-wildcards-perl 1.05-3
Control: retitle -1 libregexp-wildcards-perl: Does not escape backslash before fullstop, but elsewhere
Control: affects -1 lintian
Control: tag -1 upstream

Hi Eriberto,

Joao Eriberto Mota Filho wrote:
> Package: lintian
> Version: 2.116.2
[…]
> After this change[2], lintian said me:
> 
> X: obs-downstream-keyer source: prefer-uscan-symlink filenamemangle s/.*muted..([\d\.]+)..span./@PACKAGE@-$1\.tar\.gz/ [debian/watch:19]
> 
> After I make an override, litian said me:
> 
> W: obs-downstream-keyer source: mismatched-override prefer-uscan-symlink filenamemangle s/.*muted..([\d\.]+)..span./@PACKAGE@-$1\.tar\.gz/ [debian/watch:19] [debian/source/lintian-overrides:4]
> X: obs-downstream-keyer source: prefer-uscan-symlink filenamemangle s/.*muted..([\d\.]+)..span./@PACKAGE@-$1\.tar\.gz/ [debian/watch:19]

Can reproduce if I copy the emitted tag literally into
debian/source/lintian-overrides although it should work as override:

  prefer-uscan-symlink filenamemangle s/.*muted..([\d\.]+)..span./@PACKAGE@-$1\.tar\.gz/ [debian/watch:19]

With a bit of debug code (I added "die $re if $glob =~ /file/;" into
lib/Lintian/Utils.pm around line 404) it shows me that the override
was converted into this regular expression:

  filenamemangle s\/\..*muted\.\.\(\[\\d\.\]\+\)\.\.span\.\/\@PACKAGE\@\-\$1\.tar\.gz\/ \[debian\/watch\:19\]

Looks as expected to me on a first glance, but actually all occurences
of "\." are not properly converted to "\\\." while "\d" is properly
converted to "\\d". I can also reproduce with this minimal reproducer:

  $ perl -MRegexp::Wildcards -E 'my $rw = Regexp::Wildcards->new(type => "jokers"); say $rw->convert(q{\.\d})'
  \.\\d

So this actually seems to be a bug in libregexp-wildcards-perl. Hence
reassigning.

> Consequently, is not possible to make an override for
> prefer-uscan-symlink filenamemangle.

Sure it is, just replace all the ugly stuff with an asterisk or omit
all parameters after the tag name. All these overrides work for me:

  prefer-uscan-symlink filenamemangle s/*/ [debian/watch:19]
  prefer-uscan-symlink filenamemangle * [debian/watch:19]
  prefer-uscan-symlink filenamemangle *
  prefer-uscan-symlink

> I think that lintian is interpreting my REGEX.

Yes and no. It interprets only "*" and "?" and these have the same
meaning as with shell wildcards. It's actually the "jokers" mode of
the Perl module Regexp::Wildcards.

		Regards, Axel
-- 
 ,''`.  |  Axel Beckert <abe@debian.org>, https://people.debian.org/~abe/
: :' :  |  Debian Developer, ftp.ch.debian.org Admin
`. `'   |  4096R: 2517 B724 C5F6 CA99 5329  6E61 2FF9 CD59 6126 16B5
  `-    |  1024D: F067 EA27 26B9 C3FC 1486  202E C09E 1D89 9593 0EDE


Reply to: