From 0d7a243df522cad460bc1f94f32c6b7f766cabb1 Mon Sep 17 00:00:00 2001 From: "Eugene V. Lyubimkin" Date: Sat, 25 Oct 2008 01:33:40 +0300 Subject: Added fallback to uncompressed files while acquiring index files (Sources and Packages) --- apt-pkg/acquire-item.cc | 25 +++++++++++++++++++------ debian/changelog | 9 +++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index 7cae6c8b7..b014092df 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -570,7 +570,7 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, } else { CompressionExtension = comprExt; } - Desc.URI = URI + CompressionExtension; + Desc.URI = URI + (CompressionExtension == "plain" ? "" : CompressionExtension); Desc.Description = URIDesc; Desc.Owner = this; @@ -597,19 +597,30 @@ string pkgAcqIndex::Custom600Headers() void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) { + bool descChanged = false; // no .bz2 found, retry with .gz if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") { - Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; + Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; - // retry with a gzip one - new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, + new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, ExpectedHash, string(".gz")); + descChanged = true; + } + // no .gz found, retry with uncompressed + else if(Desc.URI.substr(Desc.URI.size()-2) == "gz") { + Desc.URI = Desc.URI.substr(0,Desc.URI.size()-2); + + new pkgAcqIndex(Owner, RealURI, Desc.Description,Desc.ShortDesc, + ExpectedHash, string("plain")); + descChanged = true; + } + if (descChanged) { Status = StatDone; Complete = false; Dequeue(); return; - } - + } + // on decompression failure, remove bad versions in partial/ if(Decompression && Erase) { string s = _config->FindDir("Dir::State::lists") + "partial/"; @@ -706,6 +717,8 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, decompProg = "bzip2"; else if(compExt == ".gz") decompProg = "gzip"; + else if(compExt == "ges" || compExt == "ces") // packaGES or sourCES + decompProg = "copy"; else { _error->Error("Unsupported extension: %s", compExt.c_str()); return; diff --git a/debian/changelog b/debian/changelog index 0bb4fcdde..5c2c5f292 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +apt (0.7.17) unstable; urgency=low + + [ Eugene V. Lyubimkin ] + * apt-pkg/acquire-item.cc: + - Added fallback to uncompressed 'Packages' if neither 'bz2' nor 'gz' + available. (Closes: #409284) + + -- Eugene V. Lyubimkin Fri, 24 Oct 2008 23:45:17 +0300 + apt (0.7.16) unstable; urgency=low [ Luca Bruno ] -- cgit v1.2.3