summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2011-07-24 19:15:20 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2011-07-24 19:15:20 +0200
commitfe0278799cb7bd1c9039a053da178f54d120248c (patch)
tree7ef0f520352eb917be6793258786e507b8fa03ca
parent91bee655abd9091eee0687dc3689744217c6cdb4 (diff)
after this consider providing packages (if it is not a versioned dep)
-rw-r--r--cmdline/apt-get.cc53
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;