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

[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: