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

Bug#944155: lintian: Version format vs source format mismatch tags disappeared



Hi Guillem

On Tue, Nov 5, 2019 at 2:27 AM Guillem Jover <guillem@debian.org> wrote:
>
> At least the following tags:
> have disappeared,
>
>   debian-changelog-version-requires-debian-revision
>   hyphen-in-native-debian-changelog-version

Lintian previously used several regular expressions to determine these
conditions. Unfortunately, they were inconsistent. I am sure you are
familiar with version strings.

A more complex but consistent regular expression is now used [1],
except its output is less granular. I am not totally happy with that
solution, but I think it works better. Most significantly it offers
check writers access to standardized version components (for an
example, see [2]), although the scheme needs to be simplified.

My key take-away was that successful version parsing requires the
native/non-native information as an input. [3]

Both tags were replaced by 'malformed-debian-changelog-version'. Do
you see that tag anywhere?

>   latest-debian-changelog-entry-changed-to-native

That tag was an analytical overreach. It was a tag for installation
packages, but the condition cannot be determined reliably outside of
source packages. I will even argue that the native/non-native
provenance should not matter for installation packages (aka 'binary'
packages), except perhaps for installed changelog locations.

After that realization, I moved most changelog analysis to source
packages (as Lintian inputs), for which the format can be deduced with
reasonable certainty. The tag was replaced with
'odd-historical-changelog-version' for the prior version. [4] It is
issued whenever the previous changelog version cannot be parsed, given
the native/non-native information as an input.

> I suspect because dpkg-source does not allow a
> mismatch between the version format and source formats 3.0?

I am not sure how dpkg-source figures into your line of thinking, but
I have been eliminating tags from Lintian because they are untestable.
The primary and perhaps sole reason is that dpkg and friends refuse to
create packages (or files) with such conditions. On occasion I have
thought about sending you our discarded code for the dpkg test suite.

> But this
> mismatch is still possible with source format 1.0.

The source format is not presently an input for our version parser,
nor does policy seem to consider it relevant for that purpose. I think
Lintian still detects the condition you are thinking of (provided dpkg
does not quit when trying to create the defective package).

> So reintroducing
> these would be very much appreciated.

That is not currently planned, but there is potential for improvement.
We appreciate all merge requests, especially from those who know
version parsing better than anyone.

Kind regards,
Felix Lechner

[1] https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Info/Changelog/Version.pm#L80-106
[2] For an example, see:
https://salsa.debian.org/lintian/lintian/blob/master/checks/debian/changelog.pm#L88-90
[3] https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Info/Changelog/Version.pm#L65-72
[4] https://salsa.debian.org/lintian/lintian/blob/master/checks/debian/changelog.pm#L147-157


Reply to: