diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2011-07-24 19:15:20 +0200 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2011-07-24 19:15:20 +0200 |
commit | fe0278799cb7bd1c9039a053da178f54d120248c (patch) | |
tree | 7ef0f520352eb917be6793258786e507b8fa03ca /cmdline/apt-get.cc | |
parent | 91bee655abd9091eee0687dc3689744217c6cdb4 (diff) |
after this consider providing packages (if it is not a versioned dep)
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 9f9a9e589..b37ced5cb 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -2801,6 +2801,33 @@ bool DoBuildDep(CommandLine &CmdL) Last->BuildDepType((*D).Type), Src.c_str(), Pkg.FullName(true).c_str()); } + // Only consider virtual packages if there is no versioned dependency + if ((*D).Version.empty() == true) + { + /* + * If this is a virtual package, we need to check the list of + * packages that provide it and see if any of those are + * installed + */ + pkgCache::PrvIterator Prv = Pkg.ProvidesList(); + for (; Prv.end() != true; Prv++) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " Checking provider " << Prv.OwnerPkg().FullName() << endl; + + if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false) + break; + } + + if (Prv.end() == false) + { + if (_config->FindB("Debug::BuildDeps",false) == true) + cout << " Is provided by installed package " << Prv.OwnerPkg().FullName() << endl; + skipAlternatives = hasAlternatives; + continue; + } + } + if ((*D).Version[0] != '\0') { // Versioned dependency @@ -2827,32 +2854,6 @@ bool DoBuildDep(CommandLine &CmdL) } } } - else - { - /* - * If this is a virtual package, we need to check the list of - * packages that provide it and see if any of those are - * installed - */ - pkgCache::PrvIterator Prv = Pkg.ProvidesList(); - for (; Prv.end() != true; Prv++) - { - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Checking provider " << Prv.OwnerPkg().FullName() << endl; - - if ((*Cache)[Prv.OwnerPkg()].InstVerIter(*Cache).end() == false) - break; - } - - // Only consider virtual packages if there is no versioned dependency - if (Prv.end() == false) - { - if (_config->FindB("Debug::BuildDeps",false) == true) - cout << " Is provided by installed package " << Prv.OwnerPkg().FullName() << endl; - skipAlternatives = hasAlternatives; - continue; - } - } if (_config->FindB("Debug::BuildDeps",false) == true) cout << " Trying to install " << (*D).Package << endl; |