Package: lintian Version: 1.23.30 Severity: wishlist Tags: patch Hi,
I'm attaching a patch to emit warnings on packages using the deprecated substvar Source-Version. I'm not sure about the naming of the tag, I've been pondering between: substvar-source-version-is-deprecated "$pkg" package-uses-deprecated-source-version-substvar "$pkg" package-uses-deprecated-substvar "$pkg $substvar" neither of what's more appropriate, if warning per instance of the substvar, once per field, per binary package, or globally per source control file. I've choosen per binary package, but I don't feel I have a global vision over lintian to see if it's correct. If it seems wrong I can fix the patch and resend. Also I've seen there's several instances of @dep_fields (in different forms), which might be good to refactor into common_data.pm or something. regards, guillem
diff -Naur lintian-1.23.30/checks/version-substvars lintian-1.23.30.new/checks/version-substvars --- lintian-1.23.30/checks/version-substvars 2006-08-19 02:38:57.000000000 +0300 +++ lintian-1.23.30.new/checks/version-substvars 2007-06-05 02:59:06.000000000 +0300 @@ -41,6 +41,7 @@ my $type = shift; my @control_data = read_dpkg_control("debfiles/control"); +my @dep_fields = qw(depends pre-depends recommends suggests conflicts replaces); shift @control_data; # skip source info entry @@ -50,6 +51,14 @@ $pkg1 = $_->{'package'}; $pkg1_is_any = ($_->{'architecture'} ne 'all'); + foreach my $field (@dep_fields) { + next unless $_->{$field}; + if ($_->{$field} =~ m/\${Source-Version}/) { + tag "substvar-source-version-is-deprecated", $pkg1; + last; + } + } + foreach (split /,/, ($_->{'depends'} || "")) { next unless m/(\S+)\s*\(\s*=\s*\${((?:Source-|source:|binary:)Version)}/x; @@ -74,8 +83,6 @@ # (b3) all -> any (= ${either-of-them}) tag "not-binnmuable-all-depends-any", "$pkg1 -> $pkg2"; } - - # TODO (post-Etch?): warn/error about ${Source-Version} being deprecated } } diff -Naur lintian-1.23.30/checks/version-substvars.desc lintian-1.23.30.new/checks/version-substvars.desc --- lintian-1.23.30/checks/version-substvars.desc 2006-08-19 02:37:25.000000000 +0300 +++ lintian-1.23.30.new/checks/version-substvars.desc 2007-06-05 02:57:13.000000000 +0300 @@ -41,3 +41,11 @@ (= ${binary:Version}), (= ${source:Version}), or (= ${Source-Version}), but the second package is not built from this source package. Usually this means there is a mistake in the package name in this dependency. + +Tag: substvar-source-version-is-deprecated +Type: warning +Info: The package uses the now deprecated ${Source-Version} substvar, + which has misleading semantics. Please switch to ${binary:Version} or + ${source:Version} as appropriate. Support for ${Source-Version} might + get removed from dpkg-dev in the future. +