diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-01-26 12:00:40 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-01-26 12:00:40 +0100 |
commit | 972c339a1b05671e3f01b46cece3b323a2a94d61 (patch) | |
tree | 91a706a1c6c3b6b42b0cc469d413475eb4b2c2c4 /cmdline/apt-get.cc | |
parent | a29b2c0b9c4e7b1c36433c9c6dd5d24697f9c4b6 (diff) | |
parent | ff1e4b0626d8ce567492ccadbd30dfc32d4c15f1 (diff) |
* cmdline/apt-get.cc:
- fix apt-get source pkg=version regression (closes: #561971)
* apt-pkg/contrib/cdromutl.cc:
- fix UnmountCdrom() fails, give it a bit more time and try
the umount again
* methods/cdrom.cc:
- fixes in multi cdrom setup code
- add new "Acquire::cdrom::AutoDetect" variable that enables/disables
the dlopen of libudev for automatic cdrom detection
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index a5a48cf2f..fc15bbaa2 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(); } } } |