[SCM] Debian package checker branch, master, updated. 2.3.4-4-g9af922f
The following commit has been merged in the master branch:
commit e4b7cbdae18da79ca2b89e4c8f592cb798725041
Author: Peter Eisentraut <petere@debian.org>
Date: Tue Mar 23 17:55:43 2010 -0700
Recommend uversionmangle for watch files with pre-releases
The watch file business of dversionmangle and uversionmangle can
occasionally be confusing, so I propose another check to help people
along. People might do something like this
opts=dversionmangle=s/~rc/-rc/
but I finally figured out that one should do
opts=uversionmangle=s/-rc/~rc/
instead so that the final release after the rc is sorted correctly by
uscan.
diff --git a/checks/watch-file b/checks/watch-file
index a9f4bfa..aa11b7a 100644
--- a/checks/watch-file
+++ b/checks/watch-file
@@ -47,6 +47,10 @@ my $repack;
if ($version =~ /(dfsg|debian|ds)/) {
$repack = $1;
}
+my $prerelease;
+if ($version =~ /(alpha|beta|rc)/i) {
+ $prerelease = $1;
+}
# Gather information from the watch file and look for problems we can
# diagnose on the first time through.
@@ -83,15 +87,17 @@ while (<WATCH>) {
# Version 1 watch files are too broken to try checking them.
next if ($watchver == 1);
- my ($mangle, $dmangle) = (0, 0);
+ my ($repack_mangle, $repack_dmangle, $prerelease_mangle, $prerelease_umangle) = (0, 0, 0, 0);
my ($opts, @opts);
if (s/^opt(?:ion)?s=\"([^\"]+)\"\s+// || s/^opt(?:ion)?s=(\S+)\s+//) {
$opts = $1;
@opts = split(',', $opts);
- if (defined $repack) {
+ if (defined $repack or defined $prerelease) {
for (@opts) {
- $mangle = 1 if /^[ud]?versionmangle\s*=.*($repack)/;
- $dmangle = 1 if /^dversionmangle\s*=.*($repack)/;
+ $repack_mangle = 1 if defined $repack and /^[ud]?versionmangle\s*=.*($repack)/;
+ $repack_dmangle = 1 if defined $repack and /^dversionmangle\s*=.*($repack)/;
+ $prerelease_mangle = 1 if defined $prerelease and /^[ud]?versionmangle\s*=.*($prerelease)/;
+ $prerelease_umangle = 1 if defined $prerelease and /^uversionmangle\s*=.*($prerelease)/;
}
}
}
@@ -118,15 +124,20 @@ while (<WATCH>) {
push @{$dversions{$lastversion}}, $. if (defined($lastversion));
$lastversion = 'debian' unless (defined($lastversion));
- my $needs_mangling = ($repack and $lastversion eq 'debian');
+ my $needs_repack_mangling = ($repack and $lastversion eq 'debian');
# If the version of the package contains dfsg, assume that it needs
# to be mangled to get reasonable matches with upstream.
- if ($needs_mangling and not $mangle) {
+ if ($needs_repack_mangling and not $repack_mangle) {
tag 'debian-watch-file-should-mangle-version', "line $.";
}
- if ($needs_mangling and $mangle and not $dmangle) {
+ if ($needs_repack_mangling and $repack_mangle and not $repack_dmangle) {
tag 'debian-watch-file-should-dversionmangle-not-uversionmangle', "line $.";
}
+
+ my $needs_prerelease_mangling = ($prerelease and $lastversion eq 'debian');
+ if ($needs_prerelease_mangling and $prerelease_mangle and not $prerelease_umangle) {
+ tag 'debian-watch-file-should-uversionmangle-not-dversionmangle', "line $.";
+ }
}
}
close WATCH;
diff --git a/checks/watch-file.desc b/checks/watch-file.desc
index 454dc61..5f8b607 100644
--- a/checks/watch-file.desc
+++ b/checks/watch-file.desc
@@ -73,6 +73,16 @@ Info: The version of this package contains <tt>dfsg</tt>, <tt>ds</tt>,
remove, instead of adding in uversionmangle, the <tt>dfsg</tt> before
comparing version numbers.
+Tag: debian-watch-file-should-uversionmangle-not-dversionmangle
+Severity: wishlist
+Certainty: certain
+Ref: http://wiki.debian.org/DEHS
+Info: The version of this package contains <tt>alpha</tt>, <tt>beta</tt>,
+ or <tt>rc</tt>, but a misleading Debian version mangling occurs in
+ the <tt>debian/watch</tt> file. You should use the uversionmangle
+ option instead of dversionmangle so that the prerelease is sorted by
+ uscan before a possible future final release.
+
Tag: debian-watch-file-in-native-package
Severity: normal
Certainty: certain
--
Debian package checker
Reply to: