On Saturday 29 August 2009, Frans Pop wrote:
> On Saturday 29 August 2009, David Anselmi wrote:
> > Since 1:2.0, debmirror fails with "Duplicate dist hardy."
>
> Can you try with the following change?

After looking at Ubuntu's Release files I don't think that's going to 
work. Please try the attached patch instead.

commit 545d653a1ddb1be4c4d2cedd9321f5c398061562
Author: Frans Pop <f...@debian.org>
Date:   Sat Aug 29 14:50:05 2009 +0200

    Ignore codename for Ubuntu release files
    
    Ubuntu uses an identical codename for different suites, so just ignore
    it. This automatically disables the creation of suite symlinks.

diff --git a/debmirror b/debmirror
index 63aa056..e44364d 100755
--- a/debmirror
+++ b/debmirror
@@ -1644,7 +1644,7 @@ sub get_release {
 
 sub name_release {
   my ($type, $tdir, $dist) = @_;
-  my ($buf, $codename, $suite);
+  my ($buf, $origin, $codename, $suite);
 
   if (open RELEASE, "<$tdir/Release") {
     while (<RELEASE>) {
@@ -1654,6 +1654,7 @@ sub name_release {
     close RELEASE;
   }
   $_ = $buf;
+  ($origin) = m/^Origin:\s+(.*)/im;
   ($codename) = m/^Codename:\s+(.*)/im;
   ($suite) = m/^Suite:\s+(.*)/im;
 
@@ -1661,7 +1662,16 @@ sub name_release {
   # raw dist (codename or suite) and the subdirectory.
   my ($dist_raw, $dist_sdir) = split_dist($dist);
 
-  if ($codename) {
+  if ($origin eq "Ubuntu") {
+    if ($suite) {
+      say("Ubuntu Release file: using Suite ($suite).");
+      $codename = $suite;
+    } else {
+      say("Invalid Ubuntu Release file.");
+      push (@errlog,"Invalid Ubuntu Release file.\n");
+      $num_errors++;
+      next;
+  } elsif ($codename) {
     if ($dist_raw ne $codename && $dist_raw ne $suite) {
       say("Broken Release file: neither Codename nor Suite matches $dist.");
       push (@errlog,"Broken Release file: neither Codename nor Suite matches $dist\n");

Reply via email to