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");