From 61690a7ed8403091425e42c6959918fb62824248 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Fri, 8 Jan 2010 22:32:32 +0100 Subject: * cmdline/apt-get.cc: - fix apt-get source pkg=version regression (closes: #561971) --- cmdline/apt-get.cc | 24 +++++++++++++++++------- debian/changelog | 6 +++++- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index f84c82d28..dede0137e 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1299,31 +1299,41 @@ pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs, { pkgRecords::Parser &Parse = Recs.Lookup(VF); Src = Parse.SourcePkg(); + // no SourcePkg name, so it is the "binary" name + if (Src.empty() == true) + Src = TmpSrc; + // no Version, so we try the Version of the SourcePkg - + // and after that the version of the binary package if (VerTag.empty() == true) VerTag = Parse.SourceVer(); + if (VerTag.empty() == true) + VerTag = Ver.VerStr(); break; } } + if (Src.empty() == false) + break; } if (Src.empty() == true) { - if (VerTag.empty() == false) - _error->Warning(_("Ignore unavailable version '%s' of package '%s'"), VerTag.c_str(), TmpSrc.c_str()); - else + // Sources files have no codename information + if (VerTag.empty() == true && DefRel.empty() == false) _error->Warning(_("Ignore unavailable target release '%s' of package '%s'"), DefRel.c_str(), TmpSrc.c_str()); - VerTag.clear(); DefRel.clear(); } } - if (VerTag.empty() == true && DefRel.empty() == true) + if (Src.empty() == true) { - // if we don't have a version or default release, use the CandidateVer to find the Source + // if we don't have found a fitting package yet so we will + // choose a good candidate and proceed with that. + // Maybe we will find a source later on with the right VerTag pkgCache::VerIterator Ver = Cache.GetCandidateVer(Pkg); if (Ver.end() == false) { pkgRecords::Parser &Parse = Recs.Lookup(Ver.FileList()); Src = Parse.SourcePkg(); - VerTag = Parse.SourceVer(); + if (VerTag.empty() == true) + VerTag = Parse.SourceVer(); } } } diff --git a/debian/changelog b/debian/changelog index 56d3f79c0..ef46df5b0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -32,7 +32,11 @@ apt (0.7.25.1) UNRELEASED; urgency=low - finally merge the rest of the patchset from Arnaud Ebalard with the CRL and Issuers options, thanks! (Closes: #485963) - -- Michael Vogt Fri, 08 Jan 2010 20:17:28 +0100 + [ Michael Vogt ] + * cmdline/apt-get.cc: + - fix apt-get source pkg=version regression (closes: #561971) + + -- Michael Vogt Fri, 08 Jan 2010 22:31:47 +0100 apt (0.7.25) unstable; urgency=low -- cgit v1.2.3